{
  "children": [
    {
      "id": "/page/0/Page/10",
      "block_type": "Page",
      "html": "<content-ref src='/page/0/SectionHeader/0'></content-ref><content-ref src='/page/0/SectionHeader/1'></content-ref><content-ref src='/page/0/Text/2'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/0/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2>Think Python</h2>",
          "polygon": [
            [
              398.935546875,
              265.095703125
            ],
            [
              525.6013793945312,
              265.095703125
            ],
            [
              525.6013793945312,
              289.6333312988281
            ],
            [
              398.935546875,
              289.6333312988281
            ]
          ],
          "bbox": [
            398.935546875,
            265.095703125,
            525.6013793945312,
            289.6333312988281
          ],
          "children": null,
          "section_hierarchy": {
            "2": "/page/0/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/0/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h2>How to Think Like a Computer Scientist</h2>",
          "polygon": [
            [
              267.3017578125,
              306.861328125
            ],
            [
              525.6033325195312,
              306.861328125
            ],
            [
              525.6033325195312,
              323.876953125
            ],
            [
              267.3017578125,
              323.876953125
            ]
          ],
          "bbox": [
            267.3017578125,
            306.861328125,
            525.6033325195312,
            323.876953125
          ],
          "children": null,
          "section_hierarchy": {
            "2": "/page/0/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/0/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Version 2.0.17</p>",
          "polygon": [
            [
              464.677734375,
              373.18359375
            ],
            [
              525.638671875,
              373.18359375
            ],
            [
              525.638671875,
              384.78515625
            ],
            [
              464.677734375,
              384.78515625
            ]
          ],
          "bbox": [
            464.677734375,
            373.18359375,
            525.638671875,
            384.78515625
          ],
          "children": null,
          "section_hierarchy": {
            "2": "/page/0/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "2": "/page/0/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/1/Page/0",
      "block_type": "Page",
      "html": "<content-ref src='/page/1/Text/0'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/1/Text/0",
          "block_type": "Text",
          "html": "<p></p>\n",
          "polygon": [
            [
              31.974609375,
              28.810546875
            ],
            [
              580.623046875,
              28.810546875
            ],
            [
              580.623046875,
              727.8046875
            ],
            [
              31.974609375,
              727.8046875
            ]
          ],
          "bbox": [
            31.974609375,
            28.810546875,
            580.623046875,
            727.8046875
          ],
          "children": null,
          "section_hierarchy": {
            "2": "/page/0/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "2": "/page/0/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/2/Page/22",
      "block_type": "Page",
      "html": "<content-ref src='/page/2/SectionHeader/0'></content-ref><content-ref src='/page/2/SectionHeader/1'></content-ref><content-ref src='/page/2/Text/2'></content-ref><content-ref src='/page/2/Text/3'></content-ref><content-ref src='/page/2/Text/4'></content-ref><content-ref src='/page/2/Text/5'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/2/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h1>Think Python</h1>",
          "polygon": [
            [
              398.63671875,
              264.90234375
            ],
            [
              525.6013793945312,
              264.90234375
            ],
            [
              525.6013793945312,
              289.6333312988281
            ],
            [
              398.63671875,
              289.6333312988281
            ]
          ],
          "bbox": [
            398.63671875,
            264.90234375,
            525.6013793945312,
            289.6333312988281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/2/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h2>How to Think Like a Computer Scientist</h2>",
          "polygon": [
            [
              267.451171875,
              306.66796875
            ],
            [
              525.6033325195312,
              306.66796875
            ],
            [
              525.6033325195312,
              323.7117614746094
            ],
            [
              267.451171875,
              323.7117614746094
            ]
          ],
          "bbox": [
            267.451171875,
            306.66796875,
            525.6033325195312,
            323.7117614746094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/2/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Version 2.0.17</p>",
          "polygon": [
            [
              463.78125,
              372.41015625
            ],
            [
              525.9375,
              372.41015625
            ],
            [
              525.9375,
              384.3984375
            ],
            [
              463.78125,
              384.3984375
            ]
          ],
          "bbox": [
            463.78125,
            372.41015625,
            525.9375,
            384.3984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/2/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Allen Downey</p>",
          "polygon": [
            [
              431.5078125,
              469.08984375
            ],
            [
              525.9375,
              469.08984375
            ],
            [
              525.9375,
              483.78515625
            ],
            [
              431.5078125,
              483.78515625
            ]
          ],
          "bbox": [
            431.5078125,
            469.08984375,
            525.9375,
            483.78515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/2/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Green Tea Press</p>",
          "polygon": [
            [
              424.037109375,
              519.75
            ],
            [
              525.6011962890625,
              519.75
            ],
            [
              525.6011962890625,
              535.21875
            ],
            [
              424.037109375,
              535.21875
            ]
          ],
          "bbox": [
            424.037109375,
            519.75,
            525.6011962890625,
            535.21875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/2/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Needham, Massachusetts</p>",
          "polygon": [
            [
              422.841796875,
              542.56640625
            ],
            [
              525.638671875,
              542.56640625
            ],
            [
              525.638671875,
              554.16796875
            ],
            [
              422.841796875,
              554.16796875
            ]
          ],
          "bbox": [
            422.841796875,
            542.56640625,
            525.638671875,
            554.16796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/2/SectionHeader/0",
        "2": "/page/2/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/3/Page/46",
      "block_type": "Page",
      "html": "<content-ref src='/page/3/Text/0'></content-ref><content-ref src='/page/3/Text/1'></content-ref><content-ref src='/page/3/Text/2'></content-ref><content-ref src='/page/3/Text/3'></content-ref><content-ref src='/page/3/Text/4'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/3/Text/0",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Copyright © 2012 Allen Downey.</p>",
          "polygon": [
            [
              85.9130859375,
              87.591796875
            ],
            [
              218.2939453125,
              87.591796875
            ],
            [
              218.2939453125,
              98.51611328125
            ],
            [
              85.9130859375,
              98.51611328125
            ]
          ],
          "bbox": [
            85.9130859375,
            87.591796875,
            218.2939453125,
            98.51611328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/3/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Green Tea Press 9 Washburn Ave Needham MA 02492</p>",
          "polygon": [
            [
              85.3154296875,
              116.015625
            ],
            [
              167.94140625,
              116.015625
            ],
            [
              167.94140625,
              150.422119140625
            ],
            [
              85.3154296875,
              150.422119140625
            ]
          ],
          "bbox": [
            85.3154296875,
            116.015625,
            167.94140625,
            150.422119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/3/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Permission is granted to copy, distribute, and/or modify this document under the terms of the Creative Commons Attribution-NonCommercial 3.0 Unported License, which is available at <a href=\"http://creativecommons.org/licenses/by-nc/3.0/\">http:</a> <a href=\"http://creativecommons.org/licenses/by-nc/3.0/\">//creativecommons.org/licenses/by-nc/3.0/</a>.</p>",
          "polygon": [
            [
              86.0625,
              154.880859375
            ],
            [
              484.1015625,
              154.880859375
            ],
            [
              484.1015625,
              187.9281005859375
            ],
            [
              86.0625,
              187.9281005859375
            ]
          ],
          "bbox": [
            86.0625,
            154.880859375,
            484.1015625,
            187.9281005859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/3/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The original form of this book is LATEX source code. Compiling this LATEX source has the effect of generating a device-independent representation of a textbook, which can be converted to other formats and printed.</p>",
          "polygon": [
            [
              85.46484375,
              196.5498046875
            ],
            [
              484.998046875,
              196.5498046875
            ],
            [
              484.998046875,
              229.405029296875
            ],
            [
              85.46484375,
              229.405029296875
            ]
          ],
          "bbox": [
            85.46484375,
            196.5498046875,
            484.998046875,
            229.405029296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/3/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The LATEX source for this book is available from <a href=\"http://www.thinkpython.com\">http://www.thinkpython.com</a></p>",
          "polygon": [
            [
              85.763671875,
              238.412109375
            ],
            [
              398.337890625,
              238.412109375
            ],
            [
              398.337890625,
              250.6290283203125
            ],
            [
              85.763671875,
              250.6290283203125
            ]
          ],
          "bbox": [
            85.763671875,
            238.412109375,
            398.337890625,
            250.6290283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/2/SectionHeader/0",
            "2": "/page/2/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/2/SectionHeader/0",
        "2": "/page/2/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/4/Page/110",
      "block_type": "Page",
      "html": "<content-ref src='/page/4/SectionHeader/0'></content-ref><content-ref src='/page/4/SectionHeader/1'></content-ref><content-ref src='/page/4/Text/2'></content-ref><content-ref src='/page/4/Text/3'></content-ref><content-ref src='/page/4/Text/4'></content-ref><content-ref src='/page/4/ListGroup/109'></content-ref><content-ref src='/page/4/Text/9'></content-ref><content-ref src='/page/4/Text/10'></content-ref><content-ref src='/page/4/Text/11'></content-ref><content-ref src='/page/4/Text/12'></content-ref><content-ref src='/page/4/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/4/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h1><span id=\"page-4-0\"></span><b>Preface</b></h1>",
          "polygon": [
            [
              128.49609375,
              165.322265625
            ],
            [
              213.662109375,
              165.322265625
            ],
            [
              213.662109375,
              190.65838623046875
            ],
            [
              128.49609375,
              190.65838623046875
            ]
          ],
          "bbox": [
            128.49609375,
            165.322265625,
            213.662109375,
            190.65838623046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/4/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h2><b>The strange history of this book</b></h2>",
          "polygon": [
            [
              129.392578125,
              237.638671875
            ],
            [
              338.8106384277344,
              237.638671875
            ],
            [
              338.8106384277344,
              253.55902099609375
            ],
            [
              129.392578125,
              253.55902099609375
            ]
          ],
          "bbox": [
            129.392578125,
            237.638671875,
            338.8106384277344,
            253.55902099609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In January 1999 I was preparing to teach an introductory programming class in Java. I had taught it three times and I was getting frustrated. The failure rate in the class was too high and, even for students who succeeded, the overall level of achievement was too low.</p>",
          "polygon": [
            [
              128.197265625,
              263.35546875
            ],
            [
              527.431640625,
              263.35546875
            ],
            [
              527.431640625,
              299.2049560546875
            ],
            [
              128.197265625,
              299.2049560546875
            ]
          ],
          "bbox": [
            128.197265625,
            263.35546875,
            527.431640625,
            299.2049560546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the problems I saw was the books. They were too big, with too much unnecessary detail about Java, and not enough high-level guidance about how to program. And they all suffered from the trap door effect: they would start out easy, proceed gradually, and then somewhere around Chapter 5 the bottom would fall out. The students would get too much new material, too fast, and I would spend the rest of the semester picking up the pieces.</p>",
          "polygon": [
            [
              128.3466796875,
              307.44140625
            ],
            [
              527.1328125,
              307.44140625
            ],
            [
              527.1328125,
              366.58990478515625
            ],
            [
              128.3466796875,
              366.58990478515625
            ]
          ],
          "bbox": [
            128.3466796875,
            307.44140625,
            527.1328125,
            366.58990478515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Two weeks before the first day of classes, I decided to write my own book. My goals were:</p>",
          "polygon": [
            [
              128.3466796875,
              374.73046875
            ],
            [
              526.53515625,
              374.73046875
            ],
            [
              526.53515625,
              386.1549072265625
            ],
            [
              128.3466796875,
              386.1549072265625
            ]
          ],
          "bbox": [
            128.3466796875,
            374.73046875,
            526.53515625,
            386.1549072265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/ListGroup/109",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/4/ListItem/5'></content-ref><content-ref src='/page/4/ListItem/6'></content-ref><content-ref src='/page/4/ListItem/7'></content-ref><content-ref src='/page/4/ListItem/8'></content-ref></ul></p>",
          "polygon": [
            [
              142.3916015625,
              397.546875
            ],
            [
              527.1328125,
              397.546875
            ],
            [
              527.1328125,
              503.9388427734375
            ],
            [
              142.3916015625,
              503.9388427734375
            ]
          ],
          "bbox": [
            142.3916015625,
            397.546875,
            527.1328125,
            503.9388427734375
          ],
          "children": [
            {
              "id": "/page/4/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Keep it short. It is better for students to read 10 pages than not read 50 pages.</li>",
              "polygon": [
                [
                  143.138671875,
                  397.546875
                ],
                [
                  494.560546875,
                  397.546875
                ],
                [
                  494.560546875,
                  409.14990234375
                ],
                [
                  143.138671875,
                  409.14990234375
                ]
              ],
              "bbox": [
                143.138671875,
                397.546875,
                494.560546875,
                409.14990234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/4/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Be careful with vocabulary. I tried to minimize the jargon and define each term at first use.</li>",
              "polygon": [
                [
                  143.4375,
                  418.04296875
                ],
                [
                  526.53515625,
                  418.04296875
                ],
                [
                  526.53515625,
                  440.74688720703125
                ],
                [
                  143.4375,
                  440.74688720703125
                ]
              ],
              "bbox": [
                143.4375,
                418.04296875,
                526.53515625,
                440.74688720703125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/4/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Build gradually. To avoid trap doors, I took the most difficult topics and split them into a series of small steps.</li>",
              "polygon": [
                [
                  142.3916015625,
                  449.3671875
                ],
                [
                  527.1328125,
                  449.3671875
                ],
                [
                  527.1328125,
                  472.3428649902344
                ],
                [
                  142.3916015625,
                  472.3428649902344
                ]
              ],
              "bbox": [
                142.3916015625,
                449.3671875,
                527.1328125,
                472.3428649902344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/4/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Focus on programming, not the programming language. I included the minimum useful subset of Java and left out the rest.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  481.078125
                ],
                [
                  527.1328125,
                  481.078125
                ],
                [
                  527.1328125,
                  503.9388427734375
                ],
                [
                  143.48800659179688,
                  503.9388427734375
                ]
              ],
              "bbox": [
                143.48800659179688,
                481.078125,
                527.1328125,
                503.9388427734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/4/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I needed a title, so on a whim I chose <i>How to Think Like a Computer Scientist</i>.</p>",
          "polygon": [
            [
              127.599609375,
              516.26953125
            ],
            [
              459.896484375,
              516.26953125
            ],
            [
              459.896484375,
              526.933837890625
            ],
            [
              127.599609375,
              526.933837890625
            ]
          ],
          "bbox": [
            127.599609375,
            516.26953125,
            459.896484375,
            526.933837890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">My first version was rough, but it worked. Students did the reading, and they understood enough that I could spend class time on the hard topics, the interesting topics and (most important) letting the students practice.</p>",
          "polygon": [
            [
              128.0478515625,
              535.9921875
            ],
            [
              527.1328125,
              535.9921875
            ],
            [
              527.1328125,
              570.4088439941406
            ],
            [
              128.0478515625,
              570.4088439941406
            ]
          ],
          "bbox": [
            128.0478515625,
            535.9921875,
            527.1328125,
            570.4088439941406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I released the book under the GNU Free Documentation License, which allows users to copy, modify, and distribute the book.</p>",
          "polygon": [
            [
              128.3466796875,
              579.69140625
            ],
            [
              527.1328125,
              579.69140625
            ],
            [
              527.1328125,
              601.9288482666016
            ],
            [
              128.3466796875,
              601.9288482666016
            ]
          ],
          "bbox": [
            128.3466796875,
            579.69140625,
            527.1328125,
            601.9288482666016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">What happened next is the cool part. Jeff Elkner, a high school teacher in Virginia, adopted my book and translated it into Python. He sent me a copy of his translation, and I had the unusual experience of learning Python by reading my own book. As Green Tea Press, I published the first Python version in 2001.</p>",
          "polygon": [
            [
              128.49609375,
              610.62890625
            ],
            [
              527.1328125,
              610.62890625
            ],
            [
              527.1328125,
              657.3598480224609
            ],
            [
              128.49609375,
              657.3598480224609
            ]
          ],
          "bbox": [
            128.49609375,
            610.62890625,
            527.1328125,
            657.3598480224609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/4/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In 2003 I started teaching at Olin College and I got to teach Python for the first time. The contrast with Java was striking. Students struggled less, learned more, worked on more interesting projects, and generally had a lot more fun.</p>",
          "polygon": [
            [
              128.3466796875,
              666.703125
            ],
            [
              527.1328125,
              666.703125
            ],
            [
              527.1328125,
              700.8348617553711
            ],
            [
              128.3466796875,
              700.8348617553711
            ]
          ],
          "bbox": [
            128.3466796875,
            666.703125,
            527.1328125,
            700.8348617553711
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/4/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/5/Page/124",
      "block_type": "Page",
      "html": "<content-ref src='/page/5/PageHeader/0'></content-ref><content-ref src='/page/5/PageHeader/17'></content-ref><content-ref src='/page/5/Text/1'></content-ref><content-ref src='/page/5/Text/2'></content-ref><content-ref src='/page/5/ListGroup/124'></content-ref><content-ref src='/page/5/Text/8'></content-ref><content-ref src='/page/5/Text/9'></content-ref><content-ref src='/page/5/Text/10'></content-ref><content-ref src='/page/5/SectionHeader/11'></content-ref><content-ref src='/page/5/Text/12'></content-ref><content-ref src='/page/5/Text/13'></content-ref><content-ref src='/page/5/Text/14'></content-ref><content-ref src='/page/5/Text/15'></content-ref><content-ref src='/page/5/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/5/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.134765625
            ],
            [
              482.607421875,
              60.134765625
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.134765625,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/5/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.98779296875,
              60.6181640625
            ],
            [
              97.04443359375,
              60.6181640625
            ],
            [
              97.04443359375,
              70.3828125
            ],
            [
              85.98779296875,
              70.3828125
            ]
          ],
          "bbox": [
            85.98779296875,
            60.6181640625,
            97.04443359375,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Over the last nine years I continued to develop the book, correcting errors, improving some of the examples and adding material, especially exercises.</p>",
          "polygon": [
            [
              85.763671875,
              87.978515625
            ],
            [
              484.1015625,
              87.978515625
            ],
            [
              484.1015625,
              110.98828125
            ],
            [
              85.763671875,
              110.98828125
            ]
          ],
          "bbox": [
            85.763671875,
            87.978515625,
            484.1015625,
            110.98828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The result is this book, now with the less grandiose title <i>Think Python</i>. Some of the changes are:</p>",
          "polygon": [
            [
              85.763671875,
              122.4931640625
            ],
            [
              483.50390625,
              122.4931640625
            ],
            [
              483.50390625,
              145.6962890625
            ],
            [
              85.763671875,
              145.6962890625
            ]
          ],
          "bbox": [
            85.763671875,
            122.4931640625,
            483.50390625,
            145.6962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/5/ListGroup/124",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/5/ListItem/3'></content-ref><content-ref src='/page/5/ListItem/4'></content-ref><content-ref src='/page/5/ListItem/5'></content-ref><content-ref src='/page/5/ListItem/6'></content-ref><content-ref src='/page/5/ListItem/7'></content-ref></ul></p>",
          "polygon": [
            [
              100.28800964355469,
              162.615234375
            ],
            [
              484.69921875,
              162.615234375
            ],
            [
              484.69921875,
              353.8519287109375
            ],
            [
              100.28800964355469,
              353.8519287109375
            ]
          ],
          "bbox": [
            100.28800964355469,
            162.615234375,
            484.69921875,
            353.8519287109375
          ],
          "children": [
            {
              "id": "/page/5/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> I added a section about debugging at the end of each chapter. These sections present general techniques for finding and avoiding bugs, and warnings about Python pitfalls.</li>",
              "polygon": [
                [
                  100.28802490234375,
                  162.615234375
                ],
                [
                  483.50390625,
                  162.615234375
                ],
                [
                  483.50390625,
                  197.61328125
                ],
                [
                  100.28802490234375,
                  197.61328125
                ]
              ],
              "bbox": [
                100.28802490234375,
                162.615234375,
                483.50390625,
                197.61328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/5/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> I added more exercises, ranging from short tests of understanding to a few substantial projects. And I wrote solutions for most of them.</li>",
              "polygon": [
                [
                  100.28802490234375,
                  209.794921875
                ],
                [
                  484.69921875,
                  209.794921875
                ],
                [
                  484.69921875,
                  233.58294677734375
                ],
                [
                  100.28802490234375,
                  233.58294677734375
                ]
              ],
              "bbox": [
                100.28802490234375,
                209.794921875,
                484.69921875,
                233.58294677734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/5/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> I added a series of case studies—longer examples with exercises, solutions, and discussion. Some are based on Swampy, a suite of Python programs I wrote for use in my classes. Swampy, code examples, and some solutions are available from <a href=\"http://thinkpython.com\">http://thinkpython.com</a>.</li>",
              "polygon": [
                [
                  100.28802490234375,
                  245.953125
                ],
                [
                  484.69921875,
                  245.953125
                ],
                [
                  484.69921875,
                  293.59796142578125
                ],
                [
                  100.28802490234375,
                  293.59796142578125
                ]
              ],
              "bbox": [
                100.28802490234375,
                245.953125,
                484.69921875,
                293.59796142578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/5/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> I expanded the discussion of program development plans and basic design patterns.</li>",
              "polygon": [
                [
                  100.28800964355469,
                  306.087890625
                ],
                [
                  482.607421875,
                  306.087890625
                ],
                [
                  482.607421875,
                  317.7479553222656
                ],
                [
                  100.28800964355469,
                  317.7479553222656
                ]
              ],
              "bbox": [
                100.28800964355469,
                306.087890625,
                482.607421875,
                317.7479553222656
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/5/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> I added appendices about debugging, analysis of algorithms, and UML diagrams with Lumpy.</li>",
              "polygon": [
                [
                  100.28800964355469,
                  330.2578125
                ],
                [
                  484.69921875,
                  330.2578125
                ],
                [
                  484.69921875,
                  353.8519287109375
                ],
                [
                  100.28800964355469,
                  353.8519287109375
                ]
              ],
              "bbox": [
                100.28800964355469,
                330.2578125,
                484.69921875,
                353.8519287109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/4/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/5/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I hope you enjoy working with this book, and that it helps you learn to program and think, at least a little bit, like a computer scientist.</p>",
          "polygon": [
            [
              85.46484375,
              370.86328125
            ],
            [
              484.400390625,
              370.86328125
            ],
            [
              484.400390625,
              394.29290771484375
            ],
            [
              85.46484375,
              394.29290771484375
            ]
          ],
          "bbox": [
            85.46484375,
            370.86328125,
            484.400390625,
            394.29290771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Allen B. Downey Needham MA</p>",
          "polygon": [
            [
              85.83837890625,
              406.0546875
            ],
            [
              162.861328125,
              406.0546875
            ],
            [
              162.861328125,
              428.6228942871094
            ],
            [
              85.83837890625,
              428.6228942871094
            ]
          ],
          "bbox": [
            85.83837890625,
            406.0546875,
            162.861328125,
            428.6228942871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Allen Downey is a Professor of Computer Science at the Franklin W. Olin College of Engineering.</p>",
          "polygon": [
            [
              86.0625,
              452.07421875
            ],
            [
              483.205078125,
              452.07421875
            ],
            [
              483.205078125,
              475.27734375
            ],
            [
              86.0625,
              475.27734375
            ]
          ],
          "bbox": [
            86.0625,
            452.07421875,
            483.205078125,
            475.27734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/4/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/5/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h2><b>Acknowledgments</b></h2>",
          "polygon": [
            [
              85.83837890625,
              510.08203125
            ],
            [
              211.5703125,
              510.08203125
            ],
            [
              211.5703125,
              526.0249328613281
            ],
            [
              85.83837890625,
              526.0249328613281
            ]
          ],
          "bbox": [
            85.83837890625,
            510.08203125,
            211.5703125,
            526.0249328613281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/5/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Many thanks to Jeff Elkner, who translated my Java book into Python, which got this project started and introduced me to what has turned out to be my favorite language.</p>",
          "polygon": [
            [
              85.6142578125,
              540.6328125
            ],
            [
              484.1015625,
              540.6328125
            ],
            [
              484.1015625,
              563.515869140625
            ],
            [
              85.6142578125,
              563.515869140625
            ]
          ],
          "bbox": [
            85.6142578125,
            540.6328125,
            484.1015625,
            563.515869140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/5/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Thanks also to Chris Meyers, who contributed several sections to <i>How to Think Like a Com</i><i>puter Scientist</i>.</p>",
          "polygon": [
            [
              85.9130859375,
              574.27734375
            ],
            [
              484.1015625,
              574.27734375
            ],
            [
              484.1015625,
              597.8458709716797
            ],
            [
              85.9130859375,
              597.8458709716797
            ]
          ],
          "bbox": [
            85.9130859375,
            574.27734375,
            484.1015625,
            597.8458709716797
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/5/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Thanks to the Free Software Foundation for developing the GNU Free Documentation License, which helped make my collaboration with Jeff and Chris possible, and Creative Commons for the license I am using now.</p>",
          "polygon": [
            [
              85.763671875,
              608.30859375
            ],
            [
              484.400390625,
              608.30859375
            ],
            [
              484.400390625,
              644.1308746337891
            ],
            [
              85.763671875,
              644.1308746337891
            ]
          ],
          "bbox": [
            85.763671875,
            608.30859375,
            484.400390625,
            644.1308746337891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/5/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Thanks to the editors at Lulu who worked on <i>How to Think Like a Computer Scientist</i>.</p>",
          "polygon": [
            [
              86.0625,
              655.48828125
            ],
            [
              454.81640625,
              655.48828125
            ],
            [
              454.81640625,
              666.5058822631836
            ],
            [
              86.0625,
              666.5058822631836
            ]
          ],
          "bbox": [
            86.0625,
            655.48828125,
            454.81640625,
            666.5058822631836
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/5/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/5/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Thanks to all the students who worked with earlier versions of this book and all the contributors (listed below) who sent in corrections and suggestions.</p>",
          "polygon": [
            [
              85.9130859375,
              677.91796875
            ],
            [
              484.1015625,
              677.91796875
            ],
            [
              484.1015625,
              700.8348846435547
            ],
            [
              85.9130859375,
              700.8348846435547
            ]
          ],
          "bbox": [
            85.9130859375,
            677.91796875,
            484.1015625,
            700.8348846435547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/5/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/5/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/6/Page/155",
      "block_type": "Page",
      "html": "<content-ref src='/page/6/PageHeader/24'></content-ref><content-ref src='/page/6/SectionHeader/0'></content-ref><content-ref src='/page/6/Text/1'></content-ref><content-ref src='/page/6/Text/2'></content-ref><content-ref src='/page/6/Text/3'></content-ref><content-ref src='/page/6/ListGroup/155'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/6/PageHeader/24",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              512.490234375,
              60.56982421875
            ],
            [
              526.833984375,
              60.56982421875
            ],
            [
              526.833984375,
              71.13372802734375
            ],
            [
              512.490234375,
              71.13372802734375
            ]
          ],
          "bbox": [
            512.490234375,
            60.56982421875,
            526.833984375,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/5/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/6/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><b>Contributor List</b></h2>",
          "polygon": [
            [
              128.12255859375,
              84.54638671875
            ],
            [
              236.07421875,
              84.54638671875
            ],
            [
              236.07421875,
              100.29998779296875
            ],
            [
              128.12255859375,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.12255859375,
            84.54638671875,
            236.07421875,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/6/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">More than 100 sharp-eyed and thoughtful readers have sent in suggestions and corrections over the past few years. Their contributions, and enthusiasm for this project, have been a huge help.</p>",
          "polygon": [
            [
              128.6455078125,
              110.21484375
            ],
            [
              527.73046875,
              110.21484375
            ],
            [
              527.73046875,
              145.885009765625
            ],
            [
              128.6455078125,
              145.885009765625
            ]
          ],
          "bbox": [
            128.6455078125,
            110.21484375,
            527.73046875,
            145.885009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/6/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you have a suggestion or correction, please send email to feedback@thinkpython.com. If I make a change based on your feedback, I will add you to the contributor list (unless you ask to be omitted).</p>",
          "polygon": [
            [
              128.6455078125,
              153.8173828125
            ],
            [
              527.73046875,
              153.8173828125
            ],
            [
              527.73046875,
              189.299072265625
            ],
            [
              128.6455078125,
              189.299072265625
            ]
          ],
          "bbox": [
            128.6455078125,
            153.8173828125,
            527.73046875,
            189.299072265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/6/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you include at least part of the sentence the error appears in, that makes it easy for me to search. Page and section numbers are fine, too, but not quite as easy to work with. Thanks!</p>",
          "polygon": [
            [
              128.3466796875,
              197.806640625
            ],
            [
              527.1328125,
              197.806640625
            ],
            [
              527.1328125,
              221.009765625
            ],
            [
              128.3466796875,
              221.009765625
            ]
          ],
          "bbox": [
            128.3466796875,
            197.806640625,
            527.1328125,
            221.009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/6/ListGroup/155",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/6/ListItem/4'></content-ref><content-ref src='/page/6/ListItem/5'></content-ref><content-ref src='/page/6/ListItem/6'></content-ref><content-ref src='/page/6/ListItem/7'></content-ref><content-ref src='/page/6/ListItem/8'></content-ref><content-ref src='/page/6/ListItem/9'></content-ref><content-ref src='/page/6/ListItem/10'></content-ref><content-ref src='/page/6/ListItem/11'></content-ref><content-ref src='/page/6/ListItem/12'></content-ref><content-ref src='/page/6/ListItem/13'></content-ref><content-ref src='/page/6/ListItem/14'></content-ref><content-ref src='/page/6/ListItem/15'></content-ref><content-ref src='/page/6/ListItem/16'></content-ref><content-ref src='/page/6/ListItem/17'></content-ref><content-ref src='/page/6/ListItem/18'></content-ref><content-ref src='/page/6/ListItem/19'></content-ref><content-ref src='/page/6/ListItem/20'></content-ref><content-ref src='/page/6/ListItem/21'></content-ref><content-ref src='/page/6/ListItem/22'></content-ref><content-ref src='/page/6/ListItem/23'></content-ref></ul></p>",
          "polygon": [
            [
              142.76513671875,
              231.064453125
            ],
            [
              527.431640625,
              231.064453125
            ],
            [
              527.431640625,
              700.5533828735352
            ],
            [
              142.76513671875,
              700.5533828735352
            ]
          ],
          "bbox": [
            142.76513671875,
            231.064453125,
            527.431640625,
            700.5533828735352
          ],
          "children": [
            {
              "id": "/page/6/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Lloyd Hugh Allen sent in a correction to Section 8.4.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  231.064453125
                ],
                [
                  361.0699157714844,
                  231.064453125
                ],
                [
                  361.0699157714844,
                  242.5283203125
                ],
                [
                  144.09201049804688,
                  242.5283203125
                ]
              ],
              "bbox": [
                144.09201049804688,
                231.064453125,
                361.0699157714844,
                242.5283203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Yvon Boulianne sent in a correction of a semantic error in Chapter 5.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  249.626953125
                ],
                [
                  424.2471008300781,
                  249.626953125
                ],
                [
                  424.2471008300781,
                  261.34033203125
                ],
                [
                  144.09201049804688,
                  261.34033203125
                ]
              ],
              "bbox": [
                144.09201049804688,
                249.626953125,
                424.2471008300781,
                261.34033203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Fred Bremmer submitted a correction in Section 2.1.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  268.76953125
                ],
                [
                  360.38671875,
                  268.76953125
                ],
                [
                  360.38671875,
                  280.15130615234375
                ],
                [
                  144.09201049804688,
                  280.15130615234375
                ]
              ],
              "bbox": [
                144.09201049804688,
                268.76953125,
                360.38671875,
                280.15130615234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jonah Cohen wrote the Perl scripts to convert the LaTeX source for this book into beautiful HTML.</li>",
              "polygon": [
                [
                  143.8857421875,
                  287.525390625
                ],
                [
                  527.1328125,
                  287.525390625
                ],
                [
                  527.1328125,
                  310.1413269042969
                ],
                [
                  143.8857421875,
                  310.1413269042969
                ]
              ],
              "bbox": [
                143.8857421875,
                287.525390625,
                527.1328125,
                310.1413269042969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Michael Conlon sent in a grammar correction in Chapter 2 and an improvement in style in Chapter 1, and he initiated discussion on the technical aspects of interpreters.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  317.8828125
                ],
                [
                  526.833984375,
                  317.8828125
                ],
                [
                  526.833984375,
                  340.13134765625
                ],
                [
                  144.09201049804688,
                  340.13134765625
                ]
              ],
              "bbox": [
                144.09201049804688,
                317.8828125,
                526.833984375,
                340.13134765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Benoit Girard sent in a correction to a humorous mistake in Section 5.6.</li>",
              "polygon": [
                [
                  143.96044921875,
                  347.66015625
                ],
                [
                  437.185546875,
                  347.66015625
                ],
                [
                  437.185546875,
                  358.943359375
                ],
                [
                  143.96044921875,
                  358.943359375
                ]
              ],
              "bbox": [
                143.96044921875,
                347.66015625,
                437.185546875,
                358.943359375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Courtney Gleason and Katherine Smith wrote horsebet.py, which was used as a case study in an earlier version of the book. Their program can now be found on the website.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  366.416015625
                ],
                [
                  527.1328125,
                  366.416015625
                ],
                [
                  527.1328125,
                  388.933349609375
                ],
                [
                  144.09201049804688,
                  388.933349609375
                ]
              ],
              "bbox": [
                144.09201049804688,
                366.416015625,
                527.1328125,
                388.933349609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Lee Harr submitted more corrections than we have room to list here, and indeed he should be listed as one of the principal editors of the text.</li>",
              "polygon": [
                [
                  144.09205627441406,
                  396.0
                ],
                [
                  527.1328125,
                  396.0
                ],
                [
                  527.1328125,
                  418.92236328125
                ],
                [
                  144.09205627441406,
                  418.92236328125
                ]
              ],
              "bbox": [
                144.09205627441406,
                396.0,
                527.1328125,
                418.92236328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> James Kaylin is a student using the text. He has submitted numerous corrections.</li>",
              "polygon": [
                [
                  143.138671875,
                  426.1640625
                ],
                [
                  477.228515625,
                  426.1640625
                ],
                [
                  477.228515625,
                  437.734375
                ],
                [
                  143.138671875,
                  437.734375
                ]
              ],
              "bbox": [
                143.138671875,
                426.1640625,
                477.228515625,
                437.734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> David Kershaw fixed the broken catTwice function in Section 3.10.</li>",
              "polygon": [
                [
                  143.5869140625,
                  445.5
                ],
                [
                  420.75,
                  445.5
                ],
                [
                  420.75,
                  456.54638671875
                ],
                [
                  143.5869140625,
                  456.54638671875
                ]
              ],
              "bbox": [
                143.5869140625,
                445.5,
                420.75,
                456.54638671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Eddie Lam has sent in numerous corrections to Chapters 1, 2, and 3. He also fixed the Makefile so that it creates an index the first time it is run and helped us set up a versioning scheme.</li>",
              "polygon": [
                [
                  144.09205627441406,
                  464.0625
                ],
                [
                  526.833984375,
                  464.0625
                ],
                [
                  526.833984375,
                  486.536376953125
                ],
                [
                  144.09205627441406,
                  486.536376953125
                ]
              ],
              "bbox": [
                144.09205627441406,
                464.0625,
                526.833984375,
                486.536376953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Man-Yong Lee sent in a correction to the example code in Section 2.4.</li>",
              "polygon": [
                [
                  143.51220703125,
                  494.2265625
                ],
                [
                  428.220703125,
                  494.2265625
                ],
                [
                  428.220703125,
                  505.3473815917969
                ],
                [
                  143.51220703125,
                  505.3473815917969
                ]
              ],
              "bbox": [
                143.51220703125,
                494.2265625,
                428.220703125,
                505.3473815917969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> David Mayo pointed out that the word \"unconsciously\" in Chapter 1 needed to be changed to \"subconsciously\".</li>",
              "polygon": [
                [
                  144.09205627441406,
                  512.7890625
                ],
                [
                  527.1328125,
                  512.7890625
                ],
                [
                  527.1328125,
                  535.33740234375
                ],
                [
                  144.09205627441406,
                  535.33740234375
                ]
              ],
              "bbox": [
                144.09205627441406,
                512.7890625,
                527.1328125,
                535.33740234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Chris McAloon sent in several corrections to Sections 3.9 and 3.10.</li>",
              "polygon": [
                [
                  143.5869140625,
                  542.56640625
                ],
                [
                  417.76171875,
                  542.56640625
                ],
                [
                  417.76171875,
                  554.1493988037109
                ],
                [
                  143.5869140625,
                  554.1493988037109
                ]
              ],
              "bbox": [
                143.5869140625,
                542.56640625,
                417.76171875,
                554.1493988037109
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Matthew J. Moelter has been a long-time contributor who sent in numerous corrections and suggestions to the book.</li>",
              "polygon": [
                [
                  143.4375,
                  562.2890625
                ],
                [
                  526.53515625,
                  562.2890625
                ],
                [
                  526.53515625,
                  584.139404296875
                ],
                [
                  143.4375,
                  584.139404296875
                ]
              ],
              "bbox": [
                143.4375,
                562.2890625,
                526.53515625,
                584.139404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Simon Dicon Montford reported a missing function definition and several typos in Chapter 3. He also found errors in the increment function in Chapter 13.</li>",
              "polygon": [
                [
                  144.09205627441406,
                  592.06640625
                ],
                [
                  527.1328125,
                  592.06640625
                ],
                [
                  527.1328125,
                  614.1284027099609
                ],
                [
                  144.09205627441406,
                  614.1284027099609
                ]
              ],
              "bbox": [
                144.09205627441406,
                592.06640625,
                527.1328125,
                614.1284027099609
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> John Ouzts corrected the definition of \"return value\" in Chapter 3.</li>",
              "polygon": [
                [
                  142.76513671875,
                  622.23046875
                ],
                [
                  416.56640625,
                  622.23046875
                ],
                [
                  416.56640625,
                  633.05859375
                ],
                [
                  142.76513671875,
                  633.05859375
                ]
              ],
              "bbox": [
                142.76513671875,
                622.23046875,
                416.56640625,
                633.05859375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Kevin Parks sent in valuable comments and suggestions as to how to improve the distribution of the book.</li>",
              "polygon": [
                [
                  144.09207153320312,
                  641.1796875
                ],
                [
                  527.431640625,
                  641.1796875
                ],
                [
                  527.431640625,
                  663.609375
                ],
                [
                  144.09207153320312,
                  663.609375
                ]
              ],
              "bbox": [
                144.09207153320312,
                641.1796875,
                527.431640625,
                663.609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/22",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> David Pool sent in a typo in the glossary of Chapter 1, as well as kind words of encouragement.</li>",
              "polygon": [
                [
                  144.09207153320312,
                  671.34375
                ],
                [
                  527.1328125,
                  671.34375
                ],
                [
                  527.1328125,
                  681.7423858642578
                ],
                [
                  144.09207153320312,
                  681.7423858642578
                ]
              ],
              "bbox": [
                144.09207153320312,
                671.34375,
                527.1328125,
                681.7423858642578
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/6/ListItem/23",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Michael Schmitt sent in a correction to the chapter on files and exceptions.</li>",
              "polygon": [
                [
                  143.736328125,
                  689.90625
                ],
                [
                  447.943359375,
                  689.90625
                ],
                [
                  447.943359375,
                  700.5533828735352
                ],
                [
                  143.736328125,
                  700.5533828735352
                ]
              ],
              "bbox": [
                143.736328125,
                689.90625,
                447.943359375,
                700.5533828735352
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/6/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/7/Page/154",
      "block_type": "Page",
      "html": "<content-ref src='/page/7/PageHeader/0'></content-ref><content-ref src='/page/7/PageHeader/26'></content-ref><content-ref src='/page/7/ListGroup/154'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/7/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.607421875,
              60.71484375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/7/PageHeader/26",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.39013671875,
              61.294921875
            ],
            [
              102.42333984375,
              61.294921875
            ],
            [
              102.42333984375,
              70.189453125
            ],
            [
              85.39013671875,
              70.189453125
            ]
          ],
          "bbox": [
            85.39013671875,
            61.294921875,
            102.42333984375,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/7/ListGroup/154",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/7/ListItem/1'></content-ref><content-ref src='/page/7/ListItem/2'></content-ref><content-ref src='/page/7/ListItem/3'></content-ref><content-ref src='/page/7/ListItem/4'></content-ref><content-ref src='/page/7/ListItem/5'></content-ref><content-ref src='/page/7/ListItem/6'></content-ref><content-ref src='/page/7/ListItem/7'></content-ref><content-ref src='/page/7/ListItem/8'></content-ref><content-ref src='/page/7/ListItem/9'></content-ref><content-ref src='/page/7/ListItem/10'></content-ref><content-ref src='/page/7/ListItem/11'></content-ref><content-ref src='/page/7/ListItem/12'></content-ref><content-ref src='/page/7/ListItem/13'></content-ref><content-ref src='/page/7/ListItem/14'></content-ref><content-ref src='/page/7/ListItem/15'></content-ref><content-ref src='/page/7/ListItem/16'></content-ref><content-ref src='/page/7/ListItem/17'></content-ref><content-ref src='/page/7/ListItem/18'></content-ref><content-ref src='/page/7/ListItem/19'></content-ref><content-ref src='/page/7/ListItem/20'></content-ref><content-ref src='/page/7/ListItem/21'></content-ref><content-ref src='/page/7/ListItem/22'></content-ref><content-ref src='/page/7/ListItem/23'></content-ref><content-ref src='/page/7/ListItem/24'></content-ref><content-ref src='/page/7/ListItem/25'></content-ref></ul></p>",
          "polygon": [
            [
              100.40625,
              88.99365234375
            ],
            [
              483.50390625,
              88.99365234375
            ],
            [
              483.50390625,
              700.5532379150391
            ],
            [
              100.40625,
              700.5532379150391
            ]
          ],
          "bbox": [
            100.40625,
            88.99365234375,
            483.50390625,
            700.5532379150391
          ],
          "children": [
            {
              "id": "/page/7/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Robin Shaw pointed out an error in Section 13.1, where the printTime function was used in an example without being defined.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  88.99365234375
                ],
                [
                  483.50390625,
                  88.99365234375
                ],
                [
                  483.50390625,
                  109.694091796875
                ],
                [
                  100.89199829101562,
                  109.694091796875
                ]
              ],
              "bbox": [
                100.89199829101562,
                88.99365234375,
                483.50390625,
                109.694091796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Paul Sleigh found an error in Chapter 7 and a bug in Jonah Cohen's Perl script that generates HTML from LaTeX.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  118.6259765625
                ],
                [
                  482.607421875,
                  118.6259765625
                ],
                [
                  482.607421875,
                  139.902099609375
                ],
                [
                  100.89199829101562,
                  139.902099609375
                ]
              ],
              "bbox": [
                100.89199829101562,
                118.6259765625,
                482.607421875,
                139.902099609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Craig T. Snydal is testing the text in a course at Drew University. He has contributed several valuable suggestions and corrections.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  149.2734375
                ],
                [
                  482.90625,
                  149.2734375
                ],
                [
                  482.90625,
                  170.110107421875
                ],
                [
                  100.89199829101562,
                  170.110107421875
                ]
              ],
              "bbox": [
                100.89199829101562,
                149.2734375,
                482.90625,
                170.110107421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Ian Thomas and his students are using the text in a programming course. They are the first ones to test the chapters in the latter half of the book, and they have made numerous corrections and suggestions.</li>",
              "polygon": [
                [
                  100.8544921875,
                  179.3408203125
                ],
                [
                  482.4032897949219,
                  179.3408203125
                ],
                [
                  482.4032897949219,
                  211.49713134765625
                ],
                [
                  100.8544921875,
                  211.49713134765625
                ]
              ],
              "bbox": [
                100.8544921875,
                179.3408203125,
                482.4032897949219,
                211.49713134765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Keith Verheyden sent in a correction in Chapter 3.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  220.81640625
                ],
                [
                  308.4641418457031,
                  220.81640625
                ],
                [
                  308.4641418457031,
                  230.52716064453125
                ],
                [
                  100.89199829101562,
                  230.52716064453125
                ]
              ],
              "bbox": [
                100.89199829101562,
                220.81640625,
                308.4641418457031,
                230.52716064453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Peter Winstanley let us know about a longstanding error in our Latin in Chapter 3.</li>",
              "polygon": [
                [
                  100.8544921875,
                  239.37890625
                ],
                [
                  438.08203125,
                  239.37890625
                ],
                [
                  438.08203125,
                  249.55718994140625
                ],
                [
                  100.8544921875,
                  249.55718994140625
                ]
              ],
              "bbox": [
                100.8544921875,
                239.37890625,
                438.08203125,
                249.55718994140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Chris Wrobel made corrections to the code in the chapter on file I/O and exceptions.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  259.1015625
                ],
                [
                  445.8515625,
                  259.1015625
                ],
                [
                  445.8515625,
                  268.58721923828125
                ],
                [
                  100.89199829101562,
                  268.58721923828125
                ]
              ],
              "bbox": [
                100.89199829101562,
                259.1015625,
                445.8515625,
                268.58721923828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Moshe Zadka has made invaluable contributions to this project. In addition to writing the first draft of the chapter on Dictionaries, he provided continual guidance in the early stages of the book.</li>",
              "polygon": [
                [
                  100.8544921875,
                  278.05078125
                ],
                [
                  482.90625,
                  278.05078125
                ],
                [
                  482.90625,
                  309.9732360839844
                ],
                [
                  100.8544921875,
                  309.9732360839844
                ]
              ],
              "bbox": [
                100.8544921875,
                278.05078125,
                482.90625,
                309.9732360839844
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Christoph Zwerschke sent several corrections and pedagogic suggestions, and explained the difference between <i>gleich</i> and <i>selbe</i>.</li>",
              "polygon": [
                [
                  100.705078125,
                  319.236328125
                ],
                [
                  483.205078125,
                  319.236328125
                ],
                [
                  483.205078125,
                  340.1822204589844
                ],
                [
                  100.705078125,
                  340.1822204589844
                ]
              ],
              "bbox": [
                100.705078125,
                319.236328125,
                483.205078125,
                340.1822204589844
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> James Mayer sent us a whole slew of spelling and typographical errors, including two in the contributor list.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  349.98046875
                ],
                [
                  483.50390625,
                  349.98046875
                ],
                [
                  483.50390625,
                  370.3902282714844
                ],
                [
                  100.89199829101562,
                  370.3902282714844
                ]
              ],
              "bbox": [
                100.89199829101562,
                349.98046875,
                483.50390625,
                370.3902282714844
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Hayden McAfee caught a potentially confusing inconsistency between two examples.</li>",
              "polygon": [
                [
                  100.8544921875,
                  379.951171875
                ],
                [
                  449.89105224609375,
                  379.951171875
                ],
                [
                  449.89105224609375,
                  389.42022705078125
                ],
                [
                  100.8544921875,
                  389.42022705078125
                ]
              ],
              "bbox": [
                100.8544921875,
                379.951171875,
                449.89105224609375,
                389.42022705078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Angel Arnal is part of an international team of translators working on the Spanish version of the text. He has also found several errors in the English version.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  398.70703125
                ],
                [
                  483.50390625,
                  398.70703125
                ],
                [
                  483.50390625,
                  419.62823486328125
                ],
                [
                  100.89199829101562,
                  419.62823486328125
                ]
              ],
              "bbox": [
                100.89199829101562,
                398.70703125,
                483.50390625,
                419.62823486328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Tauhidul Hoque and Lex Berezhny created the illustrations in Chapter 1 and improved many of the other illustrations.</li>",
              "polygon": [
                [
                  100.8544921875,
                  428.484375
                ],
                [
                  482.90625,
                  428.484375
                ],
                [
                  482.90625,
                  449.83624267578125
                ],
                [
                  100.8544921875,
                  449.83624267578125
                ]
              ],
              "bbox": [
                100.8544921875,
                428.484375,
                482.90625,
                449.83624267578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Dr. Michele Alzetta caught an error in Chapter 8 and sent some interesting pedagogic comments and suggestions about Fibonacci and Old Maid.</li>",
              "polygon": [
                [
                  100.8544921875,
                  459.421875
                ],
                [
                  482.4033203125,
                  459.421875
                ],
                [
                  482.4033203125,
                  480.3046875
                ],
                [
                  100.8544921875,
                  480.3046875
                ]
              ],
              "bbox": [
                100.8544921875,
                459.421875,
                482.4033203125,
                480.3046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Andy Mitchell caught a typo in Chapter 1 and a broken example in Chapter 2.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  489.5859375
                ],
                [
                  420.75,
                  489.5859375
                ],
                [
                  420.75,
                  499.0742492675781
                ],
                [
                  100.89199829101562,
                  499.0742492675781
                ]
              ],
              "bbox": [
                100.89199829101562,
                489.5859375,
                420.75,
                499.0742492675781
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Kalin Harvey suggested a clarification in Chapter 7 and caught some typos.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  508.53515625
                ],
                [
                  411.78515625,
                  508.53515625
                ],
                [
                  411.78515625,
                  518.1052551269531
                ],
                [
                  100.89199829101562,
                  518.1052551269531
                ]
              ],
              "bbox": [
                100.89199829101562,
                508.53515625,
                411.78515625,
                518.1052551269531
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Christopher P. Smith caught several typos and helped us update the book for Python 2.2.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  527.87109375
                ],
                [
                  462.7848205566406,
                  527.87109375
                ],
                [
                  462.7848205566406,
                  537.15234375
                ],
                [
                  100.89199829101562,
                  537.15234375
                ]
              ],
              "bbox": [
                100.89199829101562,
                527.87109375,
                462.7848205566406,
                537.15234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> David Hutchins caught a typo in the Foreword.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  546.43359375
                ],
                [
                  299.42578125,
                  546.43359375
                ],
                [
                  299.42578125,
                  556.1652526855469
                ],
                [
                  100.89199829101562,
                  556.1652526855469
                ]
              ],
              "bbox": [
                100.89199829101562,
                546.43359375,
                299.42578125,
                556.1652526855469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Gregor Lingl is teaching Python at a high school in Vienna, Austria. He is working on a German translation of the book, and he caught a couple of bad errors in Chapter 5.</li>",
              "polygon": [
                [
                  100.40625,
                  565.76953125
                ],
                [
                  482.607421875,
                  565.76953125
                ],
                [
                  482.607421875,
                  586.3732452392578
                ],
                [
                  100.40625,
                  586.3732452392578
                ]
              ],
              "bbox": [
                100.40625,
                565.76953125,
                482.607421875,
                586.3732452392578
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Julie Peters caught a typo in the Preface.</li>",
              "polygon": [
                [
                  100.77978515625,
                  595.93359375
                ],
                [
                  270.1866149902344,
                  595.93359375
                ],
                [
                  270.1866149902344,
                  605.4032440185547
                ],
                [
                  100.77978515625,
                  605.4032440185547
                ]
              ],
              "bbox": [
                100.77978515625,
                595.93359375,
                270.1866149902344,
                605.4032440185547
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Florin Oprina sent in an improvement in makeTime, a correction in printTime, and a nice typo.</li>",
              "polygon": [
                [
                  100.89199829101562,
                  615.2393646240234
                ],
                [
                  482.607421875,
                  615.2393646240234
                ],
                [
                  482.607421875,
                  624.4332427978516
                ],
                [
                  100.89199829101562,
                  624.4332427978516
                ]
              ],
              "bbox": [
                100.89199829101562,
                615.2393646240234,
                482.607421875,
                624.4332427978516
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/22",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> D. J. Webre suggested a clarification in Chapter 3.</li>",
              "polygon": [
                [
                  100.77978515625,
                  633.83203125
                ],
                [
                  306.6888122558594,
                  633.83203125
                ],
                [
                  306.6888122558594,
                  643.4632415771484
                ],
                [
                  100.77978515625,
                  643.4632415771484
                ]
              ],
              "bbox": [
                100.77978515625,
                633.83203125,
                306.6888122558594,
                643.4632415771484
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/23",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Ken found a fistful of errors in Chapters 8, 9 and 11.</li>",
              "polygon": [
                [
                  100.705078125,
                  652.39453125
                ],
                [
                  317.35546875,
                  652.39453125
                ],
                [
                  317.35546875,
                  662.4932403564453
                ],
                [
                  100.705078125,
                  662.4932403564453
                ]
              ],
              "bbox": [
                100.705078125,
                652.39453125,
                317.35546875,
                662.4932403564453
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/24",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Ivo Wever caught a typo in Chapter 5 and suggested a clarification in Chapter 3.</li>",
              "polygon": [
                [
                  100.8544921875,
                  672.1171875
                ],
                [
                  428.51953125,
                  672.1171875
                ],
                [
                  428.51953125,
                  681.5232391357422
                ],
                [
                  100.8544921875,
                  681.5232391357422
                ]
              ],
              "bbox": [
                100.8544921875,
                672.1171875,
                428.51953125,
                681.5232391357422
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/7/ListItem/25",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Curtis Yanko suggested a clarification in Chapter 2.</li>",
              "polygon": [
                [
                  100.77978515625,
                  691.06640625
                ],
                [
                  315.263671875,
                  691.06640625
                ],
                [
                  315.263671875,
                  700.5532379150391
                ],
                [
                  100.77978515625,
                  700.5532379150391
                ]
              ],
              "bbox": [
                100.77978515625,
                691.06640625,
                315.263671875,
                700.5532379150391
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/6/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/8/Page/140",
      "block_type": "Page",
      "html": "<content-ref src='/page/8/PageHeader/28'></content-ref><content-ref src='/page/8/ListGroup/140'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/8/PageHeader/28",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              61.171142578125
            ],
            [
              525.599853515625,
              61.171142578125
            ],
            [
              525.599853515625,
              71.13372802734375
            ],
            [
              514.880859375,
              71.13372802734375
            ]
          ],
          "bbox": [
            514.880859375,
            61.171142578125,
            525.599853515625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/8/ListGroup/140",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/8/ListItem/0'></content-ref><content-ref src='/page/8/ListItem/1'></content-ref><content-ref src='/page/8/ListItem/2'></content-ref><content-ref src='/page/8/ListItem/3'></content-ref><content-ref src='/page/8/ListItem/4'></content-ref><content-ref src='/page/8/ListItem/5'></content-ref><content-ref src='/page/8/ListItem/6'></content-ref><content-ref src='/page/8/ListItem/7'></content-ref><content-ref src='/page/8/ListItem/8'></content-ref><content-ref src='/page/8/ListItem/9'></content-ref><content-ref src='/page/8/ListItem/10'></content-ref><content-ref src='/page/8/ListItem/11'></content-ref><content-ref src='/page/8/ListItem/12'></content-ref><content-ref src='/page/8/ListItem/13'></content-ref><content-ref src='/page/8/ListItem/14'></content-ref><content-ref src='/page/8/ListItem/15'></content-ref><content-ref src='/page/8/ListItem/16'></content-ref><content-ref src='/page/8/ListItem/17'></content-ref><content-ref src='/page/8/ListItem/18'></content-ref><content-ref src='/page/8/ListItem/19'></content-ref><content-ref src='/page/8/ListItem/20'></content-ref><content-ref src='/page/8/ListItem/21'></content-ref><content-ref src='/page/8/ListItem/22'></content-ref><content-ref src='/page/8/ListItem/23'></content-ref><content-ref src='/page/8/ListItem/24'></content-ref><content-ref src='/page/8/ListItem/25'></content-ref><content-ref src='/page/8/ListItem/26'></content-ref><content-ref src='/page/8/ListItem/27'></content-ref></ul></p>",
          "polygon": [
            [
              142.46630859375,
              88.6552734375
            ],
            [
              526.53515625,
              88.6552734375
            ],
            [
              526.53515625,
              700.5530853271484
            ],
            [
              142.46630859375,
              700.5530853271484
            ]
          ],
          "bbox": [
            142.46630859375,
            88.6552734375,
            526.53515625,
            700.5530853271484
          ],
          "children": [
            {
              "id": "/page/8/ListItem/0",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Ben Logan sent in a number of typos and problems with translating the book into HTML.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  88.6552734375
                ],
                [
                  508.3699035644531,
                  88.6552734375
                ],
                [
                  508.3699035644531,
                  98.51611328125
                ],
                [
                  144.0919952392578,
                  98.51611328125
                ]
              ],
              "bbox": [
                144.0919952392578,
                88.6552734375,
                508.3699035644531,
                98.51611328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jason Armstrong saw the missing word in Chapter 2.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  108.3779296875
                ],
                [
                  364.5937194824219,
                  108.3779296875
                ],
                [
                  364.5937194824219,
                  118.33013916015625
                ],
                [
                  144.0919952392578,
                  118.33013916015625
                ]
              ],
              "bbox": [
                144.0919952392578,
                108.3779296875,
                364.5937194824219,
                118.33013916015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Louis Cordier noticed a spot in Chapter 16 where the code didn't match the text.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  128.8740234375
                ],
                [
                  472.4504089355469,
                  128.8740234375
                ],
                [
                  472.4504089355469,
                  138.14312744140625
                ],
                [
                  144.0919952392578,
                  138.14312744140625
                ]
              ],
              "bbox": [
                144.0919952392578,
                128.8740234375,
                472.4504089355469,
                138.14312744140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Brian Cain suggested several clarifications in Chapters 2 and 3.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  148.4033203125
                ],
                [
                  403.5257873535156,
                  148.4033203125
                ],
                [
                  403.5257873535156,
                  157.9571533203125
                ],
                [
                  144.0919952392578,
                  157.9571533203125
                ]
              ],
              "bbox": [
                144.0919952392578,
                148.4033203125,
                403.5257873535156,
                157.9571533203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Rob Black sent in a passel of corrections, including some changes for Python 2.2.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  168.416015625
                ],
                [
                  472.1366882324219,
                  168.416015625
                ],
                [
                  472.1366882324219,
                  177.77117919921875
                ],
                [
                  144.0919952392578,
                  177.77117919921875
                ]
              ],
              "bbox": [
                144.0919952392578,
                168.416015625,
                472.1366882324219,
                177.77117919921875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jean-Philippe Rey at Ecole Centrale Paris sent a number of patches, including some updates for Python 2.2 and other thoughtful improvements.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  188.0419921875
                ],
                [
                  526.53515625,
                  188.0419921875
                ],
                [
                  526.53515625,
                  208.76214599609375
                ],
                [
                  144.0919952392578,
                  208.76214599609375
                ]
              ],
              "bbox": [
                144.0919952392578,
                188.0419921875,
                526.53515625,
                208.76214599609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jason Mader at George Washington University made a number of useful suggestions and corrections.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  219.26953125
                ],
                [
                  525.9375,
                  219.26953125
                ],
                [
                  525.9375,
                  239.754150390625
                ],
                [
                  144.0919952392578,
                  239.754150390625
                ]
              ],
              "bbox": [
                144.0919952392578,
                219.26953125,
                525.9375,
                239.754150390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jan Gundtofte-Bruun reminded us that \"a error\" is an error.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  250.20703125
                ],
                [
                  392.361328125,
                  250.20703125
                ],
                [
                  392.361328125,
                  259.56817626953125
                ],
                [
                  144.0919952392578,
                  259.56817626953125
                ]
              ],
              "bbox": [
                144.0919952392578,
                250.20703125,
                392.361328125,
                259.56817626953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Abel David and Alexis Dinno reminded us that the plural of \"matrix\" is \"matrices\", not \"matrixes\". This error was in the book for years, but two readers with the same initials reported it on the same day. Weird.</li>",
              "polygon": [
                [
                  143.5869140625,
                  269.9296875
                ],
                [
                  525.9375,
                  269.9296875
                ],
                [
                  525.9375,
                  301.7381591796875
                ],
                [
                  143.5869140625,
                  301.7381591796875
                ]
              ],
              "bbox": [
                143.5869140625,
                269.9296875,
                525.9375,
                301.7381591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Charles Thayer encouraged us to get rid of the semi-colons we had put at the ends of some statements and to clean up our use of \"argument\" and \"parameter\".</li>",
              "polygon": [
                [
                  143.8857421875,
                  312.08203125
                ],
                [
                  525.9375,
                  312.08203125
                ],
                [
                  525.9375,
                  332.7291564941406
                ],
                [
                  143.8857421875,
                  332.7291564941406
                ]
              ],
              "bbox": [
                143.8857421875,
                312.08203125,
                525.9375,
                332.7291564941406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Roger Sperberg pointed out a twisted piece of logic in Chapter 3.</li>",
              "polygon": [
                [
                  142.6904296875,
                  343.5767517089844
                ],
                [
                  411.78515625,
                  343.5767517089844
                ],
                [
                  411.78515625,
                  352.54315185546875
                ],
                [
                  142.6904296875,
                  352.54315185546875
                ]
              ],
              "bbox": [
                142.6904296875,
                343.5767517089844,
                411.78515625,
                352.54315185546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Sam Bull pointed out a confusing paragraph in Chapter 2.</li>",
              "polygon": [
                [
                  143.81103515625,
                  362.935546875
                ],
                [
                  383.78179931640625,
                  362.935546875
                ],
                [
                  383.78179931640625,
                  372.3571472167969
                ],
                [
                  143.81103515625,
                  372.3571472167969
                ]
              ],
              "bbox": [
                143.81103515625,
                362.935546875,
                383.78179931640625,
                372.3571472167969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Andrew Cheung pointed out two instances of \"use before def.\"</li>",
              "polygon": [
                [
                  144.0919952392578,
                  383.044921875
                ],
                [
                  406.107421875,
                  383.044921875
                ],
                [
                  406.107421875,
                  392.1701354980469
                ],
                [
                  144.0919952392578,
                  392.1701354980469
                ]
              ],
              "bbox": [
                144.0919952392578,
                383.044921875,
                406.107421875,
                392.1701354980469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> C. Corey Capel spotted the missing word in the Third Theorem of Debugging and a typo in Chapter 4.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  402.1875
                ],
                [
                  525.603271484375,
                  402.1875
                ],
                [
                  525.603271484375,
                  423.1621398925781
                ],
                [
                  144.0919952392578,
                  423.1621398925781
                ]
              ],
              "bbox": [
                144.0919952392578,
                402.1875,
                525.603271484375,
                423.1621398925781
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Alessandra helped clear up some Turtle confusion.</li>",
              "polygon": [
                [
                  143.81103515625,
                  433.125
                ],
                [
                  355.60546875,
                  433.125
                ],
                [
                  355.60546875,
                  442.97613525390625
                ],
                [
                  143.81103515625,
                  442.97613525390625
                ]
              ],
              "bbox": [
                143.81103515625,
                433.125,
                355.60546875,
                442.97613525390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Wim Champagne found a brain-o in a dictionary example.</li>",
              "polygon": [
                [
                  142.46630859375,
                  453.234375
                ],
                [
                  386.68359375,
                  453.234375
                ],
                [
                  386.68359375,
                  462.78912353515625
                ],
                [
                  142.46630859375,
                  462.78912353515625
                ]
              ],
              "bbox": [
                142.46630859375,
                453.234375,
                386.68359375,
                462.78912353515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Douglas Wright pointed out a problem with floor division in arc.</li>",
              "polygon": [
                [
                  143.8857421875,
                  472.95703125
                ],
                [
                  413.578125,
                  472.95703125
                ],
                [
                  413.578125,
                  482.6031188964844
                ],
                [
                  143.8857421875,
                  482.6031188964844
                ]
              ],
              "bbox": [
                143.8857421875,
                472.95703125,
                413.578125,
                482.6031188964844
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jared Spindor found some jetsam at the end of a sentence.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  493.4507141113281
                ],
                [
                  384.591796875,
                  493.4507141113281
                ],
                [
                  384.591796875,
                  502.4171142578125
                ],
                [
                  144.09197998046875,
                  502.4171142578125
                ]
              ],
              "bbox": [
                144.09197998046875,
                493.4507141113281,
                384.591796875,
                502.4171142578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Lin Peiheng sent a number of very helpful suggestions.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  512.7890625
                ],
                [
                  373.0848693847656,
                  512.7890625
                ],
                [
                  373.0848693847656,
                  522.2301025390625
                ],
                [
                  144.09197998046875,
                  522.2301025390625
                ]
              ],
              "bbox": [
                144.09197998046875,
                512.7890625,
                373.0848693847656,
                522.2301025390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Ray Hagtvedt sent in two errors and a not-quite-error.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  532.125
                ],
                [
                  368.4851379394531,
                  532.125
                ],
                [
                  368.4851379394531,
                  542.0440979003906
                ],
                [
                  144.09197998046875,
                  542.0440979003906
                ]
              ],
              "bbox": [
                144.09197998046875,
                532.125,
                368.4851379394531,
                542.0440979003906
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Torsten Hübsch pointed out an inconsistency in Swampy.</li>",
              "polygon": [
                [
                  143.736328125,
                  552.62109375
                ],
                [
                  383.09765625,
                  552.62109375
                ],
                [
                  383.09765625,
                  561.8580932617188
                ],
                [
                  143.736328125,
                  561.8580932617188
                ]
              ],
              "bbox": [
                143.736328125,
                552.62109375,
                383.09765625,
                561.8580932617188
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Inga Petuhhov corrected an example in Chapter 14.</li>",
              "polygon": [
                [
                  143.736328125,
                  572.34375
                ],
                [
                  357.6716003417969,
                  572.34375
                ],
                [
                  357.6716003417969,
                  581.6710968017578
                ],
                [
                  143.736328125,
                  581.6710968017578
                ]
              ],
              "bbox": [
                143.736328125,
                572.34375,
                357.6716003417969,
                581.6710968017578
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/22",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Arne Babenhauserheide sent several helpful corrections.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  592.453125
                ],
                [
                  378.31640625,
                  592.453125
                ],
                [
                  378.31640625,
                  601.4850921630859
                ],
                [
                  144.09197998046875,
                  601.4850921630859
                ]
              ],
              "bbox": [
                144.09197998046875,
                592.453125,
                378.31640625,
                601.4850921630859
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/23",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Mark E. Casida is is good at spotting repeated words.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  612.17578125
                ],
                [
                  366.1449279785156,
                  612.17578125
                ],
                [
                  366.1449279785156,
                  621.2990875244141
                ],
                [
                  144.09197998046875,
                  621.2990875244141
                ]
              ],
              "bbox": [
                144.09197998046875,
                612.17578125,
                366.1449279785156,
                621.2990875244141
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/24",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Scott Tyler filled in a that was missing. And then sent in a heap of corrections.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  631.8984375
                ],
                [
                  462.3453369140625,
                  631.8984375
                ],
                [
                  462.3453369140625,
                  641.1120910644531
                ],
                [
                  144.09197998046875,
                  641.1120910644531
                ]
              ],
              "bbox": [
                144.09197998046875,
                631.8984375,
                462.3453369140625,
                641.1120910644531
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/25",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Gordon Shephard sent in several corrections, all in separate emails.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  651.9596862792969
                ],
                [
                  420.1763916015625,
                  651.9596862792969
                ],
                [
                  420.1763916015625,
                  660.9260864257812
                ],
                [
                  144.09197998046875,
                  660.9260864257812
                ]
              ],
              "bbox": [
                144.09197998046875,
                651.9596862792969,
                420.1763916015625,
                660.9260864257812
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/26",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Andrew Turner spotted an error in Chapter 8.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  671.5462036132812
                ],
                [
                  337.3531799316406,
                  671.5462036132812
                ],
                [
                  337.3531799316406,
                  680.7400817871094
                ],
                [
                  144.09197998046875,
                  680.7400817871094
                ]
              ],
              "bbox": [
                144.09197998046875,
                671.5462036132812,
                337.3531799316406,
                680.7400817871094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/8/ListItem/27",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Adam Hobart fixed a problem with floor division in arc.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  691.3592071533203
                ],
                [
                  379.51171875,
                  691.3592071533203
                ],
                [
                  379.51171875,
                  700.5530853271484
                ],
                [
                  144.09197998046875,
                  700.5530853271484
                ]
              ],
              "bbox": [
                144.09197998046875,
                691.3592071533203,
                379.51171875,
                700.5530853271484
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/6/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/9/Page/150",
      "block_type": "Page",
      "html": "<content-ref src='/page/9/PageHeader/0'></content-ref><content-ref src='/page/9/PageHeader/29'></content-ref><content-ref src='/page/9/ListGroup/150'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/9/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.908203125
            ],
            [
              482.607421875,
              60.908203125
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.908203125,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/9/PageHeader/29",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              62.1650390625
            ],
            [
              92.56201171875,
              62.1650390625
            ],
            [
              92.56201171875,
              70.6728515625
            ],
            [
              85.53955078125,
              70.6728515625
            ]
          ],
          "bbox": [
            85.53955078125,
            62.1650390625,
            92.56201171875,
            70.6728515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/9/ListGroup/150",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/9/ListItem/1'></content-ref><content-ref src='/page/9/ListItem/2'></content-ref><content-ref src='/page/9/ListItem/3'></content-ref><content-ref src='/page/9/ListItem/4'></content-ref><content-ref src='/page/9/ListItem/5'></content-ref><content-ref src='/page/9/ListItem/6'></content-ref><content-ref src='/page/9/ListItem/7'></content-ref><content-ref src='/page/9/ListItem/8'></content-ref><content-ref src='/page/9/ListItem/9'></content-ref><content-ref src='/page/9/ListItem/10'></content-ref><content-ref src='/page/9/ListItem/11'></content-ref><content-ref src='/page/9/ListItem/12'></content-ref><content-ref src='/page/9/ListItem/13'></content-ref><content-ref src='/page/9/ListItem/14'></content-ref><content-ref src='/page/9/ListItem/15'></content-ref><content-ref src='/page/9/ListItem/16'></content-ref><content-ref src='/page/9/ListItem/17'></content-ref><content-ref src='/page/9/ListItem/18'></content-ref><content-ref src='/page/9/ListItem/19'></content-ref><content-ref src='/page/9/ListItem/20'></content-ref><content-ref src='/page/9/ListItem/21'></content-ref><content-ref src='/page/9/ListItem/22'></content-ref><content-ref src='/page/9/ListItem/23'></content-ref><content-ref src='/page/9/ListItem/24'></content-ref><content-ref src='/page/9/ListItem/25'></content-ref><content-ref src='/page/9/ListItem/26'></content-ref><content-ref src='/page/9/ListItem/27'></content-ref><content-ref src='/page/9/ListItem/28'></content-ref></ul></p>",
          "polygon": [
            [
              100.48095703125,
              88.9453125
            ],
            [
              483.802734375,
              88.9453125
            ],
            [
              483.802734375,
              700.5530700683594
            ],
            [
              100.48095703125,
              700.5530700683594
            ]
          ],
          "bbox": [
            100.48095703125,
            88.9453125,
            483.802734375,
            700.5530700683594
          ],
          "children": [
            {
              "id": "/page/9/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Daryl Hammond and Sarah Zimmerman pointed out that I served up math.pi too early. And Zim spotted a typo.</li>",
              "polygon": [
                [
                  100.5556640625,
                  88.9453125
                ],
                [
                  483.50390625,
                  88.9453125
                ],
                [
                  483.50390625,
                  109.694091796875
                ],
                [
                  100.5556640625,
                  109.694091796875
                ]
              ],
              "bbox": [
                100.5556640625,
                88.9453125,
                483.50390625,
                109.694091796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> George Sass found a bug in a Debugging section.</li>",
              "polygon": [
                [
                  100.89197540283203,
                  119.49609375
                ],
                [
                  305.8505859375,
                  119.49609375
                ],
                [
                  305.8505859375,
                  129.50811767578125
                ],
                [
                  100.89197540283203,
                  129.50811767578125
                ]
              ],
              "bbox": [
                100.89197540283203,
                119.49609375,
                305.8505859375,
                129.50811767578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Brian Bingham suggested Exercise <a href=\"#page-132-0\">11.10.</a></li>",
              "polygon": [
                [
                  100.77978515625,
                  139.60546875
                ],
                [
                  272.3653869628906,
                  139.60546875
                ],
                [
                  272.3653869628906,
                  149.32110595703125
                ],
                [
                  100.77978515625,
                  149.32110595703125
                ]
              ],
              "bbox": [
                100.77978515625,
                139.60546875,
                272.3653869628906,
                149.32110595703125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Leah Engelbert-Fenton pointed out that I used tuple as a variable name, contrary to my own advice. And then found a bunch of typos and a \"use before def.\"</li>",
              "polygon": [
                [
                  100.89197540283203,
                  159.0380859375
                ],
                [
                  483.802734375,
                  159.0380859375
                ],
                [
                  483.802734375,
                  180.3131103515625
                ],
                [
                  100.89197540283203,
                  180.3131103515625
                ]
              ],
              "bbox": [
                100.89197540283203,
                159.0380859375,
                483.802734375,
                180.3131103515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Joe Funke spotted a typo.</li>",
              "polygon": [
                [
                  100.8544921875,
                  190.3623046875
                ],
                [
                  211.958740234375,
                  190.3623046875
                ],
                [
                  211.958740234375,
                  200.12713623046875
                ],
                [
                  100.8544921875,
                  200.12713623046875
                ]
              ],
              "bbox": [
                100.8544921875,
                190.3623046875,
                211.958740234375,
                200.12713623046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Chao-chao Chen found an inconsistency in the Fibonacci example.</li>",
              "polygon": [
                [
                  100.77978515625,
                  210.375
                ],
                [
                  374.1328125,
                  210.375
                ],
                [
                  374.1328125,
                  219.94012451171875
                ],
                [
                  100.77978515625,
                  219.94012451171875
                ]
              ],
              "bbox": [
                100.77978515625,
                210.375,
                374.1328125,
                219.94012451171875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jeff Paine knows the difference between space and spam.</li>",
              "polygon": [
                [
                  100.8919448852539,
                  229.904296875
                ],
                [
                  337.078125,
                  229.904296875
                ],
                [
                  337.078125,
                  239.754150390625
                ],
                [
                  100.8919448852539,
                  239.754150390625
                ]
              ],
              "bbox": [
                100.8919448852539,
                229.904296875,
                337.078125,
                239.754150390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Lubos Pintes sent in a typo.</li>",
              "polygon": [
                [
                  100.8919448852539,
                  250.20703125
                ],
                [
                  220.53515625,
                  250.20703125
                ],
                [
                  220.53515625,
                  259.56817626953125
                ],
                [
                  100.8919448852539,
                  259.56817626953125
                ]
              ],
              "bbox": [
                100.8919448852539,
                250.20703125,
                220.53515625,
                259.56817626953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Gregg Lind and Abigail Heithoff suggested Exercise <a href=\"#page-160-0\">14.4.</a></li>",
              "polygon": [
                [
                  100.48095703125,
                  270.123046875
                ],
                [
                  338.2734375,
                  270.123046875
                ],
                [
                  338.2734375,
                  279.38116455078125
                ],
                [
                  100.48095703125,
                  279.38116455078125
                ]
              ],
              "bbox": [
                100.48095703125,
                270.123046875,
                338.2734375,
                279.38116455078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Max Hailperin has sent in a number of corrections and suggestions. Max is one of the authors of the extraordinary <i>Concrete Abstractions</i>, which you might want to read when you are done with this book.</li>",
              "polygon": [
                [
                  100.8919448852539,
                  290.0390625
                ],
                [
                  483.50390625,
                  290.0390625
                ],
                [
                  483.50390625,
                  321.5511779785156
                ],
                [
                  100.8919448852539,
                  321.5511779785156
                ]
              ],
              "bbox": [
                100.8919448852539,
                290.0390625,
                483.50390625,
                321.5511779785156
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Chotipat Pornavalai found an error in an error message.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  331.998046875
                ],
                [
                  333.4921875,
                  331.998046875
                ],
                [
                  333.4921875,
                  341.36517333984375
                ],
                [
                  100.89192962646484,
                  341.36517333984375
                ]
              ],
              "bbox": [
                100.89192962646484,
                331.998046875,
                333.4921875,
                341.36517333984375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Stanislaw Antol sent a list of very helpful suggestions.</li>",
              "polygon": [
                [
                  100.705078125,
                  351.720703125
                ],
                [
                  327.814453125,
                  351.720703125
                ],
                [
                  327.814453125,
                  361.1791687011719
                ],
                [
                  100.705078125,
                  361.1791687011719
                ]
              ],
              "bbox": [
                100.705078125,
                351.720703125,
                327.814453125,
                361.1791687011719
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Eric Pashman sent a number of corrections for Chapters 4–11.</li>",
              "polygon": [
                [
                  100.63037109375,
                  371.63671875
                ],
                [
                  356.501953125,
                  371.63671875
                ],
                [
                  356.501953125,
                  380.9921569824219
                ],
                [
                  100.63037109375,
                  380.9921569824219
                ]
              ],
              "bbox": [
                100.63037109375,
                371.63671875,
                356.501953125,
                380.9921569824219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Miguel Azevedo found some typos.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  391.166015625
                ],
                [
                  253.27589416503906,
                  391.166015625
                ],
                [
                  253.27589416503906,
                  400.80615234375
                ],
                [
                  100.89192962646484,
                  400.80615234375
                ]
              ],
              "bbox": [
                100.89192962646484,
                391.166015625,
                253.27589416503906,
                400.80615234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Jianhua Liu sent in a long list of corrections.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  410.30859375
                ],
                [
                  284.9811096191406,
                  410.30859375
                ],
                [
                  284.9811096191406,
                  420.6201477050781
                ],
                [
                  100.89192962646484,
                  420.6201477050781
                ]
              ],
              "bbox": [
                100.89192962646484,
                410.30859375,
                284.9811096191406,
                420.6201477050781
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Nick King found a missing word.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  430.8046875
                ],
                [
                  243.7445831298828,
                  430.8046875
                ],
                [
                  243.7445831298828,
                  440.4331359863281
                ],
                [
                  100.89192962646484,
                  440.4331359863281
                ]
              ],
              "bbox": [
                100.89192962646484,
                430.8046875,
                243.7445831298828,
                440.4331359863281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Martin Zuther sent a long list of suggestions.</li>",
              "polygon": [
                [
                  100.8544921875,
                  450.52734375
                ],
                [
                  289.7138671875,
                  450.52734375
                ],
                [
                  289.7138671875,
                  460.24713134765625
                ],
                [
                  100.8544921875,
                  460.24713134765625
                ]
              ],
              "bbox": [
                100.8544921875,
                450.52734375,
                289.7138671875,
                460.24713134765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Adam Zimmerman found an inconsistency in my instance of an \"instance\" and several other errors.</li>",
              "polygon": [
                [
                  100.5556640625,
                  470.63671875
                ],
                [
                  482.90625,
                  470.63671875
                ],
                [
                  482.90625,
                  491.2391052246094
                ],
                [
                  100.5556640625,
                  491.2391052246094
                ]
              ],
              "bbox": [
                100.5556640625,
                470.63671875,
                482.90625,
                491.2391052246094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Ratnakar Tiwari suggested a footnote explaining degenerate triangles.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  501.9609375
                ],
                [
                  388.8747863769531,
                  501.9609375
                ],
                [
                  388.8747863769531,
                  511.0520935058594
                ],
                [
                  100.89192962646484,
                  511.0520935058594
                ]
              ],
              "bbox": [
                100.89192962646484,
                501.9609375,
                388.8747863769531,
                511.0520935058594
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Anurag Goel suggested another solution for is_abecedarian and sent some additional corrections. And he knows how to spell Jane Austen.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  520.91015625
                ],
                [
                  483.50390625,
                  520.91015625
                ],
                [
                  483.50390625,
                  542.0440826416016
                ],
                [
                  100.89192962646484,
                  542.0440826416016
                ]
              ],
              "bbox": [
                100.89192962646484,
                520.91015625,
                483.50390625,
                542.0440826416016
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Kelli Kratzer spotted one of the typos.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  552.62109375
                ],
                [
                  262.072265625,
                  552.62109375
                ],
                [
                  262.072265625,
                  561.90234375
                ],
                [
                  100.89192962646484,
                  561.90234375
                ]
              ],
              "bbox": [
                100.89192962646484,
                552.62109375,
                262.072265625,
                561.90234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/22",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Mark Griffiths pointed out a confusing example in Chapter 3.</li>",
              "polygon": [
                [
                  100.705078125,
                  572.34375
                ],
                [
                  355.0078125,
                  572.34375
                ],
                [
                  355.0078125,
                  581.6710815429688
                ],
                [
                  100.705078125,
                  581.6710815429688
                ]
              ],
              "bbox": [
                100.705078125,
                572.34375,
                355.0078125,
                581.6710815429688
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/23",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Roydan Ongie found an error in my Newton's method.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  592.06640625
                ],
                [
                  330.0372314453125,
                  592.06640625
                ],
                [
                  330.0372314453125,
                  601.4850769042969
                ],
                [
                  100.89192962646484,
                  601.4850769042969
                ]
              ],
              "bbox": [
                100.89192962646484,
                592.06640625,
                330.0372314453125,
                601.4850769042969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/24",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Patryk Wolowiec helped me with a problem in the HTML version.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  611.7890625
                ],
                [
                  373.46148681640625,
                  611.7890625
                ],
                [
                  373.46148681640625,
                  621.299072265625
                ],
                [
                  100.89192962646484,
                  621.299072265625
                ]
              ],
              "bbox": [
                100.89192962646484,
                611.7890625,
                373.46148681640625,
                621.299072265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/25",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Mark Chonofsky told me about a new keyword in Python 3.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  631.125
                ],
                [
                  349.927734375,
                  631.125
                ],
                [
                  349.927734375,
                  641.1120758056641
                ],
                [
                  100.89192962646484,
                  641.1120758056641
                ]
              ],
              "bbox": [
                100.89192962646484,
                631.125,
                349.927734375,
                641.1120758056641
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/26",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Russell Coleman helped me with my geometry.</li>",
              "polygon": [
                [
                  100.8544921875,
                  651.62109375
                ],
                [
                  298.75347900390625,
                  651.62109375
                ],
                [
                  298.75347900390625,
                  660.9260711669922
                ],
                [
                  100.8544921875,
                  660.9260711669922
                ]
              ],
              "bbox": [
                100.8544921875,
                651.62109375,
                298.75347900390625,
                660.9260711669922
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/27",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Wei Huang spotted several typographical errors.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  671.34375
                ],
                [
                  304.0975036621094,
                  671.34375
                ],
                [
                  304.0975036621094,
                  680.7400665283203
                ],
                [
                  100.89192962646484,
                  680.7400665283203
                ]
              ],
              "bbox": [
                100.89192962646484,
                671.34375,
                304.0975036621094,
                680.7400665283203
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/9/ListItem/28",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Karen Barber spotted the the oldest typo in the book.</li>",
              "polygon": [
                [
                  100.89192962646484,
                  691.453125
                ],
                [
                  320.94140625,
                  691.453125
                ],
                [
                  320.94140625,
                  700.5530700683594
                ],
                [
                  100.89192962646484,
                  700.5530700683594
                ]
              ],
              "bbox": [
                100.89192962646484,
                691.453125,
                320.94140625,
                700.5530700683594
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/6/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/10/Page/143",
      "block_type": "Page",
      "html": "<content-ref src='/page/10/PageHeader/29'></content-ref><content-ref src='/page/10/ListGroup/143'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/10/PageHeader/29",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              516.375,
              61.171142578125
            ],
            [
              525.599853515625,
              61.171142578125
            ],
            [
              525.599853515625,
              71.13372802734375
            ],
            [
              516.375,
              71.13372802734375
            ]
          ],
          "bbox": [
            516.375,
            61.171142578125,
            525.599853515625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/10/ListGroup/143",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/10/ListItem/0'></content-ref><content-ref src='/page/10/ListItem/1'></content-ref><content-ref src='/page/10/ListItem/2'></content-ref><content-ref src='/page/10/ListItem/3'></content-ref><content-ref src='/page/10/ListItem/4'></content-ref><content-ref src='/page/10/ListItem/5'></content-ref><content-ref src='/page/10/ListItem/6'></content-ref><content-ref src='/page/10/ListItem/7'></content-ref><content-ref src='/page/10/ListItem/8'></content-ref><content-ref src='/page/10/ListItem/9'></content-ref><content-ref src='/page/10/ListItem/10'></content-ref><content-ref src='/page/10/ListItem/11'></content-ref><content-ref src='/page/10/ListItem/12'></content-ref><content-ref src='/page/10/ListItem/13'></content-ref><content-ref src='/page/10/ListItem/14'></content-ref><content-ref src='/page/10/ListItem/15'></content-ref><content-ref src='/page/10/ListItem/16'></content-ref><content-ref src='/page/10/ListItem/17'></content-ref><content-ref src='/page/10/ListItem/18'></content-ref><content-ref src='/page/10/ListItem/19'></content-ref><content-ref src='/page/10/ListItem/20'></content-ref><content-ref src='/page/10/ListItem/21'></content-ref><content-ref src='/page/10/ListItem/22'></content-ref><content-ref src='/page/10/ListItem/23'></content-ref><content-ref src='/page/10/ListItem/24'></content-ref><content-ref src='/page/10/ListItem/25'></content-ref><content-ref src='/page/10/ListItem/26'></content-ref><content-ref src='/page/10/ListItem/27'></content-ref><content-ref src='/page/10/ListItem/28'></content-ref></ul></p>",
          "polygon": [
            [
              143.06396484375,
              87.93017578125
            ],
            [
              526.53515625,
              87.93017578125
            ],
            [
              526.53515625,
              679.8515625
            ],
            [
              143.06396484375,
              679.8515625
            ]
          ],
          "bbox": [
            143.06396484375,
            87.93017578125,
            526.53515625,
            679.8515625
          ],
          "children": [
            {
              "id": "/page/10/ListItem/0",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Nam Nguyen found a typo and pointed out that I used the Decorator pattern but didn't mention it by name.</li>",
              "polygon": [
                [
                  143.8857421875,
                  87.93017578125
                ],
                [
                  525.6031494140625,
                  87.93017578125
                ],
                [
                  525.6031494140625,
                  109.694091796875
                ],
                [
                  143.8857421875,
                  109.694091796875
                ]
              ],
              "bbox": [
                143.8857421875,
                87.93017578125,
                525.6031494140625,
                109.694091796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Stéphane Morin sent in several corrections and suggestions.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  118.529296875
                ],
                [
                  392.0625,
                  118.529296875
                ],
                [
                  392.0625,
                  128.84210205078125
                ],
                [
                  144.0919952392578,
                  128.84210205078125
                ]
              ],
              "bbox": [
                144.0919952392578,
                118.529296875,
                392.0625,
                128.84210205078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Paul Stoop corrected a typo in uses_only.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  138.4453125
                ],
                [
                  320.5526123046875,
                  138.4453125
                ],
                [
                  320.5526123046875,
                  147.9910888671875
                ],
                [
                  144.0919952392578,
                  147.9910888671875
                ]
              ],
              "bbox": [
                144.0919952392578,
                138.4453125,
                320.5526123046875,
                147.9910888671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Eric Bronner pointed out a confusion in the discussion of the order of operations.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  156.9111328125
                ],
                [
                  474.7637939453125,
                  156.9111328125
                ],
                [
                  474.7637939453125,
                  167.13909912109375
                ],
                [
                  144.09201049804688,
                  167.13909912109375
                ]
              ],
              "bbox": [
                144.09201049804688,
                156.9111328125,
                474.7637939453125,
                167.13909912109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Alexandros Gezerlis set a new standard for the number and quality of suggestions he submitted. We are deeply grateful!</li>",
              "polygon": [
                [
                  144.09201049804688,
                  176.150390625
                ],
                [
                  525.6033935546875,
                  176.150390625
                ],
                [
                  525.6033935546875,
                  197.465087890625
                ],
                [
                  144.09201049804688,
                  197.465087890625
                ]
              ],
              "bbox": [
                144.09201049804688,
                176.150390625,
                525.6033935546875,
                197.465087890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Gray Thomas knows his right from his left.</li>",
              "polygon": [
                [
                  143.4375,
                  206.5078125
                ],
                [
                  326.3203125,
                  206.5078125
                ],
                [
                  326.3203125,
                  216.61309814453125
                ],
                [
                  143.4375,
                  216.61309814453125
                ]
              ],
              "bbox": [
                143.4375,
                206.5078125,
                326.3203125,
                216.61309814453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Giovanni Escobar Sosa sent a long list of corrections and suggestions.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  226.037109375
                ],
                [
                  429.1171875,
                  226.037109375
                ],
                [
                  429.1171875,
                  235.7620849609375
                ],
                [
                  144.09201049804688,
                  235.7620849609375
                ]
              ],
              "bbox": [
                144.09201049804688,
                226.037109375,
                429.1171875,
                235.7620849609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Alix Etienne fixed one of the URLs.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  244.986328125
                ],
                [
                  293.84881591796875,
                  244.986328125
                ],
                [
                  293.84881591796875,
                  254.91009521484375
                ],
                [
                  144.09201049804688,
                  254.91009521484375
                ]
              ],
              "bbox": [
                144.09201049804688,
                244.986328125,
                293.84881591796875,
                254.91009521484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Kuang He found a typo.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  264.322265625
                ],
                [
                  250.72938537597656,
                  264.322265625
                ],
                [
                  250.72938537597656,
                  274.05810546875
                ],
                [
                  144.09201049804688,
                  274.05810546875
                ]
              ],
              "bbox": [
                144.09201049804688,
                264.322265625,
                250.72938537597656,
                274.05810546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Daniel Neilson corrected an error about the order of operations.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  283.658203125
                ],
                [
                  406.7089538574219,
                  283.658203125
                ],
                [
                  406.7089538574219,
                  293.20611572265625
                ],
                [
                  144.09201049804688,
                  293.20611572265625
                ]
              ],
              "bbox": [
                144.09201049804688,
                283.658203125,
                406.7089538574219,
                293.20611572265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Will McGinnis pointed out that polyline was defined differently in two places.</li>",
              "polygon": [
                [
                  144.09201049804688,
                  302.607421875
                ],
                [
                  468.93780517578125,
                  302.607421875
                ],
                [
                  468.93780517578125,
                  312.3551025390625
                ],
                [
                  144.09201049804688,
                  312.3551025390625
                ]
              ],
              "bbox": [
                144.09201049804688,
                302.607421875,
                468.93780517578125,
                312.3551025390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Swarup Sahoo spotted a missing semi-colon.</li>",
              "polygon": [
                [
                  143.736328125,
                  322.330078125
                ],
                [
                  331.4269714355469,
                  322.330078125
                ],
                [
                  331.4269714355469,
                  331.50311279296875
                ],
                [
                  143.736328125,
                  331.50311279296875
                ]
              ],
              "bbox": [
                143.736328125,
                322.330078125,
                331.4269714355469,
                331.50311279296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Frank Hecker pointed out an exercise that was under-specified, and some broken links.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  341.0859375
                ],
                [
                  499.07177734375,
                  341.0859375
                ],
                [
                  499.07177734375,
                  350.651123046875
                ],
                [
                  144.09197998046875,
                  350.651123046875
                ]
              ],
              "bbox": [
                144.09197998046875,
                341.0859375,
                499.07177734375,
                350.651123046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Animesh B helped me clean up a confusing example.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  360.228515625
                ],
                [
                  364.2709045410156,
                  360.228515625
                ],
                [
                  364.2709045410156,
                  369.79913330078125
                ],
                [
                  144.09197998046875,
                  369.79913330078125
                ]
              ],
              "bbox": [
                144.09197998046875,
                360.228515625,
                364.2709045410156,
                369.79913330078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Martin Caspersen found two round-off errors.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  379.177734375
                ],
                [
                  337.376953125,
                  379.177734375
                ],
                [
                  337.376953125,
                  388.9471435546875
                ],
                [
                  144.09197998046875,
                  388.9471435546875
                ]
              ],
              "bbox": [
                144.09197998046875,
                379.177734375,
                337.376953125,
                388.9471435546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Gregor Ulm sent several corrections and suggestions.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  398.3203125
                ],
                [
                  365.765625,
                  398.3203125
                ],
                [
                  365.765625,
                  408.09613037109375
                ],
                [
                  144.09197998046875,
                  408.09613037109375
                ]
              ],
              "bbox": [
                144.09197998046875,
                398.3203125,
                365.765625,
                408.09613037109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Dimitrios Tsirigkas suggested I clarify an exercise.</li>",
              "polygon": [
                [
                  143.96044921875,
                  418.04296875
                ],
                [
                  352.72216796875,
                  418.04296875
                ],
                [
                  352.72216796875,
                  427.32421875
                ],
                [
                  143.96044921875,
                  427.32421875
                ]
              ],
              "bbox": [
                143.96044921875,
                418.04296875,
                352.72216796875,
                427.32421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Carlos Tafur sent a page of corrections and suggestions.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  437.37890625
                ],
                [
                  375.92578125,
                  437.37890625
                ],
                [
                  375.92578125,
                  446.39215087890625
                ],
                [
                  144.09197998046875,
                  446.39215087890625
                ]
              ],
              "bbox": [
                144.09197998046875,
                437.37890625,
                375.92578125,
                446.39215087890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Martin Nordsletten found a bug in an exercise solution.</li>",
              "polygon": [
                [
                  143.96044921875,
                  455.94140625
                ],
                [
                  374.73046875,
                  455.94140625
                ],
                [
                  374.73046875,
                  465.5401611328125
                ],
                [
                  143.96044921875,
                  465.5401611328125
                ]
              ],
              "bbox": [
                143.96044921875,
                455.94140625,
                374.73046875,
                465.5401611328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Lars O.D. Christensen found a broken reference.</li>",
              "polygon": [
                [
                  143.36279296875,
                  475.27734375
                ],
                [
                  345.5759582519531,
                  475.27734375
                ],
                [
                  345.5759582519531,
                  484.68914794921875
                ],
                [
                  143.36279296875,
                  484.68914794921875
                ]
              ],
              "bbox": [
                143.36279296875,
                475.27734375,
                345.5759582519531,
                484.68914794921875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Victor Simeone found a typo.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  494.2265625
                ],
                [
                  270.2402648925781,
                  494.2265625
                ],
                [
                  270.2402648925781,
                  503.837158203125
                ],
                [
                  144.09197998046875,
                  503.837158203125
                ]
              ],
              "bbox": [
                144.09197998046875,
                494.2265625,
                270.2402648925781,
                503.837158203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Sven Hoexter pointed out that a variable named input shadows a built-in function.</li>",
              "polygon": [
                [
                  144.09197998046875,
                  513.5625
                ],
                [
                  484.2014465332031,
                  513.5625
                ],
                [
                  484.2014465332031,
                  522.9851684570312
                ],
                [
                  144.09197998046875,
                  522.9851684570312
                ]
              ],
              "bbox": [
                144.09197998046875,
                513.5625,
                484.2014465332031,
                522.9851684570312
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/22",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Viet Le found a typo.</li>",
              "polygon": [
                [
                  144.09202575683594,
                  532.51171875
                ],
                [
                  238.0166015625,
                  532.51171875
                ],
                [
                  238.0166015625,
                  542.1331634521484
                ],
                [
                  144.09202575683594,
                  542.1331634521484
                ]
              ],
              "bbox": [
                144.09202575683594,
                532.51171875,
                238.0166015625,
                542.1331634521484
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/23",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Stephen Gregory pointed out the problem with cmp in Python 3.</li>",
              "polygon": [
                [
                  143.66162109375,
                  551.84765625
                ],
                [
                  407.3612976074219,
                  551.84765625
                ],
                [
                  407.3612976074219,
                  561.2821655273438
                ],
                [
                  143.66162109375,
                  561.2821655273438
                ]
              ],
              "bbox": [
                143.66162109375,
                551.84765625,
                407.3612976074219,
                561.2821655273438
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/24",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Matthew Shultz let me know about a broken link.</li>",
              "polygon": [
                [
                  143.06396484375,
                  571.18359375
                ],
                [
                  350.74957275390625,
                  571.18359375
                ],
                [
                  350.74957275390625,
                  580.46484375
                ],
                [
                  143.06396484375,
                  580.46484375
                ]
              ],
              "bbox": [
                143.06396484375,
                571.18359375,
                350.74957275390625,
                580.46484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/25",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Lokesh Kumar Makani let me know about some broken links and some changes in error messages.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  590.1328125
                ],
                [
                  526.53515625,
                  590.1328125
                ],
                [
                  526.53515625,
                  611.015625
                ],
                [
                  144.0919952392578,
                  611.015625
                ]
              ],
              "bbox": [
                144.0919952392578,
                590.1328125,
                526.53515625,
                611.015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/26",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Ishwar Bhat corrected my statement of Fermat's last theorem.</li>",
              "polygon": [
                [
                  143.96044921875,
                  620.68359375
                ],
                [
                  397.84112548828125,
                  620.68359375
                ],
                [
                  397.84112548828125,
                  629.9041442871094
                ],
                [
                  143.96044921875,
                  629.9041442871094
                ]
              ],
              "bbox": [
                143.96044921875,
                620.68359375,
                397.84112548828125,
                629.9041442871094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/27",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Brian McGhie suggested a clarification.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  639.6328125
                ],
                [
                  309.6834716796875,
                  639.6328125
                ],
                [
                  309.6834716796875,
                  649.0531463623047
                ],
                [
                  144.0919952392578,
                  649.0531463623047
                ]
              ],
              "bbox": [
                144.0919952392578,
                639.6328125,
                309.6834716796875,
                649.0531463623047
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/10/ListItem/28",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Andrea Zanella translated the book into Italian, and sent a number of corrections along the way.</li>",
              "polygon": [
                [
                  144.0919952392578,
                  658.96875
                ],
                [
                  526.53515625,
                  658.96875
                ],
                [
                  526.53515625,
                  679.8515625
                ],
                [
                  144.0919952392578,
                  679.8515625
                ]
              ],
              "bbox": [
                144.0919952392578,
                658.96875,
                526.53515625,
                679.8515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/4/SectionHeader/0",
                "2": "/page/6/SectionHeader/0"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/6/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/11/Page/3",
      "block_type": "Page",
      "html": "<content-ref src='/page/11/PageHeader/0'></content-ref><content-ref src='/page/11/PageHeader/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/11/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.2314453125
            ],
            [
              482.40338134765625,
              60.2314453125
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.2314453125,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/11/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              60.76318359375
            ],
            [
              97.716796875,
              60.76318359375
            ],
            [
              97.716796875,
              70.72119140625
            ],
            [
              85.3154296875,
              70.72119140625
            ]
          ],
          "bbox": [
            85.3154296875,
            60.76318359375,
            97.716796875,
            70.72119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/4/SectionHeader/0",
            "2": "/page/6/SectionHeader/0"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/4/SectionHeader/0",
        "2": "/page/6/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/12/Page/388",
      "block_type": "Page",
      "html": "<content-ref src='/page/12/SectionHeader/0'></content-ref><content-ref src='/page/12/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/12/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h1><b>Contents</b></h1>",
          "polygon": [
            [
              128.197265625,
              165.40826416015625
            ],
            [
              231.47499084472656,
              165.40826416015625
            ],
            [
              231.47499084472656,
              190.1953125
            ],
            [
              128.197265625,
              190.1953125
            ]
          ],
          "bbox": [
            128.197265625,
            165.40826416015625,
            231.47499084472656,
            190.1953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/12/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<table><tbody><tr><th></th><th colspan=4>Preface</th></tr><tr><th>1</th><th></th><th>The way of the program</th><th>1</th></tr><tr><td></td><td>1.1</td><td>The Python programming language</td><td>1</td></tr><tr><td></td><td>1.2</td><td>What is a program?</td><td>3</td></tr><tr><td></td><td>1.3</td><td>What is debugging?</td><td>3</td></tr><tr><td></td><td>1.4</td><td>Formal and natural languages</td><td>5</td></tr><tr><td></td><td>1.5</td><td>The first program</td><td>6</td></tr><tr><td></td><td>1.6</td><td>Debugging</td><td>7</td></tr><tr><td></td><td>1.7</td><td>Glossary</td><td>7</td></tr><tr><td></td><td>1.8</td><td>Exercises</td><td>9</td></tr><tr><th>2</th><th colspan=4>Variables, expressions and statements</th></tr><tr><td></td><td>2.1</td><td>Values and types</td><td>11</td></tr><tr><td></td><td>2.2</td><td>Variables</td><td>12</td></tr><tr><td></td><td>2.3</td><td>Variable names and keywords</td><td>12</td></tr><tr><td></td><td>2.4</td><td>Operators and operands</td><td>13</td></tr><tr><td></td><td>2.5</td><td>Expressions and statements</td><td>14</td></tr><tr><td></td><td>2.6</td><td>Interactive mode and script mode</td><td>14</td></tr><tr><td></td><td>2.7</td><td>Order of operations</td><td>15</td></tr><tr><td></td><td>2.8</td><td>String operations</td><td>15</td></tr><tr><td></td><td>2.9</td><td>Comments</td><td>16</td></tr><tr><td></td><td>2.10</td><td>Debugging</td><td>16</td></tr><tr><td></td><td>2.11</td><td>Glossary</td><td>17</td></tr><tr><td></td><td>2.12</td><td>Exercises</td><td>18</td></tr><tr><th>3</th><th>Functions</th><th></th><th>19</th></tr><tr><td></td><td>3.1</td><td>Function calls</td><td>19</td></tr><tr><td></td><td>3.2</td><td>Type conversion functions</td><td>19</td></tr><tr><td></td><td>3.3</td><td>Math functions</td><td>20</td></tr><tr><td></td><td>3.4</td><td>Composition</td><td>21</td></tr><tr><td></td><td>3.5</td><td>Adding new functions</td><td>21</td></tr><tr><td></td><td>3.6</td><td>Definitions and uses</td><td>22</td></tr><tr><td></td><td>3.7</td><td>Flow of execution</td><td>23</td></tr><tr><td></td><td>3.8</td><td>Parameters and arguments</td><td>23</td></tr><tr><td></td><td>3.9</td><td>Variables and parameters are local</td><td>24</td></tr><tr><td></td><td>3.10</td><td>Stack diagrams</td><td>25</td></tr><tr><td></td><td>3.11</td><td>Fruitful functions and void functions</td><td>26</td></tr><tr><td></td><td>3.12</td><td>Why functions?</td><td>26</td></tr><tr><td></td><td>3.13</td><td>Importing with from</td><td>27</td></tr><tr><td></td><td>3.14</td><td>Debugging</td><td>27</td></tr><tr><td></td><td>3.15</td><td>Glossary</td><td>28</td></tr><tr><td></td><td>3.16</td><td>Exercises</td><td>29</td></tr><tr><th>4</th><th>Case study: interface design</th><th></th><th>31</th></tr><tr><td></td><td>4.1</td><td>TurtleWorld</td><td>31</td></tr><tr><td></td><td>4.2</td><td>Simple repetition</td><td>32</td></tr><tr><td></td><td>4.3</td><td>Exercises</td><td>33</td></tr><tr><td></td><td>4.4</td><td>Encapsulation</td><td>34</td></tr><tr><td></td><td>4.5</td><td>Generalization</td><td>34</td></tr><tr><td></td><td>4.6</td><td>Interface design</td><td>35</td></tr><tr><td></td><td>4.7</td><td>Refactoring</td><td>36</td></tr><tr><td></td><td>4.8</td><td>A development plan</td><td>37</td></tr><tr><td></td><td>4.9</td><td>docstring</td><td>37</td></tr><tr><td></td><td>4.10</td><td>Debugging</td><td>38</td></tr><tr><td></td><td>4.11</td><td>Glossary</td><td>38</td></tr><tr><td></td><td>4.12</td><td>Exercises</td><td>39</td></tr><tr><th>5</th><th></th><th>Conditionals and recursion</th><th>41</th></tr><tr><td></td><td>5.1</td><td>Modulus operator</td><td>41</td></tr><tr><td></td><td>5.2</td><td>Boolean expressions</td><td>41</td></tr><tr><td></td><td>5.3</td><td>Logical operators</td><td>42</td></tr><tr><td></td><td>5.4</td><td>Conditional execution</td><td>42</td></tr><tr><td></td><td>5.5</td><td>Alternative execution</td><td>43</td></tr><tr><td></td><td>5.6</td><td>Chained conditionals</td><td>43</td></tr><tr><td></td><td>5.7</td><td>Nested conditionals</td><td>43</td></tr><tr><td></td><td>5.8</td><td>Recursion</td><td>44</td></tr><tr><td></td><td>5.9</td><td>Stack diagrams for recursive functions</td><td>45</td></tr><tr><td></td><td>5.10</td><td>Infinite recursion</td><td>46</td></tr><tr><td></td><td>5.11</td><td>Keyboard input</td><td>46</td></tr><tr><td></td><td>5.12</td><td>Debugging</td><td>47</td></tr><tr><td></td><td>5.13</td><td>Glossary</td><td>48</td></tr><tr><td></td><td>5.14</td><td>Exercises</td><td>49</td></tr><tr><th>6</th><th></th><th>Fruitful functions</th><th>51</th></tr><tr><td></td><td>6.1</td><td>Return values</td><td>51</td></tr><tr><td></td><td>6.2</td><td>Incremental development</td><td>52</td></tr><tr><td></td><td>6.3</td><td>Composition</td><td>54</td></tr><tr><td></td><td>6.4</td><td>Boolean functions</td><td>54</td></tr><tr><td></td><td>6.5</td><td>More recursion</td><td>55</td></tr><tr><td></td><td>6.6</td><td>Leap of faith</td><td>57</td></tr><tr><td></td><td>6.7</td><td>One more example</td><td>57</td></tr><tr><td></td><td>6.8</td><td>Checking types</td><td>58</td></tr><tr><td></td><td>6.9</td><td>Debugging</td><td>59</td></tr><tr><td></td><td>6.10</td><td>Glossary</td><td>60</td></tr><tr><th>7</th><th>Iteration</th><th></th><th>6</th></tr><tr><td></td><td>7.1</td><td>Multiple assignment</td><td>6</td></tr><tr><td></td><td>7.2</td><td>Updating variables</td><td>6</td></tr><tr><td></td><td>7.3</td><td>The while statement</td><td>6</td></tr><tr><td></td><td>7.4</td><td>break</td><td>6</td></tr><tr><td></td><td>7.5</td><td>Square roots</td><td>6</td></tr><tr><td></td><td>7.6</td><td>Algorithms</td><td>6</td></tr><tr><td></td><td>7.7</td><td>Debugging</td><td>6</td></tr><tr><td></td><td>7.8</td><td>Glossary</td><td>6</td></tr><tr><td></td><td>7.9</td><td>Exercises</td><td>6</td></tr><tr><th>8</th><th>Strings</th><th></th><th>7</th></tr><tr><td></td><td>8.1</td><td>A string is a sequence</td><td>7</td></tr><tr><td></td><td>8.2</td><td>len</td><td>7</td></tr><tr><td></td><td>8.3</td><td>Traversal with a for loop</td><td>7</td></tr><tr><td></td><td>8.4</td><td>String slices</td><td>7</td></tr><tr><td></td><td>8.5</td><td>Strings are immutable</td><td>7</td></tr><tr><td></td><td>8.6</td><td>Searching</td><td>7</td></tr><tr><td></td><td>8.7</td><td>Looping and counting</td><td>7</td></tr><tr><td></td><td>8.8</td><td>String methods</td><td>7</td></tr><tr><td></td><td>8.9</td><td>The in operator</td><td>7</td></tr><tr><td></td><td>8.10</td><td>String comparison</td><td>7</td></tr><tr><td></td><td>8.11</td><td>Debugging</td><td>7</td></tr><tr><td></td><td>8.12</td><td>Glossary</td><td>7</td></tr><tr><td></td><td>8.13</td><td>Exercises</td><td>7</td></tr><tr><th>9</th><td colspan=2>Case study: word play</td><th>8</th></tr><tr><td></td><td>9.1</td><td>Reading word lists</td><td>8</td></tr><tr><td></td><td>9.2</td><td>Exercises</td><td>8</td></tr><tr><td></td><td>9.3</td><td>Search</td><td>8</td></tr><tr><td></td><td>9.4</td><td>Looping with indices</td><td>8</td></tr><tr><td></td><td>9.5</td><td>Debugging</td><td>8</td></tr><tr><td></td><td>9.6</td><td>Glossary</td><td>8</td></tr><tr><td></td><td>9.7</td><td>Exercises</td><td>8</td></tr><tr><th></th><th>10 Lists</th><th></th><th>87</th></tr><tr><td></td><td>10.1</td><td>A list is a sequence</td><td>87</td></tr><tr><td></td><td>10.2</td><td>Lists are mutable</td><td>87</td></tr><tr><td></td><td>10.3</td><td>Traversing a list</td><td>89</td></tr><tr><td></td><td>10.4</td><td>List operations</td><td>89</td></tr><tr><td></td><td>10.5</td><td>List slices</td><td>89</td></tr><tr><td></td><td>10.6</td><td>List methods</td><td>90</td></tr><tr><td></td><td>10.7</td><td>Map, filter and reduce</td><td>91</td></tr><tr><td></td><td>10.8</td><td>Deleting elements</td><td>92</td></tr><tr><td></td><td>10.9</td><td>Lists and strings</td><td>93</td></tr><tr><td></td><td>10.10</td><td>Objects and values</td><td>93</td></tr><tr><td></td><td>10.11</td><td>Aliasing</td><td>94</td></tr><tr><td></td><td>10.12</td><td>List arguments</td><td>95</td></tr><tr><td></td><td>10.13</td><td>Debugging</td><td>96</td></tr><tr><td></td><td>10.14</td><td>Glossary</td><td>97</td></tr><tr><td></td><td>10.15</td><td>Exercises</td><td>98</td></tr><tr><th></th><th></th><th></th><th></th></tr><tr><th></th><th></th><th>11 Dictionaries</th><th>101</th></tr><tr><td></td><td>11.1</td><td>Dictionary as a set of counters</td><td>102</td></tr><tr><td></td><td>11.2</td><td>Looping and dictionaries</td><td>103</td></tr><tr><td></td><td>11.3</td><td>Reverse lookup</td><td>104</td></tr><tr><td></td><td>11.4</td><td>Dictionaries and lists</td><td>105</td></tr><tr><td></td><td>11.5</td><td>Memos</td><td>106</td></tr><tr><td></td><td>11.6</td><td>Global variables</td><td>108</td></tr><tr><td></td><td>11.7</td><td>Long integers</td><td>109</td></tr><tr><td></td><td>11.8</td><td>Debugging</td><td>109</td></tr><tr><td></td><td>11.9</td><td>Glossary</td><td>110</td></tr><tr><td></td><td>11.10</td><td>Exercises</td><td>111</td></tr><tr><th></th><th>12 Tuples</th><th></th><th>113</th></tr><tr><td></td><td>12.1</td><td>Tuples are immutable</td><td>113</td></tr><tr><td></td><td>12.2</td><td>Tuple assignment</td><td>114</td></tr><tr><td></td><td>12.3</td><td>Tuples as return values</td><td>115</td></tr><tr><td></td><td>12.4</td><td>Variable-length argument tuples</td><td>115</td></tr><tr><td></td><td>12.5</td><td>Lists and tuples</td><td>116</td></tr><tr><td></td><td>12.6</td><td>Dictionaries and tuples</td><td>117</td></tr><tr><td></td><td>12.7</td><td>Comparing tuples</td><td>118</td></tr><tr><td></td><td>12.8</td><td>Sequences of sequences</td><td>119</td></tr><tr><td></td><td>12.9</td><td>Debugging</td><td>120</td></tr><tr><td></td><td>12.10</td><td>Glossary</td><td>121</td></tr><tr><td></td><td>12.11</td><td>Exercises</td><td>121</td></tr><tr><th></th><th></th><th>13 Case study: data structure selection</th><th>123</th></tr><tr><td></td><td>13.1</td><td>Word frequency analysis</td><td>123</td></tr><tr><td></td><td>13.2</td><td>Random numbers</td><td>124</td></tr><tr><td></td><td>13.3</td><td>Word histogram</td><td>125</td></tr><tr><td></td><td>13.4</td><td>Most common words</td><td>126</td></tr><tr><td></td><td>13.5</td><td>Optional parameters</td><td>126</td></tr><tr><td></td><td>13.6</td><td>Dictionary subtraction</td><td>127</td></tr><tr><td></td><td>13.7</td><td>Random words</td><td>127</td></tr><tr><td></td><td>13.8</td><td>Markov analysis</td><td>128</td></tr><tr><td></td><td>13.9</td><td>Data structures</td><td>129</td></tr><tr><td></td><td>13.10</td><td>Debugging</td><td>131</td></tr><tr><td></td><td>13.11</td><td>Glossary</td><td>132</td></tr><tr><td></td><td>13.12</td><td>Exercises</td><td>132</td></tr><tr><td></td><td></td><td></td><td></td></tr><tr><td></td><td>14 Files</td><td></td><td>133</td></tr><tr><td></td><td>14.1</td><td>Persistence</td><td>133</td></tr><tr><td></td><td>14.2</td><td>Reading and writing</td><td>133</td></tr><tr><td></td><td>14.3</td><td>Format operator</td><td>134</td></tr><tr><td></td><td>14.4</td><td>Filenames and paths</td><td>135</td></tr><tr><th></th><th></th><th></th><th></th></tr><tr><td></td><td>14.5</td><td>Catching exceptions</td><td>136</td></tr><tr><td></td><td>14.6</td><td>Databases</td><td>137</td></tr><tr><td></td><td>14.7</td><td>Pickling</td><td>137</td></tr><tr><td></td><td>14.8</td><td>Pipes</td><td>138</td></tr><tr><td></td><td>14.9</td><td>Writing modules</td><td>139</td></tr><tr><td></td><td>14.10</td><td>Debugging</td><td>140</td></tr><tr><td></td><td>14.11</td><td>Glossary</td><td>141</td></tr><tr><td></td><td>14.12</td><td>Exercises</td><td>141</td></tr><tr><th>15</th><th colspan=3>Classes and objects</th></tr><tr><td></td><td>15.1</td><td>User-defined types</td><td>143</td></tr><tr><td></td><td>15.2</td><td>Attributes</td><td>144</td></tr><tr><td></td><td>15.3</td><td>Rectangles</td><td>145</td></tr><tr><td></td><td>15.4</td><td>Instances as return values</td><td>146</td></tr><tr><td></td><td>15.5</td><td>Objects are mutable</td><td>146</td></tr><tr><td></td><td>15.6</td><td>Copying</td><td>147</td></tr><tr><td></td><td>15.7</td><td>Debugging</td><td>148</td></tr><tr><td></td><td>15.8</td><td>Glossary</td><td>149</td></tr><tr><td></td><td>15.9</td><td>Exercises</td><td>149</td></tr><tr><th>16</th><th colspan=3>Classes and functions</th></tr><tr><td></td><td>16.1</td><td>Time</td><td>151</td></tr><tr><td></td><td>16.2</td><td>Pure functions</td><td>151</td></tr><tr><td></td><td>16.3</td><td>Modifiers</td><td>153</td></tr><tr><td></td><td>16.4</td><td>Prototyping versus planning</td><td>154</td></tr><tr><td></td><td>16.5</td><td>Debugging</td><td>155</td></tr><tr><td></td><td>16.6</td><td>Glossary</td><td>155</td></tr><tr><td></td><td>16.7</td><td>Exercises</td><td>156</td></tr><tr><th></th><th></th><th>17 Classes and methods</th><th>157</th></tr><tr><td></td><td>17.1</td><td>Object-oriented features</td><td>157</td></tr><tr><td></td><td>17.2</td><td>Printing objects</td><td>158</td></tr><tr><td></td><td>17.3</td><td>Another example</td><td>159</td></tr><tr><td></td><td>17.4</td><td>A more complicated example</td><td>160</td></tr><tr><td></td><td>17.5</td><td>The init method</td><td>160</td></tr><tr><td></td><td>17.6</td><td>The __str__ method</td><td>161</td></tr><tr><td></td><td>17.7</td><td>Operator overloading</td><td>161</td></tr><tr><td></td><td>17.8</td><td>Type-based dispatch</td><td>162</td></tr><tr><td></td><td>17.9</td><td>Polymorphism</td><td>163</td></tr><tr><td></td><td>17.10</td><td>Debugging</td><td>164</td></tr><tr><td></td><td>17.11</td><td>Interface and implementation</td><td>164</td></tr><tr><td></td><td>17.12</td><td>Glossary</td><td>165</td></tr><tr><td></td><td>17.13</td><td>Exercises</td><td>165</td></tr><tr><th></th><th></th><th>18 Inheritance</th><th>167</th></tr><tr><td></td><td>18.1</td><td>Card objects</td><td>167</td></tr><tr><td></td><td>18.2</td><td>Class attributes</td><td>168</td></tr><tr><td></td><td>18.3</td><td>Comparing cards</td><td>169</td></tr><tr><td></td><td>18.4</td><td>Decks</td><td>170</td></tr><tr><td></td><td>18.5</td><td>Printing the deck</td><td>171</td></tr><tr><td></td><td>18.6</td><td>Add, remove, shuffle and sort</td><td>171</td></tr><tr><td></td><td>18.7</td><td>Inheritance</td><td>172</td></tr><tr><td></td><td>18.8</td><td>Class diagrams</td><td>173</td></tr><tr><td></td><td>18.9</td><td>Debugging</td><td>174</td></tr><tr><td></td><td>18.10</td><td>Data encapsulation</td><td>175</td></tr><tr><td></td><td>18.11</td><td>Glossary</td><td>176</td></tr><tr><th></th><th></th><th>19 Case study: Tkinter</th><th>179</th></tr><tr><td></td><td>19.1</td><td>GUI</td><td>179</td></tr><tr><td></td><td>19.2</td><td>Buttons and callbacks</td><td>180</td></tr><tr><td></td><td>19.3</td><td>Canvas widgets</td><td>181</td></tr><tr><td></td><td>19.4</td><td>Coordinate sequences</td><td>182</td></tr><tr><td></td><td>19.5</td><td>More widgets</td><td>182</td></tr><tr><td></td><td>19.6</td><td>Packing widgets</td><td>183</td></tr><tr><td></td><td>19.7</td><td>Menus and Callables</td><td>185</td></tr><tr><td></td><td>19.8</td><td>Binding</td><td>186</td></tr><tr><td></td><td>19.9</td><td>Debugging</td><td>188</td></tr><tr><td></td><td>19.10</td><td>Glossary</td><td>189</td></tr><tr><td></td><td>19.11</td><td>Exercises</td><td>190</td></tr><tr><th>A</th><th>Debugging</th><th></th><th>193</th></tr><tr><td></td><td>A.1</td><td>Syntax errors</td><td>193</td></tr><tr><td></td><td>A.2</td><td>Runtime errors</td><td>195</td></tr><tr><td></td><td>A.3</td><td>Semantic errors</td><td>198</td></tr><tr><th>B</th><th>Analysis of Algorithms</th><th></th><th>201</th></tr><tr><td></td><td>B.1</td><td>Order of growth</td><td>202</td></tr><tr><td></td><td>B.2</td><td>Analysis of basic Python operations</td><td>204</td></tr><tr><td></td><td>B.3</td><td>Analysis of search algorithms</td><td>205</td></tr><tr><td></td><td>B.4</td><td>Hashtables</td><td>206</td></tr><tr><th>C</th><th>Lumpy</th><th></th><th>211</th></tr><tr><td></td><td>C.1</td><td>State diagram</td><td>211</td></tr><tr><td></td><td>C.2</td><td>Stack diagram</td><td>212</td></tr><tr><td></td><td>C.3</td><td>Object diagrams</td><td>213</td></tr><tr><td></td><td>C.4</td><td>Function and class objects</td><td>215</td></tr><tr><td></td><td>C.5</td><td>Class Diagrams</td><td>216</td></tr></tbody></table>",
          "polygon": [
            [
              128.0478515625,
              239.765625
            ],
            [
              527.73046875,
              239.765625
            ],
            [
              527.73046875,
              700.8348770141602
            ],
            [
              128.0478515625,
              700.8348770141602
            ]
          ],
          "bbox": [
            128.0478515625,
            239.765625,
            527.73046875,
            700.8348770141602
          ],
          "children": [
            {
              "id": "/page/12/TableCell/301",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  128.0478515625,
                  239.765625
                ],
                [
                  129.0478515625,
                  239.765625
                ],
                [
                  129.0478515625,
                  240.765625
                ],
                [
                  128.0478515625,
                  240.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                239.765625,
                129.0478515625,
                240.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/302",
              "block_type": "TableCell",
              "html": "<th colspan=\"4\">Preface</th>",
              "polygon": [
                [
                  129.0478515625,
                  239.765625
                ],
                [
                  133.0478515625,
                  239.765625
                ],
                [
                  133.0478515625,
                  240.765625
                ],
                [
                  129.0478515625,
                  240.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                239.765625,
                133.0478515625,
                240.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/303",
              "block_type": "TableCell",
              "html": "<th>1</th>",
              "polygon": [
                [
                  128.0478515625,
                  240.765625
                ],
                [
                  129.0478515625,
                  240.765625
                ],
                [
                  129.0478515625,
                  241.765625
                ],
                [
                  128.0478515625,
                  241.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                240.765625,
                129.0478515625,
                241.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/304",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  129.0478515625,
                  240.765625
                ],
                [
                  130.0478515625,
                  240.765625
                ],
                [
                  130.0478515625,
                  241.765625
                ],
                [
                  129.0478515625,
                  241.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                240.765625,
                130.0478515625,
                241.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/305",
              "block_type": "TableCell",
              "html": "<th>The way of the program</th>",
              "polygon": [
                [
                  130.0478515625,
                  240.765625
                ],
                [
                  131.0478515625,
                  240.765625
                ],
                [
                  131.0478515625,
                  241.765625
                ],
                [
                  130.0478515625,
                  241.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                240.765625,
                131.0478515625,
                241.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/306",
              "block_type": "TableCell",
              "html": "<th>1</th>",
              "polygon": [
                [
                  131.0478515625,
                  240.765625
                ],
                [
                  132.0478515625,
                  240.765625
                ],
                [
                  132.0478515625,
                  241.765625
                ],
                [
                  131.0478515625,
                  241.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                240.765625,
                132.0478515625,
                241.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/307",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  241.765625
                ],
                [
                  129.0478515625,
                  241.765625
                ],
                [
                  129.0478515625,
                  242.765625
                ],
                [
                  128.0478515625,
                  242.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                241.765625,
                129.0478515625,
                242.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/308",
              "block_type": "TableCell",
              "html": "<td>1.1</td>",
              "polygon": [
                [
                  129.0478515625,
                  241.765625
                ],
                [
                  130.0478515625,
                  241.765625
                ],
                [
                  130.0478515625,
                  242.765625
                ],
                [
                  129.0478515625,
                  242.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                241.765625,
                130.0478515625,
                242.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/309",
              "block_type": "TableCell",
              "html": "<td>The Python programming language</td>",
              "polygon": [
                [
                  130.0478515625,
                  241.765625
                ],
                [
                  131.0478515625,
                  241.765625
                ],
                [
                  131.0478515625,
                  242.765625
                ],
                [
                  130.0478515625,
                  242.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                241.765625,
                131.0478515625,
                242.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/310",
              "block_type": "TableCell",
              "html": "<td>1</td>",
              "polygon": [
                [
                  131.0478515625,
                  241.765625
                ],
                [
                  132.0478515625,
                  241.765625
                ],
                [
                  132.0478515625,
                  242.765625
                ],
                [
                  131.0478515625,
                  242.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                241.765625,
                132.0478515625,
                242.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/311",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  242.765625
                ],
                [
                  129.0478515625,
                  242.765625
                ],
                [
                  129.0478515625,
                  243.765625
                ],
                [
                  128.0478515625,
                  243.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                242.765625,
                129.0478515625,
                243.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/312",
              "block_type": "TableCell",
              "html": "<td>1.2</td>",
              "polygon": [
                [
                  129.0478515625,
                  242.765625
                ],
                [
                  130.0478515625,
                  242.765625
                ],
                [
                  130.0478515625,
                  243.765625
                ],
                [
                  129.0478515625,
                  243.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                242.765625,
                130.0478515625,
                243.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/313",
              "block_type": "TableCell",
              "html": "<td>What is a program?</td>",
              "polygon": [
                [
                  130.0478515625,
                  242.765625
                ],
                [
                  131.0478515625,
                  242.765625
                ],
                [
                  131.0478515625,
                  243.765625
                ],
                [
                  130.0478515625,
                  243.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                242.765625,
                131.0478515625,
                243.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/314",
              "block_type": "TableCell",
              "html": "<td>3</td>",
              "polygon": [
                [
                  131.0478515625,
                  242.765625
                ],
                [
                  132.0478515625,
                  242.765625
                ],
                [
                  132.0478515625,
                  243.765625
                ],
                [
                  131.0478515625,
                  243.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                242.765625,
                132.0478515625,
                243.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/315",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  243.765625
                ],
                [
                  129.0478515625,
                  243.765625
                ],
                [
                  129.0478515625,
                  244.765625
                ],
                [
                  128.0478515625,
                  244.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                243.765625,
                129.0478515625,
                244.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/316",
              "block_type": "TableCell",
              "html": "<td>1.3</td>",
              "polygon": [
                [
                  129.0478515625,
                  243.765625
                ],
                [
                  130.0478515625,
                  243.765625
                ],
                [
                  130.0478515625,
                  244.765625
                ],
                [
                  129.0478515625,
                  244.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                243.765625,
                130.0478515625,
                244.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/317",
              "block_type": "TableCell",
              "html": "<td>What is debugging?</td>",
              "polygon": [
                [
                  130.0478515625,
                  243.765625
                ],
                [
                  131.0478515625,
                  243.765625
                ],
                [
                  131.0478515625,
                  244.765625
                ],
                [
                  130.0478515625,
                  244.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                243.765625,
                131.0478515625,
                244.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/318",
              "block_type": "TableCell",
              "html": "<td>3</td>",
              "polygon": [
                [
                  131.0478515625,
                  243.765625
                ],
                [
                  132.0478515625,
                  243.765625
                ],
                [
                  132.0478515625,
                  244.765625
                ],
                [
                  131.0478515625,
                  244.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                243.765625,
                132.0478515625,
                244.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/319",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  244.765625
                ],
                [
                  129.0478515625,
                  244.765625
                ],
                [
                  129.0478515625,
                  245.765625
                ],
                [
                  128.0478515625,
                  245.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                244.765625,
                129.0478515625,
                245.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/320",
              "block_type": "TableCell",
              "html": "<td>1.4</td>",
              "polygon": [
                [
                  129.0478515625,
                  244.765625
                ],
                [
                  130.0478515625,
                  244.765625
                ],
                [
                  130.0478515625,
                  245.765625
                ],
                [
                  129.0478515625,
                  245.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                244.765625,
                130.0478515625,
                245.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/321",
              "block_type": "TableCell",
              "html": "<td>Formal and natural languages</td>",
              "polygon": [
                [
                  130.0478515625,
                  244.765625
                ],
                [
                  131.0478515625,
                  244.765625
                ],
                [
                  131.0478515625,
                  245.765625
                ],
                [
                  130.0478515625,
                  245.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                244.765625,
                131.0478515625,
                245.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/322",
              "block_type": "TableCell",
              "html": "<td>5</td>",
              "polygon": [
                [
                  131.0478515625,
                  244.765625
                ],
                [
                  132.0478515625,
                  244.765625
                ],
                [
                  132.0478515625,
                  245.765625
                ],
                [
                  131.0478515625,
                  245.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                244.765625,
                132.0478515625,
                245.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/323",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  245.765625
                ],
                [
                  129.0478515625,
                  245.765625
                ],
                [
                  129.0478515625,
                  246.765625
                ],
                [
                  128.0478515625,
                  246.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                245.765625,
                129.0478515625,
                246.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/324",
              "block_type": "TableCell",
              "html": "<td>1.5</td>",
              "polygon": [
                [
                  129.0478515625,
                  245.765625
                ],
                [
                  130.0478515625,
                  245.765625
                ],
                [
                  130.0478515625,
                  246.765625
                ],
                [
                  129.0478515625,
                  246.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                245.765625,
                130.0478515625,
                246.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/325",
              "block_type": "TableCell",
              "html": "<td>The first program</td>",
              "polygon": [
                [
                  130.0478515625,
                  245.765625
                ],
                [
                  131.0478515625,
                  245.765625
                ],
                [
                  131.0478515625,
                  246.765625
                ],
                [
                  130.0478515625,
                  246.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                245.765625,
                131.0478515625,
                246.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/326",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  131.0478515625,
                  245.765625
                ],
                [
                  132.0478515625,
                  245.765625
                ],
                [
                  132.0478515625,
                  246.765625
                ],
                [
                  131.0478515625,
                  246.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                245.765625,
                132.0478515625,
                246.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/327",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  246.765625
                ],
                [
                  129.0478515625,
                  246.765625
                ],
                [
                  129.0478515625,
                  247.765625
                ],
                [
                  128.0478515625,
                  247.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                246.765625,
                129.0478515625,
                247.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/328",
              "block_type": "TableCell",
              "html": "<td>1.6</td>",
              "polygon": [
                [
                  129.0478515625,
                  246.765625
                ],
                [
                  130.0478515625,
                  246.765625
                ],
                [
                  130.0478515625,
                  247.765625
                ],
                [
                  129.0478515625,
                  247.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                246.765625,
                130.0478515625,
                247.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/329",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  130.0478515625,
                  246.765625
                ],
                [
                  131.0478515625,
                  246.765625
                ],
                [
                  131.0478515625,
                  247.765625
                ],
                [
                  130.0478515625,
                  247.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                246.765625,
                131.0478515625,
                247.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/330",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  131.0478515625,
                  246.765625
                ],
                [
                  132.0478515625,
                  246.765625
                ],
                [
                  132.0478515625,
                  247.765625
                ],
                [
                  131.0478515625,
                  247.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                246.765625,
                132.0478515625,
                247.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/331",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  247.765625
                ],
                [
                  129.0478515625,
                  247.765625
                ],
                [
                  129.0478515625,
                  248.765625
                ],
                [
                  128.0478515625,
                  248.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                247.765625,
                129.0478515625,
                248.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/332",
              "block_type": "TableCell",
              "html": "<td>1.7</td>",
              "polygon": [
                [
                  129.0478515625,
                  247.765625
                ],
                [
                  130.0478515625,
                  247.765625
                ],
                [
                  130.0478515625,
                  248.765625
                ],
                [
                  129.0478515625,
                  248.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                247.765625,
                130.0478515625,
                248.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/333",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  130.0478515625,
                  247.765625
                ],
                [
                  131.0478515625,
                  247.765625
                ],
                [
                  131.0478515625,
                  248.765625
                ],
                [
                  130.0478515625,
                  248.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                247.765625,
                131.0478515625,
                248.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/334",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  131.0478515625,
                  247.765625
                ],
                [
                  132.0478515625,
                  247.765625
                ],
                [
                  132.0478515625,
                  248.765625
                ],
                [
                  131.0478515625,
                  248.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                247.765625,
                132.0478515625,
                248.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/335",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  248.765625
                ],
                [
                  129.0478515625,
                  248.765625
                ],
                [
                  129.0478515625,
                  249.765625
                ],
                [
                  128.0478515625,
                  249.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                248.765625,
                129.0478515625,
                249.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/336",
              "block_type": "TableCell",
              "html": "<td>1.8</td>",
              "polygon": [
                [
                  129.0478515625,
                  248.765625
                ],
                [
                  130.0478515625,
                  248.765625
                ],
                [
                  130.0478515625,
                  249.765625
                ],
                [
                  129.0478515625,
                  249.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                248.765625,
                130.0478515625,
                249.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/337",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  130.0478515625,
                  248.765625
                ],
                [
                  131.0478515625,
                  248.765625
                ],
                [
                  131.0478515625,
                  249.765625
                ],
                [
                  130.0478515625,
                  249.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                248.765625,
                131.0478515625,
                249.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/338",
              "block_type": "TableCell",
              "html": "<td>9</td>",
              "polygon": [
                [
                  131.0478515625,
                  248.765625
                ],
                [
                  132.0478515625,
                  248.765625
                ],
                [
                  132.0478515625,
                  249.765625
                ],
                [
                  131.0478515625,
                  249.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                248.765625,
                132.0478515625,
                249.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/339",
              "block_type": "TableCell",
              "html": "<th>2</th>",
              "polygon": [
                [
                  128.0478515625,
                  249.765625
                ],
                [
                  129.0478515625,
                  249.765625
                ],
                [
                  129.0478515625,
                  250.765625
                ],
                [
                  128.0478515625,
                  250.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                249.765625,
                129.0478515625,
                250.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/340",
              "block_type": "TableCell",
              "html": "<th colspan=\"4\">Variables, expressions and statements</th>",
              "polygon": [
                [
                  129.0478515625,
                  249.765625
                ],
                [
                  133.0478515625,
                  249.765625
                ],
                [
                  133.0478515625,
                  250.765625
                ],
                [
                  129.0478515625,
                  250.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                249.765625,
                133.0478515625,
                250.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/341",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  250.765625
                ],
                [
                  129.0478515625,
                  250.765625
                ],
                [
                  129.0478515625,
                  251.765625
                ],
                [
                  128.0478515625,
                  251.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                250.765625,
                129.0478515625,
                251.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/342",
              "block_type": "TableCell",
              "html": "<td>2.1</td>",
              "polygon": [
                [
                  129.0478515625,
                  250.765625
                ],
                [
                  130.0478515625,
                  250.765625
                ],
                [
                  130.0478515625,
                  251.765625
                ],
                [
                  129.0478515625,
                  251.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                250.765625,
                130.0478515625,
                251.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/343",
              "block_type": "TableCell",
              "html": "<td>Values and types</td>",
              "polygon": [
                [
                  130.0478515625,
                  250.765625
                ],
                [
                  131.0478515625,
                  250.765625
                ],
                [
                  131.0478515625,
                  251.765625
                ],
                [
                  130.0478515625,
                  251.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                250.765625,
                131.0478515625,
                251.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/344",
              "block_type": "TableCell",
              "html": "<td>11</td>",
              "polygon": [
                [
                  131.0478515625,
                  250.765625
                ],
                [
                  132.0478515625,
                  250.765625
                ],
                [
                  132.0478515625,
                  251.765625
                ],
                [
                  131.0478515625,
                  251.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                250.765625,
                132.0478515625,
                251.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/345",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  251.765625
                ],
                [
                  129.0478515625,
                  251.765625
                ],
                [
                  129.0478515625,
                  252.765625
                ],
                [
                  128.0478515625,
                  252.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                251.765625,
                129.0478515625,
                252.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/346",
              "block_type": "TableCell",
              "html": "<td>2.2</td>",
              "polygon": [
                [
                  129.0478515625,
                  251.765625
                ],
                [
                  130.0478515625,
                  251.765625
                ],
                [
                  130.0478515625,
                  252.765625
                ],
                [
                  129.0478515625,
                  252.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                251.765625,
                130.0478515625,
                252.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/347",
              "block_type": "TableCell",
              "html": "<td>Variables</td>",
              "polygon": [
                [
                  130.0478515625,
                  251.765625
                ],
                [
                  131.0478515625,
                  251.765625
                ],
                [
                  131.0478515625,
                  252.765625
                ],
                [
                  130.0478515625,
                  252.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                251.765625,
                131.0478515625,
                252.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/348",
              "block_type": "TableCell",
              "html": "<td>12</td>",
              "polygon": [
                [
                  131.0478515625,
                  251.765625
                ],
                [
                  132.0478515625,
                  251.765625
                ],
                [
                  132.0478515625,
                  252.765625
                ],
                [
                  131.0478515625,
                  252.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                251.765625,
                132.0478515625,
                252.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/349",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  252.765625
                ],
                [
                  129.0478515625,
                  252.765625
                ],
                [
                  129.0478515625,
                  253.765625
                ],
                [
                  128.0478515625,
                  253.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                252.765625,
                129.0478515625,
                253.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/350",
              "block_type": "TableCell",
              "html": "<td>2.3</td>",
              "polygon": [
                [
                  129.0478515625,
                  252.765625
                ],
                [
                  130.0478515625,
                  252.765625
                ],
                [
                  130.0478515625,
                  253.765625
                ],
                [
                  129.0478515625,
                  253.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                252.765625,
                130.0478515625,
                253.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/351",
              "block_type": "TableCell",
              "html": "<td>Variable names and keywords</td>",
              "polygon": [
                [
                  130.0478515625,
                  252.765625
                ],
                [
                  131.0478515625,
                  252.765625
                ],
                [
                  131.0478515625,
                  253.765625
                ],
                [
                  130.0478515625,
                  253.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                252.765625,
                131.0478515625,
                253.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/352",
              "block_type": "TableCell",
              "html": "<td>12</td>",
              "polygon": [
                [
                  131.0478515625,
                  252.765625
                ],
                [
                  132.0478515625,
                  252.765625
                ],
                [
                  132.0478515625,
                  253.765625
                ],
                [
                  131.0478515625,
                  253.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                252.765625,
                132.0478515625,
                253.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/353",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  253.765625
                ],
                [
                  129.0478515625,
                  253.765625
                ],
                [
                  129.0478515625,
                  254.765625
                ],
                [
                  128.0478515625,
                  254.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                253.765625,
                129.0478515625,
                254.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/354",
              "block_type": "TableCell",
              "html": "<td>2.4</td>",
              "polygon": [
                [
                  129.0478515625,
                  253.765625
                ],
                [
                  130.0478515625,
                  253.765625
                ],
                [
                  130.0478515625,
                  254.765625
                ],
                [
                  129.0478515625,
                  254.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                253.765625,
                130.0478515625,
                254.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/355",
              "block_type": "TableCell",
              "html": "<td>Operators and operands</td>",
              "polygon": [
                [
                  130.0478515625,
                  253.765625
                ],
                [
                  131.0478515625,
                  253.765625
                ],
                [
                  131.0478515625,
                  254.765625
                ],
                [
                  130.0478515625,
                  254.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                253.765625,
                131.0478515625,
                254.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/356",
              "block_type": "TableCell",
              "html": "<td>13</td>",
              "polygon": [
                [
                  131.0478515625,
                  253.765625
                ],
                [
                  132.0478515625,
                  253.765625
                ],
                [
                  132.0478515625,
                  254.765625
                ],
                [
                  131.0478515625,
                  254.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                253.765625,
                132.0478515625,
                254.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/357",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  254.765625
                ],
                [
                  129.0478515625,
                  254.765625
                ],
                [
                  129.0478515625,
                  255.765625
                ],
                [
                  128.0478515625,
                  255.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                254.765625,
                129.0478515625,
                255.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/358",
              "block_type": "TableCell",
              "html": "<td>2.5</td>",
              "polygon": [
                [
                  129.0478515625,
                  254.765625
                ],
                [
                  130.0478515625,
                  254.765625
                ],
                [
                  130.0478515625,
                  255.765625
                ],
                [
                  129.0478515625,
                  255.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                254.765625,
                130.0478515625,
                255.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/359",
              "block_type": "TableCell",
              "html": "<td>Expressions and statements</td>",
              "polygon": [
                [
                  130.0478515625,
                  254.765625
                ],
                [
                  131.0478515625,
                  254.765625
                ],
                [
                  131.0478515625,
                  255.765625
                ],
                [
                  130.0478515625,
                  255.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                254.765625,
                131.0478515625,
                255.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/360",
              "block_type": "TableCell",
              "html": "<td>14</td>",
              "polygon": [
                [
                  131.0478515625,
                  254.765625
                ],
                [
                  132.0478515625,
                  254.765625
                ],
                [
                  132.0478515625,
                  255.765625
                ],
                [
                  131.0478515625,
                  255.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                254.765625,
                132.0478515625,
                255.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/361",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  255.765625
                ],
                [
                  129.0478515625,
                  255.765625
                ],
                [
                  129.0478515625,
                  256.765625
                ],
                [
                  128.0478515625,
                  256.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                255.765625,
                129.0478515625,
                256.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/362",
              "block_type": "TableCell",
              "html": "<td>2.6</td>",
              "polygon": [
                [
                  129.0478515625,
                  255.765625
                ],
                [
                  130.0478515625,
                  255.765625
                ],
                [
                  130.0478515625,
                  256.765625
                ],
                [
                  129.0478515625,
                  256.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                255.765625,
                130.0478515625,
                256.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/363",
              "block_type": "TableCell",
              "html": "<td>Interactive mode and script mode</td>",
              "polygon": [
                [
                  130.0478515625,
                  255.765625
                ],
                [
                  131.0478515625,
                  255.765625
                ],
                [
                  131.0478515625,
                  256.765625
                ],
                [
                  130.0478515625,
                  256.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                255.765625,
                131.0478515625,
                256.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/364",
              "block_type": "TableCell",
              "html": "<td>14</td>",
              "polygon": [
                [
                  131.0478515625,
                  255.765625
                ],
                [
                  132.0478515625,
                  255.765625
                ],
                [
                  132.0478515625,
                  256.765625
                ],
                [
                  131.0478515625,
                  256.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                255.765625,
                132.0478515625,
                256.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/365",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  256.765625
                ],
                [
                  129.0478515625,
                  256.765625
                ],
                [
                  129.0478515625,
                  257.765625
                ],
                [
                  128.0478515625,
                  257.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                256.765625,
                129.0478515625,
                257.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/366",
              "block_type": "TableCell",
              "html": "<td>2.7</td>",
              "polygon": [
                [
                  129.0478515625,
                  256.765625
                ],
                [
                  130.0478515625,
                  256.765625
                ],
                [
                  130.0478515625,
                  257.765625
                ],
                [
                  129.0478515625,
                  257.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                256.765625,
                130.0478515625,
                257.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/367",
              "block_type": "TableCell",
              "html": "<td>Order of operations</td>",
              "polygon": [
                [
                  130.0478515625,
                  256.765625
                ],
                [
                  131.0478515625,
                  256.765625
                ],
                [
                  131.0478515625,
                  257.765625
                ],
                [
                  130.0478515625,
                  257.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                256.765625,
                131.0478515625,
                257.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/368",
              "block_type": "TableCell",
              "html": "<td>15</td>",
              "polygon": [
                [
                  131.0478515625,
                  256.765625
                ],
                [
                  132.0478515625,
                  256.765625
                ],
                [
                  132.0478515625,
                  257.765625
                ],
                [
                  131.0478515625,
                  257.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                256.765625,
                132.0478515625,
                257.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/369",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  257.765625
                ],
                [
                  129.0478515625,
                  257.765625
                ],
                [
                  129.0478515625,
                  258.765625
                ],
                [
                  128.0478515625,
                  258.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                257.765625,
                129.0478515625,
                258.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/370",
              "block_type": "TableCell",
              "html": "<td>2.8</td>",
              "polygon": [
                [
                  129.0478515625,
                  257.765625
                ],
                [
                  130.0478515625,
                  257.765625
                ],
                [
                  130.0478515625,
                  258.765625
                ],
                [
                  129.0478515625,
                  258.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                257.765625,
                130.0478515625,
                258.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/371",
              "block_type": "TableCell",
              "html": "<td>String operations</td>",
              "polygon": [
                [
                  130.0478515625,
                  257.765625
                ],
                [
                  131.0478515625,
                  257.765625
                ],
                [
                  131.0478515625,
                  258.765625
                ],
                [
                  130.0478515625,
                  258.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                257.765625,
                131.0478515625,
                258.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/372",
              "block_type": "TableCell",
              "html": "<td>15</td>",
              "polygon": [
                [
                  131.0478515625,
                  257.765625
                ],
                [
                  132.0478515625,
                  257.765625
                ],
                [
                  132.0478515625,
                  258.765625
                ],
                [
                  131.0478515625,
                  258.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                257.765625,
                132.0478515625,
                258.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/373",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  258.765625
                ],
                [
                  129.0478515625,
                  258.765625
                ],
                [
                  129.0478515625,
                  259.765625
                ],
                [
                  128.0478515625,
                  259.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                258.765625,
                129.0478515625,
                259.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/374",
              "block_type": "TableCell",
              "html": "<td>2.9</td>",
              "polygon": [
                [
                  129.0478515625,
                  258.765625
                ],
                [
                  130.0478515625,
                  258.765625
                ],
                [
                  130.0478515625,
                  259.765625
                ],
                [
                  129.0478515625,
                  259.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                258.765625,
                130.0478515625,
                259.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/375",
              "block_type": "TableCell",
              "html": "<td>Comments</td>",
              "polygon": [
                [
                  130.0478515625,
                  258.765625
                ],
                [
                  131.0478515625,
                  258.765625
                ],
                [
                  131.0478515625,
                  259.765625
                ],
                [
                  130.0478515625,
                  259.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                258.765625,
                131.0478515625,
                259.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/376",
              "block_type": "TableCell",
              "html": "<td>16</td>",
              "polygon": [
                [
                  131.0478515625,
                  258.765625
                ],
                [
                  132.0478515625,
                  258.765625
                ],
                [
                  132.0478515625,
                  259.765625
                ],
                [
                  131.0478515625,
                  259.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                258.765625,
                132.0478515625,
                259.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/377",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  259.765625
                ],
                [
                  129.0478515625,
                  259.765625
                ],
                [
                  129.0478515625,
                  260.765625
                ],
                [
                  128.0478515625,
                  260.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                259.765625,
                129.0478515625,
                260.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/378",
              "block_type": "TableCell",
              "html": "<td>2.10</td>",
              "polygon": [
                [
                  129.0478515625,
                  259.765625
                ],
                [
                  130.0478515625,
                  259.765625
                ],
                [
                  130.0478515625,
                  260.765625
                ],
                [
                  129.0478515625,
                  260.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                259.765625,
                130.0478515625,
                260.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/379",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  130.0478515625,
                  259.765625
                ],
                [
                  131.0478515625,
                  259.765625
                ],
                [
                  131.0478515625,
                  260.765625
                ],
                [
                  130.0478515625,
                  260.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                259.765625,
                131.0478515625,
                260.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/380",
              "block_type": "TableCell",
              "html": "<td>16</td>",
              "polygon": [
                [
                  131.0478515625,
                  259.765625
                ],
                [
                  132.0478515625,
                  259.765625
                ],
                [
                  132.0478515625,
                  260.765625
                ],
                [
                  131.0478515625,
                  260.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                259.765625,
                132.0478515625,
                260.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/381",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  260.765625
                ],
                [
                  129.0478515625,
                  260.765625
                ],
                [
                  129.0478515625,
                  261.765625
                ],
                [
                  128.0478515625,
                  261.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                260.765625,
                129.0478515625,
                261.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/382",
              "block_type": "TableCell",
              "html": "<td>2.11</td>",
              "polygon": [
                [
                  129.0478515625,
                  260.765625
                ],
                [
                  130.0478515625,
                  260.765625
                ],
                [
                  130.0478515625,
                  261.765625
                ],
                [
                  129.0478515625,
                  261.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                260.765625,
                130.0478515625,
                261.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/383",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  130.0478515625,
                  260.765625
                ],
                [
                  131.0478515625,
                  260.765625
                ],
                [
                  131.0478515625,
                  261.765625
                ],
                [
                  130.0478515625,
                  261.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                260.765625,
                131.0478515625,
                261.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/384",
              "block_type": "TableCell",
              "html": "<td>17</td>",
              "polygon": [
                [
                  131.0478515625,
                  260.765625
                ],
                [
                  132.0478515625,
                  260.765625
                ],
                [
                  132.0478515625,
                  261.765625
                ],
                [
                  131.0478515625,
                  261.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                260.765625,
                132.0478515625,
                261.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/385",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  128.0478515625,
                  261.765625
                ],
                [
                  129.0478515625,
                  261.765625
                ],
                [
                  129.0478515625,
                  262.765625
                ],
                [
                  128.0478515625,
                  262.765625
                ]
              ],
              "bbox": [
                128.0478515625,
                261.765625,
                129.0478515625,
                262.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/386",
              "block_type": "TableCell",
              "html": "<td>2.12</td>",
              "polygon": [
                [
                  129.0478515625,
                  261.765625
                ],
                [
                  130.0478515625,
                  261.765625
                ],
                [
                  130.0478515625,
                  262.765625
                ],
                [
                  129.0478515625,
                  262.765625
                ]
              ],
              "bbox": [
                129.0478515625,
                261.765625,
                130.0478515625,
                262.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/387",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  130.0478515625,
                  261.765625
                ],
                [
                  131.0478515625,
                  261.765625
                ],
                [
                  131.0478515625,
                  262.765625
                ],
                [
                  130.0478515625,
                  262.765625
                ]
              ],
              "bbox": [
                130.0478515625,
                261.765625,
                131.0478515625,
                262.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/12/TableCell/388",
              "block_type": "TableCell",
              "html": "<td>18</td>",
              "polygon": [
                [
                  131.0478515625,
                  261.765625
                ],
                [
                  132.0478515625,
                  261.765625
                ],
                [
                  132.0478515625,
                  262.765625
                ],
                [
                  131.0478515625,
                  262.765625
                ]
              ],
              "bbox": [
                131.0478515625,
                261.765625,
                132.0478515625,
                262.765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/374",
              "block_type": "TableCell",
              "html": "<th>3</th>",
              "polygon": [
                [
                  86.39999389648438,
                  85.271484375
                ],
                [
                  87.39999389648438,
                  85.271484375
                ],
                [
                  87.39999389648438,
                  86.271484375
                ],
                [
                  86.39999389648438,
                  86.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                85.271484375,
                87.39999389648438,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/375",
              "block_type": "TableCell",
              "html": "<th>Functions</th>",
              "polygon": [
                [
                  87.39999389648438,
                  85.271484375
                ],
                [
                  88.39999389648438,
                  85.271484375
                ],
                [
                  88.39999389648438,
                  86.271484375
                ],
                [
                  87.39999389648438,
                  86.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                85.271484375,
                88.39999389648438,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/376",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  88.39999389648438,
                  85.271484375
                ],
                [
                  89.39999389648438,
                  85.271484375
                ],
                [
                  89.39999389648438,
                  86.271484375
                ],
                [
                  88.39999389648438,
                  86.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                85.271484375,
                89.39999389648438,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/377",
              "block_type": "TableCell",
              "html": "<th>19</th>",
              "polygon": [
                [
                  89.39999389648438,
                  85.271484375
                ],
                [
                  90.39999389648438,
                  85.271484375
                ],
                [
                  90.39999389648438,
                  86.271484375
                ],
                [
                  89.39999389648438,
                  86.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                85.271484375,
                90.39999389648438,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/378",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  86.271484375
                ],
                [
                  87.39999389648438,
                  86.271484375
                ],
                [
                  87.39999389648438,
                  87.271484375
                ],
                [
                  86.39999389648438,
                  87.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                86.271484375,
                87.39999389648438,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/379",
              "block_type": "TableCell",
              "html": "<td>3.1</td>",
              "polygon": [
                [
                  87.39999389648438,
                  86.271484375
                ],
                [
                  88.39999389648438,
                  86.271484375
                ],
                [
                  88.39999389648438,
                  87.271484375
                ],
                [
                  87.39999389648438,
                  87.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                86.271484375,
                88.39999389648438,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/380",
              "block_type": "TableCell",
              "html": "<td>Function calls</td>",
              "polygon": [
                [
                  88.39999389648438,
                  86.271484375
                ],
                [
                  89.39999389648438,
                  86.271484375
                ],
                [
                  89.39999389648438,
                  87.271484375
                ],
                [
                  88.39999389648438,
                  87.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                86.271484375,
                89.39999389648438,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/381",
              "block_type": "TableCell",
              "html": "<td>19</td>",
              "polygon": [
                [
                  89.39999389648438,
                  86.271484375
                ],
                [
                  90.39999389648438,
                  86.271484375
                ],
                [
                  90.39999389648438,
                  87.271484375
                ],
                [
                  89.39999389648438,
                  87.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                86.271484375,
                90.39999389648438,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/382",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  87.271484375
                ],
                [
                  87.39999389648438,
                  87.271484375
                ],
                [
                  87.39999389648438,
                  88.271484375
                ],
                [
                  86.39999389648438,
                  88.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                87.271484375,
                87.39999389648438,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/383",
              "block_type": "TableCell",
              "html": "<td>3.2</td>",
              "polygon": [
                [
                  87.39999389648438,
                  87.271484375
                ],
                [
                  88.39999389648438,
                  87.271484375
                ],
                [
                  88.39999389648438,
                  88.271484375
                ],
                [
                  87.39999389648438,
                  88.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                87.271484375,
                88.39999389648438,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/384",
              "block_type": "TableCell",
              "html": "<td>Type conversion functions</td>",
              "polygon": [
                [
                  88.39999389648438,
                  87.271484375
                ],
                [
                  89.39999389648438,
                  87.271484375
                ],
                [
                  89.39999389648438,
                  88.271484375
                ],
                [
                  88.39999389648438,
                  88.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                87.271484375,
                89.39999389648438,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/385",
              "block_type": "TableCell",
              "html": "<td>19</td>",
              "polygon": [
                [
                  89.39999389648438,
                  87.271484375
                ],
                [
                  90.39999389648438,
                  87.271484375
                ],
                [
                  90.39999389648438,
                  88.271484375
                ],
                [
                  89.39999389648438,
                  88.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                87.271484375,
                90.39999389648438,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/386",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  88.271484375
                ],
                [
                  87.39999389648438,
                  88.271484375
                ],
                [
                  87.39999389648438,
                  89.271484375
                ],
                [
                  86.39999389648438,
                  89.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                88.271484375,
                87.39999389648438,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/387",
              "block_type": "TableCell",
              "html": "<td>3.3</td>",
              "polygon": [
                [
                  87.39999389648438,
                  88.271484375
                ],
                [
                  88.39999389648438,
                  88.271484375
                ],
                [
                  88.39999389648438,
                  89.271484375
                ],
                [
                  87.39999389648438,
                  89.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                88.271484375,
                88.39999389648438,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/388",
              "block_type": "TableCell",
              "html": "<td>Math functions</td>",
              "polygon": [
                [
                  88.39999389648438,
                  88.271484375
                ],
                [
                  89.39999389648438,
                  88.271484375
                ],
                [
                  89.39999389648438,
                  89.271484375
                ],
                [
                  88.39999389648438,
                  89.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                88.271484375,
                89.39999389648438,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/389",
              "block_type": "TableCell",
              "html": "<td>20</td>",
              "polygon": [
                [
                  89.39999389648438,
                  88.271484375
                ],
                [
                  90.39999389648438,
                  88.271484375
                ],
                [
                  90.39999389648438,
                  89.271484375
                ],
                [
                  89.39999389648438,
                  89.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                88.271484375,
                90.39999389648438,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/390",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  89.271484375
                ],
                [
                  87.39999389648438,
                  89.271484375
                ],
                [
                  87.39999389648438,
                  90.271484375
                ],
                [
                  86.39999389648438,
                  90.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                89.271484375,
                87.39999389648438,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/391",
              "block_type": "TableCell",
              "html": "<td>3.4</td>",
              "polygon": [
                [
                  87.39999389648438,
                  89.271484375
                ],
                [
                  88.39999389648438,
                  89.271484375
                ],
                [
                  88.39999389648438,
                  90.271484375
                ],
                [
                  87.39999389648438,
                  90.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                89.271484375,
                88.39999389648438,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/392",
              "block_type": "TableCell",
              "html": "<td>Composition</td>",
              "polygon": [
                [
                  88.39999389648438,
                  89.271484375
                ],
                [
                  89.39999389648438,
                  89.271484375
                ],
                [
                  89.39999389648438,
                  90.271484375
                ],
                [
                  88.39999389648438,
                  90.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                89.271484375,
                89.39999389648438,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/393",
              "block_type": "TableCell",
              "html": "<td>21</td>",
              "polygon": [
                [
                  89.39999389648438,
                  89.271484375
                ],
                [
                  90.39999389648438,
                  89.271484375
                ],
                [
                  90.39999389648438,
                  90.271484375
                ],
                [
                  89.39999389648438,
                  90.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                89.271484375,
                90.39999389648438,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/394",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  90.271484375
                ],
                [
                  87.39999389648438,
                  90.271484375
                ],
                [
                  87.39999389648438,
                  91.271484375
                ],
                [
                  86.39999389648438,
                  91.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                90.271484375,
                87.39999389648438,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/395",
              "block_type": "TableCell",
              "html": "<td>3.5</td>",
              "polygon": [
                [
                  87.39999389648438,
                  90.271484375
                ],
                [
                  88.39999389648438,
                  90.271484375
                ],
                [
                  88.39999389648438,
                  91.271484375
                ],
                [
                  87.39999389648438,
                  91.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                90.271484375,
                88.39999389648438,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/396",
              "block_type": "TableCell",
              "html": "<td>Adding new functions</td>",
              "polygon": [
                [
                  88.39999389648438,
                  90.271484375
                ],
                [
                  89.39999389648438,
                  90.271484375
                ],
                [
                  89.39999389648438,
                  91.271484375
                ],
                [
                  88.39999389648438,
                  91.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                90.271484375,
                89.39999389648438,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/397",
              "block_type": "TableCell",
              "html": "<td>21</td>",
              "polygon": [
                [
                  89.39999389648438,
                  90.271484375
                ],
                [
                  90.39999389648438,
                  90.271484375
                ],
                [
                  90.39999389648438,
                  91.271484375
                ],
                [
                  89.39999389648438,
                  91.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                90.271484375,
                90.39999389648438,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/398",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  91.271484375
                ],
                [
                  87.39999389648438,
                  91.271484375
                ],
                [
                  87.39999389648438,
                  92.271484375
                ],
                [
                  86.39999389648438,
                  92.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                91.271484375,
                87.39999389648438,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/399",
              "block_type": "TableCell",
              "html": "<td>3.6</td>",
              "polygon": [
                [
                  87.39999389648438,
                  91.271484375
                ],
                [
                  88.39999389648438,
                  91.271484375
                ],
                [
                  88.39999389648438,
                  92.271484375
                ],
                [
                  87.39999389648438,
                  92.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                91.271484375,
                88.39999389648438,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/400",
              "block_type": "TableCell",
              "html": "<td>Definitions and uses</td>",
              "polygon": [
                [
                  88.39999389648438,
                  91.271484375
                ],
                [
                  89.39999389648438,
                  91.271484375
                ],
                [
                  89.39999389648438,
                  92.271484375
                ],
                [
                  88.39999389648438,
                  92.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                91.271484375,
                89.39999389648438,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/401",
              "block_type": "TableCell",
              "html": "<td>22</td>",
              "polygon": [
                [
                  89.39999389648438,
                  91.271484375
                ],
                [
                  90.39999389648438,
                  91.271484375
                ],
                [
                  90.39999389648438,
                  92.271484375
                ],
                [
                  89.39999389648438,
                  92.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                91.271484375,
                90.39999389648438,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/402",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  92.271484375
                ],
                [
                  87.39999389648438,
                  92.271484375
                ],
                [
                  87.39999389648438,
                  93.271484375
                ],
                [
                  86.39999389648438,
                  93.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                92.271484375,
                87.39999389648438,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/403",
              "block_type": "TableCell",
              "html": "<td>3.7</td>",
              "polygon": [
                [
                  87.39999389648438,
                  92.271484375
                ],
                [
                  88.39999389648438,
                  92.271484375
                ],
                [
                  88.39999389648438,
                  93.271484375
                ],
                [
                  87.39999389648438,
                  93.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                92.271484375,
                88.39999389648438,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/404",
              "block_type": "TableCell",
              "html": "<td>Flow of execution</td>",
              "polygon": [
                [
                  88.39999389648438,
                  92.271484375
                ],
                [
                  89.39999389648438,
                  92.271484375
                ],
                [
                  89.39999389648438,
                  93.271484375
                ],
                [
                  88.39999389648438,
                  93.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                92.271484375,
                89.39999389648438,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/405",
              "block_type": "TableCell",
              "html": "<td>23</td>",
              "polygon": [
                [
                  89.39999389648438,
                  92.271484375
                ],
                [
                  90.39999389648438,
                  92.271484375
                ],
                [
                  90.39999389648438,
                  93.271484375
                ],
                [
                  89.39999389648438,
                  93.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                92.271484375,
                90.39999389648438,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/406",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  93.271484375
                ],
                [
                  87.39999389648438,
                  93.271484375
                ],
                [
                  87.39999389648438,
                  94.271484375
                ],
                [
                  86.39999389648438,
                  94.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                93.271484375,
                87.39999389648438,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/407",
              "block_type": "TableCell",
              "html": "<td>3.8</td>",
              "polygon": [
                [
                  87.39999389648438,
                  93.271484375
                ],
                [
                  88.39999389648438,
                  93.271484375
                ],
                [
                  88.39999389648438,
                  94.271484375
                ],
                [
                  87.39999389648438,
                  94.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                93.271484375,
                88.39999389648438,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/408",
              "block_type": "TableCell",
              "html": "<td>Parameters and arguments</td>",
              "polygon": [
                [
                  88.39999389648438,
                  93.271484375
                ],
                [
                  89.39999389648438,
                  93.271484375
                ],
                [
                  89.39999389648438,
                  94.271484375
                ],
                [
                  88.39999389648438,
                  94.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                93.271484375,
                89.39999389648438,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/409",
              "block_type": "TableCell",
              "html": "<td>23</td>",
              "polygon": [
                [
                  89.39999389648438,
                  93.271484375
                ],
                [
                  90.39999389648438,
                  93.271484375
                ],
                [
                  90.39999389648438,
                  94.271484375
                ],
                [
                  89.39999389648438,
                  94.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                93.271484375,
                90.39999389648438,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/410",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  94.271484375
                ],
                [
                  87.39999389648438,
                  94.271484375
                ],
                [
                  87.39999389648438,
                  95.271484375
                ],
                [
                  86.39999389648438,
                  95.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                94.271484375,
                87.39999389648438,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/411",
              "block_type": "TableCell",
              "html": "<td>3.9</td>",
              "polygon": [
                [
                  87.39999389648438,
                  94.271484375
                ],
                [
                  88.39999389648438,
                  94.271484375
                ],
                [
                  88.39999389648438,
                  95.271484375
                ],
                [
                  87.39999389648438,
                  95.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                94.271484375,
                88.39999389648438,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/412",
              "block_type": "TableCell",
              "html": "<td>Variables and parameters are local</td>",
              "polygon": [
                [
                  88.39999389648438,
                  94.271484375
                ],
                [
                  89.39999389648438,
                  94.271484375
                ],
                [
                  89.39999389648438,
                  95.271484375
                ],
                [
                  88.39999389648438,
                  95.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                94.271484375,
                89.39999389648438,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/413",
              "block_type": "TableCell",
              "html": "<td>24</td>",
              "polygon": [
                [
                  89.39999389648438,
                  94.271484375
                ],
                [
                  90.39999389648438,
                  94.271484375
                ],
                [
                  90.39999389648438,
                  95.271484375
                ],
                [
                  89.39999389648438,
                  95.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                94.271484375,
                90.39999389648438,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/414",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  95.271484375
                ],
                [
                  87.39999389648438,
                  95.271484375
                ],
                [
                  87.39999389648438,
                  96.271484375
                ],
                [
                  86.39999389648438,
                  96.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                95.271484375,
                87.39999389648438,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/415",
              "block_type": "TableCell",
              "html": "<td>3.10</td>",
              "polygon": [
                [
                  87.39999389648438,
                  95.271484375
                ],
                [
                  88.39999389648438,
                  95.271484375
                ],
                [
                  88.39999389648438,
                  96.271484375
                ],
                [
                  87.39999389648438,
                  96.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                95.271484375,
                88.39999389648438,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/416",
              "block_type": "TableCell",
              "html": "<td>Stack diagrams</td>",
              "polygon": [
                [
                  88.39999389648438,
                  95.271484375
                ],
                [
                  89.39999389648438,
                  95.271484375
                ],
                [
                  89.39999389648438,
                  96.271484375
                ],
                [
                  88.39999389648438,
                  96.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                95.271484375,
                89.39999389648438,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/417",
              "block_type": "TableCell",
              "html": "<td>25</td>",
              "polygon": [
                [
                  89.39999389648438,
                  95.271484375
                ],
                [
                  90.39999389648438,
                  95.271484375
                ],
                [
                  90.39999389648438,
                  96.271484375
                ],
                [
                  89.39999389648438,
                  96.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                95.271484375,
                90.39999389648438,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/418",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  96.271484375
                ],
                [
                  87.39999389648438,
                  96.271484375
                ],
                [
                  87.39999389648438,
                  97.271484375
                ],
                [
                  86.39999389648438,
                  97.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                96.271484375,
                87.39999389648438,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/419",
              "block_type": "TableCell",
              "html": "<td>3.11</td>",
              "polygon": [
                [
                  87.39999389648438,
                  96.271484375
                ],
                [
                  88.39999389648438,
                  96.271484375
                ],
                [
                  88.39999389648438,
                  97.271484375
                ],
                [
                  87.39999389648438,
                  97.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                96.271484375,
                88.39999389648438,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/420",
              "block_type": "TableCell",
              "html": "<td>Fruitful functions and void functions</td>",
              "polygon": [
                [
                  88.39999389648438,
                  96.271484375
                ],
                [
                  89.39999389648438,
                  96.271484375
                ],
                [
                  89.39999389648438,
                  97.271484375
                ],
                [
                  88.39999389648438,
                  97.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                96.271484375,
                89.39999389648438,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/421",
              "block_type": "TableCell",
              "html": "<td>26</td>",
              "polygon": [
                [
                  89.39999389648438,
                  96.271484375
                ],
                [
                  90.39999389648438,
                  96.271484375
                ],
                [
                  90.39999389648438,
                  97.271484375
                ],
                [
                  89.39999389648438,
                  97.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                96.271484375,
                90.39999389648438,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/422",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  97.271484375
                ],
                [
                  87.39999389648438,
                  97.271484375
                ],
                [
                  87.39999389648438,
                  98.271484375
                ],
                [
                  86.39999389648438,
                  98.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                97.271484375,
                87.39999389648438,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/423",
              "block_type": "TableCell",
              "html": "<td>3.12</td>",
              "polygon": [
                [
                  87.39999389648438,
                  97.271484375
                ],
                [
                  88.39999389648438,
                  97.271484375
                ],
                [
                  88.39999389648438,
                  98.271484375
                ],
                [
                  87.39999389648438,
                  98.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                97.271484375,
                88.39999389648438,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/424",
              "block_type": "TableCell",
              "html": "<td>Why functions?</td>",
              "polygon": [
                [
                  88.39999389648438,
                  97.271484375
                ],
                [
                  89.39999389648438,
                  97.271484375
                ],
                [
                  89.39999389648438,
                  98.271484375
                ],
                [
                  88.39999389648438,
                  98.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                97.271484375,
                89.39999389648438,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/425",
              "block_type": "TableCell",
              "html": "<td>26</td>",
              "polygon": [
                [
                  89.39999389648438,
                  97.271484375
                ],
                [
                  90.39999389648438,
                  97.271484375
                ],
                [
                  90.39999389648438,
                  98.271484375
                ],
                [
                  89.39999389648438,
                  98.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                97.271484375,
                90.39999389648438,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/426",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  98.271484375
                ],
                [
                  87.39999389648438,
                  98.271484375
                ],
                [
                  87.39999389648438,
                  99.271484375
                ],
                [
                  86.39999389648438,
                  99.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                98.271484375,
                87.39999389648438,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/427",
              "block_type": "TableCell",
              "html": "<td>3.13</td>",
              "polygon": [
                [
                  87.39999389648438,
                  98.271484375
                ],
                [
                  88.39999389648438,
                  98.271484375
                ],
                [
                  88.39999389648438,
                  99.271484375
                ],
                [
                  87.39999389648438,
                  99.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                98.271484375,
                88.39999389648438,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/428",
              "block_type": "TableCell",
              "html": "<td>Importing with from</td>",
              "polygon": [
                [
                  88.39999389648438,
                  98.271484375
                ],
                [
                  89.39999389648438,
                  98.271484375
                ],
                [
                  89.39999389648438,
                  99.271484375
                ],
                [
                  88.39999389648438,
                  99.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                98.271484375,
                89.39999389648438,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/429",
              "block_type": "TableCell",
              "html": "<td>27</td>",
              "polygon": [
                [
                  89.39999389648438,
                  98.271484375
                ],
                [
                  90.39999389648438,
                  98.271484375
                ],
                [
                  90.39999389648438,
                  99.271484375
                ],
                [
                  89.39999389648438,
                  99.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                98.271484375,
                90.39999389648438,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/430",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  99.271484375
                ],
                [
                  87.39999389648438,
                  99.271484375
                ],
                [
                  87.39999389648438,
                  100.271484375
                ],
                [
                  86.39999389648438,
                  100.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                99.271484375,
                87.39999389648438,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/431",
              "block_type": "TableCell",
              "html": "<td>3.14</td>",
              "polygon": [
                [
                  87.39999389648438,
                  99.271484375
                ],
                [
                  88.39999389648438,
                  99.271484375
                ],
                [
                  88.39999389648438,
                  100.271484375
                ],
                [
                  87.39999389648438,
                  100.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                99.271484375,
                88.39999389648438,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/432",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  88.39999389648438,
                  99.271484375
                ],
                [
                  89.39999389648438,
                  99.271484375
                ],
                [
                  89.39999389648438,
                  100.271484375
                ],
                [
                  88.39999389648438,
                  100.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                99.271484375,
                89.39999389648438,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/433",
              "block_type": "TableCell",
              "html": "<td>27</td>",
              "polygon": [
                [
                  89.39999389648438,
                  99.271484375
                ],
                [
                  90.39999389648438,
                  99.271484375
                ],
                [
                  90.39999389648438,
                  100.271484375
                ],
                [
                  89.39999389648438,
                  100.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                99.271484375,
                90.39999389648438,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/434",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  100.271484375
                ],
                [
                  87.39999389648438,
                  100.271484375
                ],
                [
                  87.39999389648438,
                  101.271484375
                ],
                [
                  86.39999389648438,
                  101.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                100.271484375,
                87.39999389648438,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/435",
              "block_type": "TableCell",
              "html": "<td>3.15</td>",
              "polygon": [
                [
                  87.39999389648438,
                  100.271484375
                ],
                [
                  88.39999389648438,
                  100.271484375
                ],
                [
                  88.39999389648438,
                  101.271484375
                ],
                [
                  87.39999389648438,
                  101.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                100.271484375,
                88.39999389648438,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/436",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  88.39999389648438,
                  100.271484375
                ],
                [
                  89.39999389648438,
                  100.271484375
                ],
                [
                  89.39999389648438,
                  101.271484375
                ],
                [
                  88.39999389648438,
                  101.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                100.271484375,
                89.39999389648438,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/437",
              "block_type": "TableCell",
              "html": "<td>28</td>",
              "polygon": [
                [
                  89.39999389648438,
                  100.271484375
                ],
                [
                  90.39999389648438,
                  100.271484375
                ],
                [
                  90.39999389648438,
                  101.271484375
                ],
                [
                  89.39999389648438,
                  101.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                100.271484375,
                90.39999389648438,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/438",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  101.271484375
                ],
                [
                  87.39999389648438,
                  101.271484375
                ],
                [
                  87.39999389648438,
                  102.271484375
                ],
                [
                  86.39999389648438,
                  102.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                101.271484375,
                87.39999389648438,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/439",
              "block_type": "TableCell",
              "html": "<td>3.16</td>",
              "polygon": [
                [
                  87.39999389648438,
                  101.271484375
                ],
                [
                  88.39999389648438,
                  101.271484375
                ],
                [
                  88.39999389648438,
                  102.271484375
                ],
                [
                  87.39999389648438,
                  102.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                101.271484375,
                88.39999389648438,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/440",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  88.39999389648438,
                  101.271484375
                ],
                [
                  89.39999389648438,
                  101.271484375
                ],
                [
                  89.39999389648438,
                  102.271484375
                ],
                [
                  88.39999389648438,
                  102.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                101.271484375,
                89.39999389648438,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/441",
              "block_type": "TableCell",
              "html": "<td>29</td>",
              "polygon": [
                [
                  89.39999389648438,
                  101.271484375
                ],
                [
                  90.39999389648438,
                  101.271484375
                ],
                [
                  90.39999389648438,
                  102.271484375
                ],
                [
                  89.39999389648438,
                  102.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                101.271484375,
                90.39999389648438,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/442",
              "block_type": "TableCell",
              "html": "<th>4</th>",
              "polygon": [
                [
                  86.39999389648438,
                  102.271484375
                ],
                [
                  87.39999389648438,
                  102.271484375
                ],
                [
                  87.39999389648438,
                  103.271484375
                ],
                [
                  86.39999389648438,
                  103.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                102.271484375,
                87.39999389648438,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/443",
              "block_type": "TableCell",
              "html": "<th>Case study: interface design</th>",
              "polygon": [
                [
                  87.39999389648438,
                  102.271484375
                ],
                [
                  88.39999389648438,
                  102.271484375
                ],
                [
                  88.39999389648438,
                  103.271484375
                ],
                [
                  87.39999389648438,
                  103.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                102.271484375,
                88.39999389648438,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/444",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  88.39999389648438,
                  102.271484375
                ],
                [
                  89.39999389648438,
                  102.271484375
                ],
                [
                  89.39999389648438,
                  103.271484375
                ],
                [
                  88.39999389648438,
                  103.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                102.271484375,
                89.39999389648438,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/445",
              "block_type": "TableCell",
              "html": "<th>31</th>",
              "polygon": [
                [
                  89.39999389648438,
                  102.271484375
                ],
                [
                  90.39999389648438,
                  102.271484375
                ],
                [
                  90.39999389648438,
                  103.271484375
                ],
                [
                  89.39999389648438,
                  103.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                102.271484375,
                90.39999389648438,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/446",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  103.271484375
                ],
                [
                  87.39999389648438,
                  103.271484375
                ],
                [
                  87.39999389648438,
                  104.271484375
                ],
                [
                  86.39999389648438,
                  104.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                103.271484375,
                87.39999389648438,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/447",
              "block_type": "TableCell",
              "html": "<td>4.1</td>",
              "polygon": [
                [
                  87.39999389648438,
                  103.271484375
                ],
                [
                  88.39999389648438,
                  103.271484375
                ],
                [
                  88.39999389648438,
                  104.271484375
                ],
                [
                  87.39999389648438,
                  104.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                103.271484375,
                88.39999389648438,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/448",
              "block_type": "TableCell",
              "html": "<td>TurtleWorld</td>",
              "polygon": [
                [
                  88.39999389648438,
                  103.271484375
                ],
                [
                  89.39999389648438,
                  103.271484375
                ],
                [
                  89.39999389648438,
                  104.271484375
                ],
                [
                  88.39999389648438,
                  104.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                103.271484375,
                89.39999389648438,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/449",
              "block_type": "TableCell",
              "html": "<td>31</td>",
              "polygon": [
                [
                  89.39999389648438,
                  103.271484375
                ],
                [
                  90.39999389648438,
                  103.271484375
                ],
                [
                  90.39999389648438,
                  104.271484375
                ],
                [
                  89.39999389648438,
                  104.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                103.271484375,
                90.39999389648438,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/450",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  104.271484375
                ],
                [
                  87.39999389648438,
                  104.271484375
                ],
                [
                  87.39999389648438,
                  105.271484375
                ],
                [
                  86.39999389648438,
                  105.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                104.271484375,
                87.39999389648438,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/451",
              "block_type": "TableCell",
              "html": "<td>4.2</td>",
              "polygon": [
                [
                  87.39999389648438,
                  104.271484375
                ],
                [
                  88.39999389648438,
                  104.271484375
                ],
                [
                  88.39999389648438,
                  105.271484375
                ],
                [
                  87.39999389648438,
                  105.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                104.271484375,
                88.39999389648438,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/452",
              "block_type": "TableCell",
              "html": "<td>Simple repetition</td>",
              "polygon": [
                [
                  88.39999389648438,
                  104.271484375
                ],
                [
                  89.39999389648438,
                  104.271484375
                ],
                [
                  89.39999389648438,
                  105.271484375
                ],
                [
                  88.39999389648438,
                  105.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                104.271484375,
                89.39999389648438,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/453",
              "block_type": "TableCell",
              "html": "<td>32</td>",
              "polygon": [
                [
                  89.39999389648438,
                  104.271484375
                ],
                [
                  90.39999389648438,
                  104.271484375
                ],
                [
                  90.39999389648438,
                  105.271484375
                ],
                [
                  89.39999389648438,
                  105.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                104.271484375,
                90.39999389648438,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/454",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  105.271484375
                ],
                [
                  87.39999389648438,
                  105.271484375
                ],
                [
                  87.39999389648438,
                  106.271484375
                ],
                [
                  86.39999389648438,
                  106.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                105.271484375,
                87.39999389648438,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/455",
              "block_type": "TableCell",
              "html": "<td>4.3</td>",
              "polygon": [
                [
                  87.39999389648438,
                  105.271484375
                ],
                [
                  88.39999389648438,
                  105.271484375
                ],
                [
                  88.39999389648438,
                  106.271484375
                ],
                [
                  87.39999389648438,
                  106.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                105.271484375,
                88.39999389648438,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/456",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  88.39999389648438,
                  105.271484375
                ],
                [
                  89.39999389648438,
                  105.271484375
                ],
                [
                  89.39999389648438,
                  106.271484375
                ],
                [
                  88.39999389648438,
                  106.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                105.271484375,
                89.39999389648438,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/457",
              "block_type": "TableCell",
              "html": "<td>33</td>",
              "polygon": [
                [
                  89.39999389648438,
                  105.271484375
                ],
                [
                  90.39999389648438,
                  105.271484375
                ],
                [
                  90.39999389648438,
                  106.271484375
                ],
                [
                  89.39999389648438,
                  106.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                105.271484375,
                90.39999389648438,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/458",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  106.271484375
                ],
                [
                  87.39999389648438,
                  106.271484375
                ],
                [
                  87.39999389648438,
                  107.271484375
                ],
                [
                  86.39999389648438,
                  107.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                106.271484375,
                87.39999389648438,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/459",
              "block_type": "TableCell",
              "html": "<td>4.4</td>",
              "polygon": [
                [
                  87.39999389648438,
                  106.271484375
                ],
                [
                  88.39999389648438,
                  106.271484375
                ],
                [
                  88.39999389648438,
                  107.271484375
                ],
                [
                  87.39999389648438,
                  107.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                106.271484375,
                88.39999389648438,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/460",
              "block_type": "TableCell",
              "html": "<td>Encapsulation</td>",
              "polygon": [
                [
                  88.39999389648438,
                  106.271484375
                ],
                [
                  89.39999389648438,
                  106.271484375
                ],
                [
                  89.39999389648438,
                  107.271484375
                ],
                [
                  88.39999389648438,
                  107.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                106.271484375,
                89.39999389648438,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/461",
              "block_type": "TableCell",
              "html": "<td>34</td>",
              "polygon": [
                [
                  89.39999389648438,
                  106.271484375
                ],
                [
                  90.39999389648438,
                  106.271484375
                ],
                [
                  90.39999389648438,
                  107.271484375
                ],
                [
                  89.39999389648438,
                  107.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                106.271484375,
                90.39999389648438,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/462",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  107.271484375
                ],
                [
                  87.39999389648438,
                  107.271484375
                ],
                [
                  87.39999389648438,
                  108.271484375
                ],
                [
                  86.39999389648438,
                  108.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                107.271484375,
                87.39999389648438,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/463",
              "block_type": "TableCell",
              "html": "<td>4.5</td>",
              "polygon": [
                [
                  87.39999389648438,
                  107.271484375
                ],
                [
                  88.39999389648438,
                  107.271484375
                ],
                [
                  88.39999389648438,
                  108.271484375
                ],
                [
                  87.39999389648438,
                  108.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                107.271484375,
                88.39999389648438,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/464",
              "block_type": "TableCell",
              "html": "<td>Generalization</td>",
              "polygon": [
                [
                  88.39999389648438,
                  107.271484375
                ],
                [
                  89.39999389648438,
                  107.271484375
                ],
                [
                  89.39999389648438,
                  108.271484375
                ],
                [
                  88.39999389648438,
                  108.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                107.271484375,
                89.39999389648438,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/465",
              "block_type": "TableCell",
              "html": "<td>34</td>",
              "polygon": [
                [
                  89.39999389648438,
                  107.271484375
                ],
                [
                  90.39999389648438,
                  107.271484375
                ],
                [
                  90.39999389648438,
                  108.271484375
                ],
                [
                  89.39999389648438,
                  108.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                107.271484375,
                90.39999389648438,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/466",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  108.271484375
                ],
                [
                  87.39999389648438,
                  108.271484375
                ],
                [
                  87.39999389648438,
                  109.271484375
                ],
                [
                  86.39999389648438,
                  109.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                108.271484375,
                87.39999389648438,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/467",
              "block_type": "TableCell",
              "html": "<td>4.6</td>",
              "polygon": [
                [
                  87.39999389648438,
                  108.271484375
                ],
                [
                  88.39999389648438,
                  108.271484375
                ],
                [
                  88.39999389648438,
                  109.271484375
                ],
                [
                  87.39999389648438,
                  109.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                108.271484375,
                88.39999389648438,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/468",
              "block_type": "TableCell",
              "html": "<td>Interface design</td>",
              "polygon": [
                [
                  88.39999389648438,
                  108.271484375
                ],
                [
                  89.39999389648438,
                  108.271484375
                ],
                [
                  89.39999389648438,
                  109.271484375
                ],
                [
                  88.39999389648438,
                  109.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                108.271484375,
                89.39999389648438,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/469",
              "block_type": "TableCell",
              "html": "<td>35</td>",
              "polygon": [
                [
                  89.39999389648438,
                  108.271484375
                ],
                [
                  90.39999389648438,
                  108.271484375
                ],
                [
                  90.39999389648438,
                  109.271484375
                ],
                [
                  89.39999389648438,
                  109.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                108.271484375,
                90.39999389648438,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/470",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  109.271484375
                ],
                [
                  87.39999389648438,
                  109.271484375
                ],
                [
                  87.39999389648438,
                  110.271484375
                ],
                [
                  86.39999389648438,
                  110.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                109.271484375,
                87.39999389648438,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/471",
              "block_type": "TableCell",
              "html": "<td>4.7</td>",
              "polygon": [
                [
                  87.39999389648438,
                  109.271484375
                ],
                [
                  88.39999389648438,
                  109.271484375
                ],
                [
                  88.39999389648438,
                  110.271484375
                ],
                [
                  87.39999389648438,
                  110.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                109.271484375,
                88.39999389648438,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/472",
              "block_type": "TableCell",
              "html": "<td>Refactoring</td>",
              "polygon": [
                [
                  88.39999389648438,
                  109.271484375
                ],
                [
                  89.39999389648438,
                  109.271484375
                ],
                [
                  89.39999389648438,
                  110.271484375
                ],
                [
                  88.39999389648438,
                  110.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                109.271484375,
                89.39999389648438,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/473",
              "block_type": "TableCell",
              "html": "<td>36</td>",
              "polygon": [
                [
                  89.39999389648438,
                  109.271484375
                ],
                [
                  90.39999389648438,
                  109.271484375
                ],
                [
                  90.39999389648438,
                  110.271484375
                ],
                [
                  89.39999389648438,
                  110.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                109.271484375,
                90.39999389648438,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/474",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  110.271484375
                ],
                [
                  87.39999389648438,
                  110.271484375
                ],
                [
                  87.39999389648438,
                  111.271484375
                ],
                [
                  86.39999389648438,
                  111.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                110.271484375,
                87.39999389648438,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/475",
              "block_type": "TableCell",
              "html": "<td>4.8</td>",
              "polygon": [
                [
                  87.39999389648438,
                  110.271484375
                ],
                [
                  88.39999389648438,
                  110.271484375
                ],
                [
                  88.39999389648438,
                  111.271484375
                ],
                [
                  87.39999389648438,
                  111.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                110.271484375,
                88.39999389648438,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/476",
              "block_type": "TableCell",
              "html": "<td>A development plan</td>",
              "polygon": [
                [
                  88.39999389648438,
                  110.271484375
                ],
                [
                  89.39999389648438,
                  110.271484375
                ],
                [
                  89.39999389648438,
                  111.271484375
                ],
                [
                  88.39999389648438,
                  111.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                110.271484375,
                89.39999389648438,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/477",
              "block_type": "TableCell",
              "html": "<td>37</td>",
              "polygon": [
                [
                  89.39999389648438,
                  110.271484375
                ],
                [
                  90.39999389648438,
                  110.271484375
                ],
                [
                  90.39999389648438,
                  111.271484375
                ],
                [
                  89.39999389648438,
                  111.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                110.271484375,
                90.39999389648438,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/478",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  111.271484375
                ],
                [
                  87.39999389648438,
                  111.271484375
                ],
                [
                  87.39999389648438,
                  112.271484375
                ],
                [
                  86.39999389648438,
                  112.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                111.271484375,
                87.39999389648438,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/479",
              "block_type": "TableCell",
              "html": "<td>4.9</td>",
              "polygon": [
                [
                  87.39999389648438,
                  111.271484375
                ],
                [
                  88.39999389648438,
                  111.271484375
                ],
                [
                  88.39999389648438,
                  112.271484375
                ],
                [
                  87.39999389648438,
                  112.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                111.271484375,
                88.39999389648438,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/480",
              "block_type": "TableCell",
              "html": "<td>docstring</td>",
              "polygon": [
                [
                  88.39999389648438,
                  111.271484375
                ],
                [
                  89.39999389648438,
                  111.271484375
                ],
                [
                  89.39999389648438,
                  112.271484375
                ],
                [
                  88.39999389648438,
                  112.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                111.271484375,
                89.39999389648438,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/481",
              "block_type": "TableCell",
              "html": "<td>37</td>",
              "polygon": [
                [
                  89.39999389648438,
                  111.271484375
                ],
                [
                  90.39999389648438,
                  111.271484375
                ],
                [
                  90.39999389648438,
                  112.271484375
                ],
                [
                  89.39999389648438,
                  112.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                111.271484375,
                90.39999389648438,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/482",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  112.271484375
                ],
                [
                  87.39999389648438,
                  112.271484375
                ],
                [
                  87.39999389648438,
                  113.271484375
                ],
                [
                  86.39999389648438,
                  113.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                112.271484375,
                87.39999389648438,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/483",
              "block_type": "TableCell",
              "html": "<td>4.10</td>",
              "polygon": [
                [
                  87.39999389648438,
                  112.271484375
                ],
                [
                  88.39999389648438,
                  112.271484375
                ],
                [
                  88.39999389648438,
                  113.271484375
                ],
                [
                  87.39999389648438,
                  113.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                112.271484375,
                88.39999389648438,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/484",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  88.39999389648438,
                  112.271484375
                ],
                [
                  89.39999389648438,
                  112.271484375
                ],
                [
                  89.39999389648438,
                  113.271484375
                ],
                [
                  88.39999389648438,
                  113.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                112.271484375,
                89.39999389648438,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/485",
              "block_type": "TableCell",
              "html": "<td>38</td>",
              "polygon": [
                [
                  89.39999389648438,
                  112.271484375
                ],
                [
                  90.39999389648438,
                  112.271484375
                ],
                [
                  90.39999389648438,
                  113.271484375
                ],
                [
                  89.39999389648438,
                  113.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                112.271484375,
                90.39999389648438,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/486",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  113.271484375
                ],
                [
                  87.39999389648438,
                  113.271484375
                ],
                [
                  87.39999389648438,
                  114.271484375
                ],
                [
                  86.39999389648438,
                  114.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                113.271484375,
                87.39999389648438,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/487",
              "block_type": "TableCell",
              "html": "<td>4.11</td>",
              "polygon": [
                [
                  87.39999389648438,
                  113.271484375
                ],
                [
                  88.39999389648438,
                  113.271484375
                ],
                [
                  88.39999389648438,
                  114.271484375
                ],
                [
                  87.39999389648438,
                  114.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                113.271484375,
                88.39999389648438,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/488",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  88.39999389648438,
                  113.271484375
                ],
                [
                  89.39999389648438,
                  113.271484375
                ],
                [
                  89.39999389648438,
                  114.271484375
                ],
                [
                  88.39999389648438,
                  114.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                113.271484375,
                89.39999389648438,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/489",
              "block_type": "TableCell",
              "html": "<td>38</td>",
              "polygon": [
                [
                  89.39999389648438,
                  113.271484375
                ],
                [
                  90.39999389648438,
                  113.271484375
                ],
                [
                  90.39999389648438,
                  114.271484375
                ],
                [
                  89.39999389648438,
                  114.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                113.271484375,
                90.39999389648438,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/490",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39999389648438,
                  114.271484375
                ],
                [
                  87.39999389648438,
                  114.271484375
                ],
                [
                  87.39999389648438,
                  115.271484375
                ],
                [
                  86.39999389648438,
                  115.271484375
                ]
              ],
              "bbox": [
                86.39999389648438,
                114.271484375,
                87.39999389648438,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/491",
              "block_type": "TableCell",
              "html": "<td>4.12</td>",
              "polygon": [
                [
                  87.39999389648438,
                  114.271484375
                ],
                [
                  88.39999389648438,
                  114.271484375
                ],
                [
                  88.39999389648438,
                  115.271484375
                ],
                [
                  87.39999389648438,
                  115.271484375
                ]
              ],
              "bbox": [
                87.39999389648438,
                114.271484375,
                88.39999389648438,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/492",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  88.39999389648438,
                  114.271484375
                ],
                [
                  89.39999389648438,
                  114.271484375
                ],
                [
                  89.39999389648438,
                  115.271484375
                ],
                [
                  88.39999389648438,
                  115.271484375
                ]
              ],
              "bbox": [
                88.39999389648438,
                114.271484375,
                89.39999389648438,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/13/TableCell/493",
              "block_type": "TableCell",
              "html": "<td>39</td>",
              "polygon": [
                [
                  89.39999389648438,
                  114.271484375
                ],
                [
                  90.39999389648438,
                  114.271484375
                ],
                [
                  90.39999389648438,
                  115.271484375
                ],
                [
                  89.39999389648438,
                  115.271484375
                ]
              ],
              "bbox": [
                89.39999389648438,
                114.271484375,
                90.39999389648438,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/331",
              "block_type": "TableCell",
              "html": "<th>5</th>",
              "polygon": [
                [
                  129.60000610351562,
                  81.404296875
                ],
                [
                  130.60000610351562,
                  81.404296875
                ],
                [
                  130.60000610351562,
                  82.404296875
                ],
                [
                  129.60000610351562,
                  82.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                81.404296875,
                130.60000610351562,
                82.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/332",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  130.60000610351562,
                  81.404296875
                ],
                [
                  131.60000610351562,
                  81.404296875
                ],
                [
                  131.60000610351562,
                  82.404296875
                ],
                [
                  130.60000610351562,
                  82.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                81.404296875,
                131.60000610351562,
                82.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/333",
              "block_type": "TableCell",
              "html": "<th>Conditionals and recursion</th>",
              "polygon": [
                [
                  131.60000610351562,
                  81.404296875
                ],
                [
                  132.60000610351562,
                  81.404296875
                ],
                [
                  132.60000610351562,
                  82.404296875
                ],
                [
                  131.60000610351562,
                  82.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                81.404296875,
                132.60000610351562,
                82.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/334",
              "block_type": "TableCell",
              "html": "<th>41</th>",
              "polygon": [
                [
                  132.60000610351562,
                  81.404296875
                ],
                [
                  133.60000610351562,
                  81.404296875
                ],
                [
                  133.60000610351562,
                  82.404296875
                ],
                [
                  132.60000610351562,
                  82.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                81.404296875,
                133.60000610351562,
                82.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/335",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  82.404296875
                ],
                [
                  130.60000610351562,
                  82.404296875
                ],
                [
                  130.60000610351562,
                  83.404296875
                ],
                [
                  129.60000610351562,
                  83.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                82.404296875,
                130.60000610351562,
                83.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/336",
              "block_type": "TableCell",
              "html": "<td>5.1</td>",
              "polygon": [
                [
                  130.60000610351562,
                  82.404296875
                ],
                [
                  131.60000610351562,
                  82.404296875
                ],
                [
                  131.60000610351562,
                  83.404296875
                ],
                [
                  130.60000610351562,
                  83.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                82.404296875,
                131.60000610351562,
                83.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/337",
              "block_type": "TableCell",
              "html": "<td>Modulus operator</td>",
              "polygon": [
                [
                  131.60000610351562,
                  82.404296875
                ],
                [
                  132.60000610351562,
                  82.404296875
                ],
                [
                  132.60000610351562,
                  83.404296875
                ],
                [
                  131.60000610351562,
                  83.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                82.404296875,
                132.60000610351562,
                83.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/338",
              "block_type": "TableCell",
              "html": "<td>41</td>",
              "polygon": [
                [
                  132.60000610351562,
                  82.404296875
                ],
                [
                  133.60000610351562,
                  82.404296875
                ],
                [
                  133.60000610351562,
                  83.404296875
                ],
                [
                  132.60000610351562,
                  83.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                82.404296875,
                133.60000610351562,
                83.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/339",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  83.404296875
                ],
                [
                  130.60000610351562,
                  83.404296875
                ],
                [
                  130.60000610351562,
                  84.404296875
                ],
                [
                  129.60000610351562,
                  84.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                83.404296875,
                130.60000610351562,
                84.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/340",
              "block_type": "TableCell",
              "html": "<td>5.2</td>",
              "polygon": [
                [
                  130.60000610351562,
                  83.404296875
                ],
                [
                  131.60000610351562,
                  83.404296875
                ],
                [
                  131.60000610351562,
                  84.404296875
                ],
                [
                  130.60000610351562,
                  84.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                83.404296875,
                131.60000610351562,
                84.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/341",
              "block_type": "TableCell",
              "html": "<td>Boolean expressions</td>",
              "polygon": [
                [
                  131.60000610351562,
                  83.404296875
                ],
                [
                  132.60000610351562,
                  83.404296875
                ],
                [
                  132.60000610351562,
                  84.404296875
                ],
                [
                  131.60000610351562,
                  84.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                83.404296875,
                132.60000610351562,
                84.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/342",
              "block_type": "TableCell",
              "html": "<td>41</td>",
              "polygon": [
                [
                  132.60000610351562,
                  83.404296875
                ],
                [
                  133.60000610351562,
                  83.404296875
                ],
                [
                  133.60000610351562,
                  84.404296875
                ],
                [
                  132.60000610351562,
                  84.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                83.404296875,
                133.60000610351562,
                84.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/343",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  84.404296875
                ],
                [
                  130.60000610351562,
                  84.404296875
                ],
                [
                  130.60000610351562,
                  85.404296875
                ],
                [
                  129.60000610351562,
                  85.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                84.404296875,
                130.60000610351562,
                85.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/344",
              "block_type": "TableCell",
              "html": "<td>5.3</td>",
              "polygon": [
                [
                  130.60000610351562,
                  84.404296875
                ],
                [
                  131.60000610351562,
                  84.404296875
                ],
                [
                  131.60000610351562,
                  85.404296875
                ],
                [
                  130.60000610351562,
                  85.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                84.404296875,
                131.60000610351562,
                85.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/345",
              "block_type": "TableCell",
              "html": "<td>Logical operators</td>",
              "polygon": [
                [
                  131.60000610351562,
                  84.404296875
                ],
                [
                  132.60000610351562,
                  84.404296875
                ],
                [
                  132.60000610351562,
                  85.404296875
                ],
                [
                  131.60000610351562,
                  85.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                84.404296875,
                132.60000610351562,
                85.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/346",
              "block_type": "TableCell",
              "html": "<td>42</td>",
              "polygon": [
                [
                  132.60000610351562,
                  84.404296875
                ],
                [
                  133.60000610351562,
                  84.404296875
                ],
                [
                  133.60000610351562,
                  85.404296875
                ],
                [
                  132.60000610351562,
                  85.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                84.404296875,
                133.60000610351562,
                85.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/347",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  85.404296875
                ],
                [
                  130.60000610351562,
                  85.404296875
                ],
                [
                  130.60000610351562,
                  86.404296875
                ],
                [
                  129.60000610351562,
                  86.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                85.404296875,
                130.60000610351562,
                86.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/348",
              "block_type": "TableCell",
              "html": "<td>5.4</td>",
              "polygon": [
                [
                  130.60000610351562,
                  85.404296875
                ],
                [
                  131.60000610351562,
                  85.404296875
                ],
                [
                  131.60000610351562,
                  86.404296875
                ],
                [
                  130.60000610351562,
                  86.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                85.404296875,
                131.60000610351562,
                86.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/349",
              "block_type": "TableCell",
              "html": "<td>Conditional execution</td>",
              "polygon": [
                [
                  131.60000610351562,
                  85.404296875
                ],
                [
                  132.60000610351562,
                  85.404296875
                ],
                [
                  132.60000610351562,
                  86.404296875
                ],
                [
                  131.60000610351562,
                  86.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                85.404296875,
                132.60000610351562,
                86.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/350",
              "block_type": "TableCell",
              "html": "<td>42</td>",
              "polygon": [
                [
                  132.60000610351562,
                  85.404296875
                ],
                [
                  133.60000610351562,
                  85.404296875
                ],
                [
                  133.60000610351562,
                  86.404296875
                ],
                [
                  132.60000610351562,
                  86.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                85.404296875,
                133.60000610351562,
                86.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/351",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  86.404296875
                ],
                [
                  130.60000610351562,
                  86.404296875
                ],
                [
                  130.60000610351562,
                  87.404296875
                ],
                [
                  129.60000610351562,
                  87.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                86.404296875,
                130.60000610351562,
                87.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/352",
              "block_type": "TableCell",
              "html": "<td>5.5</td>",
              "polygon": [
                [
                  130.60000610351562,
                  86.404296875
                ],
                [
                  131.60000610351562,
                  86.404296875
                ],
                [
                  131.60000610351562,
                  87.404296875
                ],
                [
                  130.60000610351562,
                  87.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                86.404296875,
                131.60000610351562,
                87.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/353",
              "block_type": "TableCell",
              "html": "<td>Alternative execution</td>",
              "polygon": [
                [
                  131.60000610351562,
                  86.404296875
                ],
                [
                  132.60000610351562,
                  86.404296875
                ],
                [
                  132.60000610351562,
                  87.404296875
                ],
                [
                  131.60000610351562,
                  87.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                86.404296875,
                132.60000610351562,
                87.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/354",
              "block_type": "TableCell",
              "html": "<td>43</td>",
              "polygon": [
                [
                  132.60000610351562,
                  86.404296875
                ],
                [
                  133.60000610351562,
                  86.404296875
                ],
                [
                  133.60000610351562,
                  87.404296875
                ],
                [
                  132.60000610351562,
                  87.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                86.404296875,
                133.60000610351562,
                87.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/355",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  87.404296875
                ],
                [
                  130.60000610351562,
                  87.404296875
                ],
                [
                  130.60000610351562,
                  88.404296875
                ],
                [
                  129.60000610351562,
                  88.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                87.404296875,
                130.60000610351562,
                88.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/356",
              "block_type": "TableCell",
              "html": "<td>5.6</td>",
              "polygon": [
                [
                  130.60000610351562,
                  87.404296875
                ],
                [
                  131.60000610351562,
                  87.404296875
                ],
                [
                  131.60000610351562,
                  88.404296875
                ],
                [
                  130.60000610351562,
                  88.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                87.404296875,
                131.60000610351562,
                88.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/357",
              "block_type": "TableCell",
              "html": "<td>Chained conditionals</td>",
              "polygon": [
                [
                  131.60000610351562,
                  87.404296875
                ],
                [
                  132.60000610351562,
                  87.404296875
                ],
                [
                  132.60000610351562,
                  88.404296875
                ],
                [
                  131.60000610351562,
                  88.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                87.404296875,
                132.60000610351562,
                88.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/358",
              "block_type": "TableCell",
              "html": "<td>43</td>",
              "polygon": [
                [
                  132.60000610351562,
                  87.404296875
                ],
                [
                  133.60000610351562,
                  87.404296875
                ],
                [
                  133.60000610351562,
                  88.404296875
                ],
                [
                  132.60000610351562,
                  88.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                87.404296875,
                133.60000610351562,
                88.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/359",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  88.404296875
                ],
                [
                  130.60000610351562,
                  88.404296875
                ],
                [
                  130.60000610351562,
                  89.404296875
                ],
                [
                  129.60000610351562,
                  89.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                88.404296875,
                130.60000610351562,
                89.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/360",
              "block_type": "TableCell",
              "html": "<td>5.7</td>",
              "polygon": [
                [
                  130.60000610351562,
                  88.404296875
                ],
                [
                  131.60000610351562,
                  88.404296875
                ],
                [
                  131.60000610351562,
                  89.404296875
                ],
                [
                  130.60000610351562,
                  89.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                88.404296875,
                131.60000610351562,
                89.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/361",
              "block_type": "TableCell",
              "html": "<td>Nested conditionals</td>",
              "polygon": [
                [
                  131.60000610351562,
                  88.404296875
                ],
                [
                  132.60000610351562,
                  88.404296875
                ],
                [
                  132.60000610351562,
                  89.404296875
                ],
                [
                  131.60000610351562,
                  89.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                88.404296875,
                132.60000610351562,
                89.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/362",
              "block_type": "TableCell",
              "html": "<td>43</td>",
              "polygon": [
                [
                  132.60000610351562,
                  88.404296875
                ],
                [
                  133.60000610351562,
                  88.404296875
                ],
                [
                  133.60000610351562,
                  89.404296875
                ],
                [
                  132.60000610351562,
                  89.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                88.404296875,
                133.60000610351562,
                89.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/363",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  89.404296875
                ],
                [
                  130.60000610351562,
                  89.404296875
                ],
                [
                  130.60000610351562,
                  90.404296875
                ],
                [
                  129.60000610351562,
                  90.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                89.404296875,
                130.60000610351562,
                90.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/364",
              "block_type": "TableCell",
              "html": "<td>5.8</td>",
              "polygon": [
                [
                  130.60000610351562,
                  89.404296875
                ],
                [
                  131.60000610351562,
                  89.404296875
                ],
                [
                  131.60000610351562,
                  90.404296875
                ],
                [
                  130.60000610351562,
                  90.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                89.404296875,
                131.60000610351562,
                90.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/365",
              "block_type": "TableCell",
              "html": "<td>Recursion</td>",
              "polygon": [
                [
                  131.60000610351562,
                  89.404296875
                ],
                [
                  132.60000610351562,
                  89.404296875
                ],
                [
                  132.60000610351562,
                  90.404296875
                ],
                [
                  131.60000610351562,
                  90.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                89.404296875,
                132.60000610351562,
                90.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/366",
              "block_type": "TableCell",
              "html": "<td>44</td>",
              "polygon": [
                [
                  132.60000610351562,
                  89.404296875
                ],
                [
                  133.60000610351562,
                  89.404296875
                ],
                [
                  133.60000610351562,
                  90.404296875
                ],
                [
                  132.60000610351562,
                  90.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                89.404296875,
                133.60000610351562,
                90.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/367",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  90.404296875
                ],
                [
                  130.60000610351562,
                  90.404296875
                ],
                [
                  130.60000610351562,
                  91.404296875
                ],
                [
                  129.60000610351562,
                  91.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                90.404296875,
                130.60000610351562,
                91.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/368",
              "block_type": "TableCell",
              "html": "<td>5.9</td>",
              "polygon": [
                [
                  130.60000610351562,
                  90.404296875
                ],
                [
                  131.60000610351562,
                  90.404296875
                ],
                [
                  131.60000610351562,
                  91.404296875
                ],
                [
                  130.60000610351562,
                  91.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                90.404296875,
                131.60000610351562,
                91.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/369",
              "block_type": "TableCell",
              "html": "<td>Stack diagrams for recursive functions</td>",
              "polygon": [
                [
                  131.60000610351562,
                  90.404296875
                ],
                [
                  132.60000610351562,
                  90.404296875
                ],
                [
                  132.60000610351562,
                  91.404296875
                ],
                [
                  131.60000610351562,
                  91.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                90.404296875,
                132.60000610351562,
                91.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/370",
              "block_type": "TableCell",
              "html": "<td>45</td>",
              "polygon": [
                [
                  132.60000610351562,
                  90.404296875
                ],
                [
                  133.60000610351562,
                  90.404296875
                ],
                [
                  133.60000610351562,
                  91.404296875
                ],
                [
                  132.60000610351562,
                  91.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                90.404296875,
                133.60000610351562,
                91.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/371",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  91.404296875
                ],
                [
                  130.60000610351562,
                  91.404296875
                ],
                [
                  130.60000610351562,
                  92.404296875
                ],
                [
                  129.60000610351562,
                  92.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                91.404296875,
                130.60000610351562,
                92.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/372",
              "block_type": "TableCell",
              "html": "<td>5.10</td>",
              "polygon": [
                [
                  130.60000610351562,
                  91.404296875
                ],
                [
                  131.60000610351562,
                  91.404296875
                ],
                [
                  131.60000610351562,
                  92.404296875
                ],
                [
                  130.60000610351562,
                  92.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                91.404296875,
                131.60000610351562,
                92.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/373",
              "block_type": "TableCell",
              "html": "<td>Infinite recursion</td>",
              "polygon": [
                [
                  131.60000610351562,
                  91.404296875
                ],
                [
                  132.60000610351562,
                  91.404296875
                ],
                [
                  132.60000610351562,
                  92.404296875
                ],
                [
                  131.60000610351562,
                  92.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                91.404296875,
                132.60000610351562,
                92.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/374",
              "block_type": "TableCell",
              "html": "<td>46</td>",
              "polygon": [
                [
                  132.60000610351562,
                  91.404296875
                ],
                [
                  133.60000610351562,
                  91.404296875
                ],
                [
                  133.60000610351562,
                  92.404296875
                ],
                [
                  132.60000610351562,
                  92.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                91.404296875,
                133.60000610351562,
                92.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/375",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  92.404296875
                ],
                [
                  130.60000610351562,
                  92.404296875
                ],
                [
                  130.60000610351562,
                  93.404296875
                ],
                [
                  129.60000610351562,
                  93.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                92.404296875,
                130.60000610351562,
                93.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/376",
              "block_type": "TableCell",
              "html": "<td>5.11</td>",
              "polygon": [
                [
                  130.60000610351562,
                  92.404296875
                ],
                [
                  131.60000610351562,
                  92.404296875
                ],
                [
                  131.60000610351562,
                  93.404296875
                ],
                [
                  130.60000610351562,
                  93.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                92.404296875,
                131.60000610351562,
                93.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/377",
              "block_type": "TableCell",
              "html": "<td>Keyboard input</td>",
              "polygon": [
                [
                  131.60000610351562,
                  92.404296875
                ],
                [
                  132.60000610351562,
                  92.404296875
                ],
                [
                  132.60000610351562,
                  93.404296875
                ],
                [
                  131.60000610351562,
                  93.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                92.404296875,
                132.60000610351562,
                93.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/378",
              "block_type": "TableCell",
              "html": "<td>46</td>",
              "polygon": [
                [
                  132.60000610351562,
                  92.404296875
                ],
                [
                  133.60000610351562,
                  92.404296875
                ],
                [
                  133.60000610351562,
                  93.404296875
                ],
                [
                  132.60000610351562,
                  93.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                92.404296875,
                133.60000610351562,
                93.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/379",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  93.404296875
                ],
                [
                  130.60000610351562,
                  93.404296875
                ],
                [
                  130.60000610351562,
                  94.404296875
                ],
                [
                  129.60000610351562,
                  94.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                93.404296875,
                130.60000610351562,
                94.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/380",
              "block_type": "TableCell",
              "html": "<td>5.12</td>",
              "polygon": [
                [
                  130.60000610351562,
                  93.404296875
                ],
                [
                  131.60000610351562,
                  93.404296875
                ],
                [
                  131.60000610351562,
                  94.404296875
                ],
                [
                  130.60000610351562,
                  94.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                93.404296875,
                131.60000610351562,
                94.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/381",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.60000610351562,
                  93.404296875
                ],
                [
                  132.60000610351562,
                  93.404296875
                ],
                [
                  132.60000610351562,
                  94.404296875
                ],
                [
                  131.60000610351562,
                  94.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                93.404296875,
                132.60000610351562,
                94.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/382",
              "block_type": "TableCell",
              "html": "<td>47</td>",
              "polygon": [
                [
                  132.60000610351562,
                  93.404296875
                ],
                [
                  133.60000610351562,
                  93.404296875
                ],
                [
                  133.60000610351562,
                  94.404296875
                ],
                [
                  132.60000610351562,
                  94.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                93.404296875,
                133.60000610351562,
                94.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/383",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  94.404296875
                ],
                [
                  130.60000610351562,
                  94.404296875
                ],
                [
                  130.60000610351562,
                  95.404296875
                ],
                [
                  129.60000610351562,
                  95.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                94.404296875,
                130.60000610351562,
                95.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/384",
              "block_type": "TableCell",
              "html": "<td>5.13</td>",
              "polygon": [
                [
                  130.60000610351562,
                  94.404296875
                ],
                [
                  131.60000610351562,
                  94.404296875
                ],
                [
                  131.60000610351562,
                  95.404296875
                ],
                [
                  130.60000610351562,
                  95.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                94.404296875,
                131.60000610351562,
                95.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/385",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.60000610351562,
                  94.404296875
                ],
                [
                  132.60000610351562,
                  94.404296875
                ],
                [
                  132.60000610351562,
                  95.404296875
                ],
                [
                  131.60000610351562,
                  95.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                94.404296875,
                132.60000610351562,
                95.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/386",
              "block_type": "TableCell",
              "html": "<td>48</td>",
              "polygon": [
                [
                  132.60000610351562,
                  94.404296875
                ],
                [
                  133.60000610351562,
                  94.404296875
                ],
                [
                  133.60000610351562,
                  95.404296875
                ],
                [
                  132.60000610351562,
                  95.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                94.404296875,
                133.60000610351562,
                95.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/387",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  95.404296875
                ],
                [
                  130.60000610351562,
                  95.404296875
                ],
                [
                  130.60000610351562,
                  96.404296875
                ],
                [
                  129.60000610351562,
                  96.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                95.404296875,
                130.60000610351562,
                96.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/388",
              "block_type": "TableCell",
              "html": "<td>5.14</td>",
              "polygon": [
                [
                  130.60000610351562,
                  95.404296875
                ],
                [
                  131.60000610351562,
                  95.404296875
                ],
                [
                  131.60000610351562,
                  96.404296875
                ],
                [
                  130.60000610351562,
                  96.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                95.404296875,
                131.60000610351562,
                96.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/389",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  131.60000610351562,
                  95.404296875
                ],
                [
                  132.60000610351562,
                  95.404296875
                ],
                [
                  132.60000610351562,
                  96.404296875
                ],
                [
                  131.60000610351562,
                  96.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                95.404296875,
                132.60000610351562,
                96.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/390",
              "block_type": "TableCell",
              "html": "<td>49</td>",
              "polygon": [
                [
                  132.60000610351562,
                  95.404296875
                ],
                [
                  133.60000610351562,
                  95.404296875
                ],
                [
                  133.60000610351562,
                  96.404296875
                ],
                [
                  132.60000610351562,
                  96.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                95.404296875,
                133.60000610351562,
                96.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/391",
              "block_type": "TableCell",
              "html": "<th>6</th>",
              "polygon": [
                [
                  129.60000610351562,
                  96.404296875
                ],
                [
                  130.60000610351562,
                  96.404296875
                ],
                [
                  130.60000610351562,
                  97.404296875
                ],
                [
                  129.60000610351562,
                  97.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                96.404296875,
                130.60000610351562,
                97.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/392",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  130.60000610351562,
                  96.404296875
                ],
                [
                  131.60000610351562,
                  96.404296875
                ],
                [
                  131.60000610351562,
                  97.404296875
                ],
                [
                  130.60000610351562,
                  97.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                96.404296875,
                131.60000610351562,
                97.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/393",
              "block_type": "TableCell",
              "html": "<th>Fruitful functions</th>",
              "polygon": [
                [
                  131.60000610351562,
                  96.404296875
                ],
                [
                  132.60000610351562,
                  96.404296875
                ],
                [
                  132.60000610351562,
                  97.404296875
                ],
                [
                  131.60000610351562,
                  97.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                96.404296875,
                132.60000610351562,
                97.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/394",
              "block_type": "TableCell",
              "html": "<th>51</th>",
              "polygon": [
                [
                  132.60000610351562,
                  96.404296875
                ],
                [
                  133.60000610351562,
                  96.404296875
                ],
                [
                  133.60000610351562,
                  97.404296875
                ],
                [
                  132.60000610351562,
                  97.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                96.404296875,
                133.60000610351562,
                97.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/395",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  97.404296875
                ],
                [
                  130.60000610351562,
                  97.404296875
                ],
                [
                  130.60000610351562,
                  98.404296875
                ],
                [
                  129.60000610351562,
                  98.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                97.404296875,
                130.60000610351562,
                98.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/396",
              "block_type": "TableCell",
              "html": "<td>6.1</td>",
              "polygon": [
                [
                  130.60000610351562,
                  97.404296875
                ],
                [
                  131.60000610351562,
                  97.404296875
                ],
                [
                  131.60000610351562,
                  98.404296875
                ],
                [
                  130.60000610351562,
                  98.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                97.404296875,
                131.60000610351562,
                98.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/397",
              "block_type": "TableCell",
              "html": "<td>Return values</td>",
              "polygon": [
                [
                  131.60000610351562,
                  97.404296875
                ],
                [
                  132.60000610351562,
                  97.404296875
                ],
                [
                  132.60000610351562,
                  98.404296875
                ],
                [
                  131.60000610351562,
                  98.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                97.404296875,
                132.60000610351562,
                98.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/398",
              "block_type": "TableCell",
              "html": "<td>51</td>",
              "polygon": [
                [
                  132.60000610351562,
                  97.404296875
                ],
                [
                  133.60000610351562,
                  97.404296875
                ],
                [
                  133.60000610351562,
                  98.404296875
                ],
                [
                  132.60000610351562,
                  98.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                97.404296875,
                133.60000610351562,
                98.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/399",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  98.404296875
                ],
                [
                  130.60000610351562,
                  98.404296875
                ],
                [
                  130.60000610351562,
                  99.404296875
                ],
                [
                  129.60000610351562,
                  99.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                98.404296875,
                130.60000610351562,
                99.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/400",
              "block_type": "TableCell",
              "html": "<td>6.2</td>",
              "polygon": [
                [
                  130.60000610351562,
                  98.404296875
                ],
                [
                  131.60000610351562,
                  98.404296875
                ],
                [
                  131.60000610351562,
                  99.404296875
                ],
                [
                  130.60000610351562,
                  99.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                98.404296875,
                131.60000610351562,
                99.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/401",
              "block_type": "TableCell",
              "html": "<td>Incremental development</td>",
              "polygon": [
                [
                  131.60000610351562,
                  98.404296875
                ],
                [
                  132.60000610351562,
                  98.404296875
                ],
                [
                  132.60000610351562,
                  99.404296875
                ],
                [
                  131.60000610351562,
                  99.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                98.404296875,
                132.60000610351562,
                99.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/402",
              "block_type": "TableCell",
              "html": "<td>52</td>",
              "polygon": [
                [
                  132.60000610351562,
                  98.404296875
                ],
                [
                  133.60000610351562,
                  98.404296875
                ],
                [
                  133.60000610351562,
                  99.404296875
                ],
                [
                  132.60000610351562,
                  99.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                98.404296875,
                133.60000610351562,
                99.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/403",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  99.404296875
                ],
                [
                  130.60000610351562,
                  99.404296875
                ],
                [
                  130.60000610351562,
                  100.404296875
                ],
                [
                  129.60000610351562,
                  100.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                99.404296875,
                130.60000610351562,
                100.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/404",
              "block_type": "TableCell",
              "html": "<td>6.3</td>",
              "polygon": [
                [
                  130.60000610351562,
                  99.404296875
                ],
                [
                  131.60000610351562,
                  99.404296875
                ],
                [
                  131.60000610351562,
                  100.404296875
                ],
                [
                  130.60000610351562,
                  100.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                99.404296875,
                131.60000610351562,
                100.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/405",
              "block_type": "TableCell",
              "html": "<td>Composition</td>",
              "polygon": [
                [
                  131.60000610351562,
                  99.404296875
                ],
                [
                  132.60000610351562,
                  99.404296875
                ],
                [
                  132.60000610351562,
                  100.404296875
                ],
                [
                  131.60000610351562,
                  100.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                99.404296875,
                132.60000610351562,
                100.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/406",
              "block_type": "TableCell",
              "html": "<td>54</td>",
              "polygon": [
                [
                  132.60000610351562,
                  99.404296875
                ],
                [
                  133.60000610351562,
                  99.404296875
                ],
                [
                  133.60000610351562,
                  100.404296875
                ],
                [
                  132.60000610351562,
                  100.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                99.404296875,
                133.60000610351562,
                100.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/407",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  100.404296875
                ],
                [
                  130.60000610351562,
                  100.404296875
                ],
                [
                  130.60000610351562,
                  101.404296875
                ],
                [
                  129.60000610351562,
                  101.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                100.404296875,
                130.60000610351562,
                101.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/408",
              "block_type": "TableCell",
              "html": "<td>6.4</td>",
              "polygon": [
                [
                  130.60000610351562,
                  100.404296875
                ],
                [
                  131.60000610351562,
                  100.404296875
                ],
                [
                  131.60000610351562,
                  101.404296875
                ],
                [
                  130.60000610351562,
                  101.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                100.404296875,
                131.60000610351562,
                101.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/409",
              "block_type": "TableCell",
              "html": "<td>Boolean functions</td>",
              "polygon": [
                [
                  131.60000610351562,
                  100.404296875
                ],
                [
                  132.60000610351562,
                  100.404296875
                ],
                [
                  132.60000610351562,
                  101.404296875
                ],
                [
                  131.60000610351562,
                  101.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                100.404296875,
                132.60000610351562,
                101.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/410",
              "block_type": "TableCell",
              "html": "<td>54</td>",
              "polygon": [
                [
                  132.60000610351562,
                  100.404296875
                ],
                [
                  133.60000610351562,
                  100.404296875
                ],
                [
                  133.60000610351562,
                  101.404296875
                ],
                [
                  132.60000610351562,
                  101.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                100.404296875,
                133.60000610351562,
                101.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/411",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  101.404296875
                ],
                [
                  130.60000610351562,
                  101.404296875
                ],
                [
                  130.60000610351562,
                  102.404296875
                ],
                [
                  129.60000610351562,
                  102.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                101.404296875,
                130.60000610351562,
                102.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/412",
              "block_type": "TableCell",
              "html": "<td>6.5</td>",
              "polygon": [
                [
                  130.60000610351562,
                  101.404296875
                ],
                [
                  131.60000610351562,
                  101.404296875
                ],
                [
                  131.60000610351562,
                  102.404296875
                ],
                [
                  130.60000610351562,
                  102.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                101.404296875,
                131.60000610351562,
                102.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/413",
              "block_type": "TableCell",
              "html": "<td>More recursion</td>",
              "polygon": [
                [
                  131.60000610351562,
                  101.404296875
                ],
                [
                  132.60000610351562,
                  101.404296875
                ],
                [
                  132.60000610351562,
                  102.404296875
                ],
                [
                  131.60000610351562,
                  102.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                101.404296875,
                132.60000610351562,
                102.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/414",
              "block_type": "TableCell",
              "html": "<td>55</td>",
              "polygon": [
                [
                  132.60000610351562,
                  101.404296875
                ],
                [
                  133.60000610351562,
                  101.404296875
                ],
                [
                  133.60000610351562,
                  102.404296875
                ],
                [
                  132.60000610351562,
                  102.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                101.404296875,
                133.60000610351562,
                102.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/415",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  102.404296875
                ],
                [
                  130.60000610351562,
                  102.404296875
                ],
                [
                  130.60000610351562,
                  103.404296875
                ],
                [
                  129.60000610351562,
                  103.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                102.404296875,
                130.60000610351562,
                103.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/416",
              "block_type": "TableCell",
              "html": "<td>6.6</td>",
              "polygon": [
                [
                  130.60000610351562,
                  102.404296875
                ],
                [
                  131.60000610351562,
                  102.404296875
                ],
                [
                  131.60000610351562,
                  103.404296875
                ],
                [
                  130.60000610351562,
                  103.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                102.404296875,
                131.60000610351562,
                103.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/417",
              "block_type": "TableCell",
              "html": "<td>Leap of faith</td>",
              "polygon": [
                [
                  131.60000610351562,
                  102.404296875
                ],
                [
                  132.60000610351562,
                  102.404296875
                ],
                [
                  132.60000610351562,
                  103.404296875
                ],
                [
                  131.60000610351562,
                  103.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                102.404296875,
                132.60000610351562,
                103.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/418",
              "block_type": "TableCell",
              "html": "<td>57</td>",
              "polygon": [
                [
                  132.60000610351562,
                  102.404296875
                ],
                [
                  133.60000610351562,
                  102.404296875
                ],
                [
                  133.60000610351562,
                  103.404296875
                ],
                [
                  132.60000610351562,
                  103.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                102.404296875,
                133.60000610351562,
                103.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/419",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  103.404296875
                ],
                [
                  130.60000610351562,
                  103.404296875
                ],
                [
                  130.60000610351562,
                  104.404296875
                ],
                [
                  129.60000610351562,
                  104.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                103.404296875,
                130.60000610351562,
                104.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/420",
              "block_type": "TableCell",
              "html": "<td>6.7</td>",
              "polygon": [
                [
                  130.60000610351562,
                  103.404296875
                ],
                [
                  131.60000610351562,
                  103.404296875
                ],
                [
                  131.60000610351562,
                  104.404296875
                ],
                [
                  130.60000610351562,
                  104.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                103.404296875,
                131.60000610351562,
                104.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/421",
              "block_type": "TableCell",
              "html": "<td>One more example</td>",
              "polygon": [
                [
                  131.60000610351562,
                  103.404296875
                ],
                [
                  132.60000610351562,
                  103.404296875
                ],
                [
                  132.60000610351562,
                  104.404296875
                ],
                [
                  131.60000610351562,
                  104.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                103.404296875,
                132.60000610351562,
                104.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/422",
              "block_type": "TableCell",
              "html": "<td>57</td>",
              "polygon": [
                [
                  132.60000610351562,
                  103.404296875
                ],
                [
                  133.60000610351562,
                  103.404296875
                ],
                [
                  133.60000610351562,
                  104.404296875
                ],
                [
                  132.60000610351562,
                  104.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                103.404296875,
                133.60000610351562,
                104.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/423",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  104.404296875
                ],
                [
                  130.60000610351562,
                  104.404296875
                ],
                [
                  130.60000610351562,
                  105.404296875
                ],
                [
                  129.60000610351562,
                  105.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                104.404296875,
                130.60000610351562,
                105.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/424",
              "block_type": "TableCell",
              "html": "<td>6.8</td>",
              "polygon": [
                [
                  130.60000610351562,
                  104.404296875
                ],
                [
                  131.60000610351562,
                  104.404296875
                ],
                [
                  131.60000610351562,
                  105.404296875
                ],
                [
                  130.60000610351562,
                  105.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                104.404296875,
                131.60000610351562,
                105.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/425",
              "block_type": "TableCell",
              "html": "<td>Checking types</td>",
              "polygon": [
                [
                  131.60000610351562,
                  104.404296875
                ],
                [
                  132.60000610351562,
                  104.404296875
                ],
                [
                  132.60000610351562,
                  105.404296875
                ],
                [
                  131.60000610351562,
                  105.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                104.404296875,
                132.60000610351562,
                105.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/426",
              "block_type": "TableCell",
              "html": "<td>58</td>",
              "polygon": [
                [
                  132.60000610351562,
                  104.404296875
                ],
                [
                  133.60000610351562,
                  104.404296875
                ],
                [
                  133.60000610351562,
                  105.404296875
                ],
                [
                  132.60000610351562,
                  105.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                104.404296875,
                133.60000610351562,
                105.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/427",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  105.404296875
                ],
                [
                  130.60000610351562,
                  105.404296875
                ],
                [
                  130.60000610351562,
                  106.404296875
                ],
                [
                  129.60000610351562,
                  106.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                105.404296875,
                130.60000610351562,
                106.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/428",
              "block_type": "TableCell",
              "html": "<td>6.9</td>",
              "polygon": [
                [
                  130.60000610351562,
                  105.404296875
                ],
                [
                  131.60000610351562,
                  105.404296875
                ],
                [
                  131.60000610351562,
                  106.404296875
                ],
                [
                  130.60000610351562,
                  106.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                105.404296875,
                131.60000610351562,
                106.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/429",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.60000610351562,
                  105.404296875
                ],
                [
                  132.60000610351562,
                  105.404296875
                ],
                [
                  132.60000610351562,
                  106.404296875
                ],
                [
                  131.60000610351562,
                  106.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                105.404296875,
                132.60000610351562,
                106.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/430",
              "block_type": "TableCell",
              "html": "<td>59</td>",
              "polygon": [
                [
                  132.60000610351562,
                  105.404296875
                ],
                [
                  133.60000610351562,
                  105.404296875
                ],
                [
                  133.60000610351562,
                  106.404296875
                ],
                [
                  132.60000610351562,
                  106.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                105.404296875,
                133.60000610351562,
                106.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/431",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  106.404296875
                ],
                [
                  130.60000610351562,
                  106.404296875
                ],
                [
                  130.60000610351562,
                  107.404296875
                ],
                [
                  129.60000610351562,
                  107.404296875
                ]
              ],
              "bbox": [
                129.60000610351562,
                106.404296875,
                130.60000610351562,
                107.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/432",
              "block_type": "TableCell",
              "html": "<td>6.10</td>",
              "polygon": [
                [
                  130.60000610351562,
                  106.404296875
                ],
                [
                  131.60000610351562,
                  106.404296875
                ],
                [
                  131.60000610351562,
                  107.404296875
                ],
                [
                  130.60000610351562,
                  107.404296875
                ]
              ],
              "bbox": [
                130.60000610351562,
                106.404296875,
                131.60000610351562,
                107.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/433",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.60000610351562,
                  106.404296875
                ],
                [
                  132.60000610351562,
                  106.404296875
                ],
                [
                  132.60000610351562,
                  107.404296875
                ],
                [
                  131.60000610351562,
                  107.404296875
                ]
              ],
              "bbox": [
                131.60000610351562,
                106.404296875,
                132.60000610351562,
                107.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/14/TableCell/434",
              "block_type": "TableCell",
              "html": "<td>60</td>",
              "polygon": [
                [
                  132.60000610351562,
                  106.404296875
                ],
                [
                  133.60000610351562,
                  106.404296875
                ],
                [
                  133.60000610351562,
                  107.404296875
                ],
                [
                  132.60000610351562,
                  107.404296875
                ]
              ],
              "bbox": [
                132.60000610351562,
                106.404296875,
                133.60000610351562,
                107.404296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/384",
              "block_type": "TableCell",
              "html": "<th>7</th>",
              "polygon": [
                [
                  84.7177734375,
                  84.111328125
                ],
                [
                  85.7177734375,
                  84.111328125
                ],
                [
                  85.7177734375,
                  85.111328125
                ],
                [
                  84.7177734375,
                  85.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                84.111328125,
                85.7177734375,
                85.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/385",
              "block_type": "TableCell",
              "html": "<th>Iteration</th>",
              "polygon": [
                [
                  85.7177734375,
                  84.111328125
                ],
                [
                  86.7177734375,
                  84.111328125
                ],
                [
                  86.7177734375,
                  85.111328125
                ],
                [
                  85.7177734375,
                  85.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                84.111328125,
                86.7177734375,
                85.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/386",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  86.7177734375,
                  84.111328125
                ],
                [
                  87.7177734375,
                  84.111328125
                ],
                [
                  87.7177734375,
                  85.111328125
                ],
                [
                  86.7177734375,
                  85.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                84.111328125,
                87.7177734375,
                85.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/387",
              "block_type": "TableCell",
              "html": "<th>6</th>",
              "polygon": [
                [
                  87.7177734375,
                  84.111328125
                ],
                [
                  88.7177734375,
                  84.111328125
                ],
                [
                  88.7177734375,
                  85.111328125
                ],
                [
                  87.7177734375,
                  85.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                84.111328125,
                88.7177734375,
                85.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/388",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  85.111328125
                ],
                [
                  85.7177734375,
                  85.111328125
                ],
                [
                  85.7177734375,
                  86.111328125
                ],
                [
                  84.7177734375,
                  86.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                85.111328125,
                85.7177734375,
                86.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/389",
              "block_type": "TableCell",
              "html": "<td>7.1</td>",
              "polygon": [
                [
                  85.7177734375,
                  85.111328125
                ],
                [
                  86.7177734375,
                  85.111328125
                ],
                [
                  86.7177734375,
                  86.111328125
                ],
                [
                  85.7177734375,
                  86.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                85.111328125,
                86.7177734375,
                86.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/390",
              "block_type": "TableCell",
              "html": "<td>Multiple assignment</td>",
              "polygon": [
                [
                  86.7177734375,
                  85.111328125
                ],
                [
                  87.7177734375,
                  85.111328125
                ],
                [
                  87.7177734375,
                  86.111328125
                ],
                [
                  86.7177734375,
                  86.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                85.111328125,
                87.7177734375,
                86.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/391",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  85.111328125
                ],
                [
                  88.7177734375,
                  85.111328125
                ],
                [
                  88.7177734375,
                  86.111328125
                ],
                [
                  87.7177734375,
                  86.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                85.111328125,
                88.7177734375,
                86.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/392",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  86.111328125
                ],
                [
                  85.7177734375,
                  86.111328125
                ],
                [
                  85.7177734375,
                  87.111328125
                ],
                [
                  84.7177734375,
                  87.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                86.111328125,
                85.7177734375,
                87.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/393",
              "block_type": "TableCell",
              "html": "<td>7.2</td>",
              "polygon": [
                [
                  85.7177734375,
                  86.111328125
                ],
                [
                  86.7177734375,
                  86.111328125
                ],
                [
                  86.7177734375,
                  87.111328125
                ],
                [
                  85.7177734375,
                  87.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                86.111328125,
                86.7177734375,
                87.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/394",
              "block_type": "TableCell",
              "html": "<td>Updating variables</td>",
              "polygon": [
                [
                  86.7177734375,
                  86.111328125
                ],
                [
                  87.7177734375,
                  86.111328125
                ],
                [
                  87.7177734375,
                  87.111328125
                ],
                [
                  86.7177734375,
                  87.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                86.111328125,
                87.7177734375,
                87.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/395",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  86.111328125
                ],
                [
                  88.7177734375,
                  86.111328125
                ],
                [
                  88.7177734375,
                  87.111328125
                ],
                [
                  87.7177734375,
                  87.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                86.111328125,
                88.7177734375,
                87.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/396",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  87.111328125
                ],
                [
                  85.7177734375,
                  87.111328125
                ],
                [
                  85.7177734375,
                  88.111328125
                ],
                [
                  84.7177734375,
                  88.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                87.111328125,
                85.7177734375,
                88.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/397",
              "block_type": "TableCell",
              "html": "<td>7.3</td>",
              "polygon": [
                [
                  85.7177734375,
                  87.111328125
                ],
                [
                  86.7177734375,
                  87.111328125
                ],
                [
                  86.7177734375,
                  88.111328125
                ],
                [
                  85.7177734375,
                  88.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                87.111328125,
                86.7177734375,
                88.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/398",
              "block_type": "TableCell",
              "html": "<td>The while statement</td>",
              "polygon": [
                [
                  86.7177734375,
                  87.111328125
                ],
                [
                  87.7177734375,
                  87.111328125
                ],
                [
                  87.7177734375,
                  88.111328125
                ],
                [
                  86.7177734375,
                  88.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                87.111328125,
                87.7177734375,
                88.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/399",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  87.111328125
                ],
                [
                  88.7177734375,
                  87.111328125
                ],
                [
                  88.7177734375,
                  88.111328125
                ],
                [
                  87.7177734375,
                  88.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                87.111328125,
                88.7177734375,
                88.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/400",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  88.111328125
                ],
                [
                  85.7177734375,
                  88.111328125
                ],
                [
                  85.7177734375,
                  89.111328125
                ],
                [
                  84.7177734375,
                  89.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                88.111328125,
                85.7177734375,
                89.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/401",
              "block_type": "TableCell",
              "html": "<td>7.4</td>",
              "polygon": [
                [
                  85.7177734375,
                  88.111328125
                ],
                [
                  86.7177734375,
                  88.111328125
                ],
                [
                  86.7177734375,
                  89.111328125
                ],
                [
                  85.7177734375,
                  89.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                88.111328125,
                86.7177734375,
                89.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/402",
              "block_type": "TableCell",
              "html": "<td>break</td>",
              "polygon": [
                [
                  86.7177734375,
                  88.111328125
                ],
                [
                  87.7177734375,
                  88.111328125
                ],
                [
                  87.7177734375,
                  89.111328125
                ],
                [
                  86.7177734375,
                  89.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                88.111328125,
                87.7177734375,
                89.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/403",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  88.111328125
                ],
                [
                  88.7177734375,
                  88.111328125
                ],
                [
                  88.7177734375,
                  89.111328125
                ],
                [
                  87.7177734375,
                  89.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                88.111328125,
                88.7177734375,
                89.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/404",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  89.111328125
                ],
                [
                  85.7177734375,
                  89.111328125
                ],
                [
                  85.7177734375,
                  90.111328125
                ],
                [
                  84.7177734375,
                  90.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                89.111328125,
                85.7177734375,
                90.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/405",
              "block_type": "TableCell",
              "html": "<td>7.5</td>",
              "polygon": [
                [
                  85.7177734375,
                  89.111328125
                ],
                [
                  86.7177734375,
                  89.111328125
                ],
                [
                  86.7177734375,
                  90.111328125
                ],
                [
                  85.7177734375,
                  90.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                89.111328125,
                86.7177734375,
                90.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/406",
              "block_type": "TableCell",
              "html": "<td>Square roots</td>",
              "polygon": [
                [
                  86.7177734375,
                  89.111328125
                ],
                [
                  87.7177734375,
                  89.111328125
                ],
                [
                  87.7177734375,
                  90.111328125
                ],
                [
                  86.7177734375,
                  90.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                89.111328125,
                87.7177734375,
                90.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/407",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  89.111328125
                ],
                [
                  88.7177734375,
                  89.111328125
                ],
                [
                  88.7177734375,
                  90.111328125
                ],
                [
                  87.7177734375,
                  90.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                89.111328125,
                88.7177734375,
                90.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/408",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  90.111328125
                ],
                [
                  85.7177734375,
                  90.111328125
                ],
                [
                  85.7177734375,
                  91.111328125
                ],
                [
                  84.7177734375,
                  91.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                90.111328125,
                85.7177734375,
                91.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/409",
              "block_type": "TableCell",
              "html": "<td>7.6</td>",
              "polygon": [
                [
                  85.7177734375,
                  90.111328125
                ],
                [
                  86.7177734375,
                  90.111328125
                ],
                [
                  86.7177734375,
                  91.111328125
                ],
                [
                  85.7177734375,
                  91.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                90.111328125,
                86.7177734375,
                91.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/410",
              "block_type": "TableCell",
              "html": "<td>Algorithms</td>",
              "polygon": [
                [
                  86.7177734375,
                  90.111328125
                ],
                [
                  87.7177734375,
                  90.111328125
                ],
                [
                  87.7177734375,
                  91.111328125
                ],
                [
                  86.7177734375,
                  91.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                90.111328125,
                87.7177734375,
                91.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/411",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  90.111328125
                ],
                [
                  88.7177734375,
                  90.111328125
                ],
                [
                  88.7177734375,
                  91.111328125
                ],
                [
                  87.7177734375,
                  91.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                90.111328125,
                88.7177734375,
                91.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/412",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  91.111328125
                ],
                [
                  85.7177734375,
                  91.111328125
                ],
                [
                  85.7177734375,
                  92.111328125
                ],
                [
                  84.7177734375,
                  92.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                91.111328125,
                85.7177734375,
                92.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/413",
              "block_type": "TableCell",
              "html": "<td>7.7</td>",
              "polygon": [
                [
                  85.7177734375,
                  91.111328125
                ],
                [
                  86.7177734375,
                  91.111328125
                ],
                [
                  86.7177734375,
                  92.111328125
                ],
                [
                  85.7177734375,
                  92.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                91.111328125,
                86.7177734375,
                92.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/414",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  86.7177734375,
                  91.111328125
                ],
                [
                  87.7177734375,
                  91.111328125
                ],
                [
                  87.7177734375,
                  92.111328125
                ],
                [
                  86.7177734375,
                  92.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                91.111328125,
                87.7177734375,
                92.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/415",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  91.111328125
                ],
                [
                  88.7177734375,
                  91.111328125
                ],
                [
                  88.7177734375,
                  92.111328125
                ],
                [
                  87.7177734375,
                  92.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                91.111328125,
                88.7177734375,
                92.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/416",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  92.111328125
                ],
                [
                  85.7177734375,
                  92.111328125
                ],
                [
                  85.7177734375,
                  93.111328125
                ],
                [
                  84.7177734375,
                  93.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                92.111328125,
                85.7177734375,
                93.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/417",
              "block_type": "TableCell",
              "html": "<td>7.8</td>",
              "polygon": [
                [
                  85.7177734375,
                  92.111328125
                ],
                [
                  86.7177734375,
                  92.111328125
                ],
                [
                  86.7177734375,
                  93.111328125
                ],
                [
                  85.7177734375,
                  93.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                92.111328125,
                86.7177734375,
                93.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/418",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  86.7177734375,
                  92.111328125
                ],
                [
                  87.7177734375,
                  92.111328125
                ],
                [
                  87.7177734375,
                  93.111328125
                ],
                [
                  86.7177734375,
                  93.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                92.111328125,
                87.7177734375,
                93.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/419",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  92.111328125
                ],
                [
                  88.7177734375,
                  92.111328125
                ],
                [
                  88.7177734375,
                  93.111328125
                ],
                [
                  87.7177734375,
                  93.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                92.111328125,
                88.7177734375,
                93.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/420",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  93.111328125
                ],
                [
                  85.7177734375,
                  93.111328125
                ],
                [
                  85.7177734375,
                  94.111328125
                ],
                [
                  84.7177734375,
                  94.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                93.111328125,
                85.7177734375,
                94.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/421",
              "block_type": "TableCell",
              "html": "<td>7.9</td>",
              "polygon": [
                [
                  85.7177734375,
                  93.111328125
                ],
                [
                  86.7177734375,
                  93.111328125
                ],
                [
                  86.7177734375,
                  94.111328125
                ],
                [
                  85.7177734375,
                  94.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                93.111328125,
                86.7177734375,
                94.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/422",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  86.7177734375,
                  93.111328125
                ],
                [
                  87.7177734375,
                  93.111328125
                ],
                [
                  87.7177734375,
                  94.111328125
                ],
                [
                  86.7177734375,
                  94.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                93.111328125,
                87.7177734375,
                94.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/423",
              "block_type": "TableCell",
              "html": "<td>6</td>",
              "polygon": [
                [
                  87.7177734375,
                  93.111328125
                ],
                [
                  88.7177734375,
                  93.111328125
                ],
                [
                  88.7177734375,
                  94.111328125
                ],
                [
                  87.7177734375,
                  94.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                93.111328125,
                88.7177734375,
                94.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/424",
              "block_type": "TableCell",
              "html": "<th>8</th>",
              "polygon": [
                [
                  84.7177734375,
                  94.111328125
                ],
                [
                  85.7177734375,
                  94.111328125
                ],
                [
                  85.7177734375,
                  95.111328125
                ],
                [
                  84.7177734375,
                  95.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                94.111328125,
                85.7177734375,
                95.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/425",
              "block_type": "TableCell",
              "html": "<th>Strings</th>",
              "polygon": [
                [
                  85.7177734375,
                  94.111328125
                ],
                [
                  86.7177734375,
                  94.111328125
                ],
                [
                  86.7177734375,
                  95.111328125
                ],
                [
                  85.7177734375,
                  95.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                94.111328125,
                86.7177734375,
                95.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/426",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  86.7177734375,
                  94.111328125
                ],
                [
                  87.7177734375,
                  94.111328125
                ],
                [
                  87.7177734375,
                  95.111328125
                ],
                [
                  86.7177734375,
                  95.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                94.111328125,
                87.7177734375,
                95.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/427",
              "block_type": "TableCell",
              "html": "<th>7</th>",
              "polygon": [
                [
                  87.7177734375,
                  94.111328125
                ],
                [
                  88.7177734375,
                  94.111328125
                ],
                [
                  88.7177734375,
                  95.111328125
                ],
                [
                  87.7177734375,
                  95.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                94.111328125,
                88.7177734375,
                95.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/428",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  95.111328125
                ],
                [
                  85.7177734375,
                  95.111328125
                ],
                [
                  85.7177734375,
                  96.111328125
                ],
                [
                  84.7177734375,
                  96.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                95.111328125,
                85.7177734375,
                96.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/429",
              "block_type": "TableCell",
              "html": "<td>8.1</td>",
              "polygon": [
                [
                  85.7177734375,
                  95.111328125
                ],
                [
                  86.7177734375,
                  95.111328125
                ],
                [
                  86.7177734375,
                  96.111328125
                ],
                [
                  85.7177734375,
                  96.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                95.111328125,
                86.7177734375,
                96.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/430",
              "block_type": "TableCell",
              "html": "<td>A string is a sequence</td>",
              "polygon": [
                [
                  86.7177734375,
                  95.111328125
                ],
                [
                  87.7177734375,
                  95.111328125
                ],
                [
                  87.7177734375,
                  96.111328125
                ],
                [
                  86.7177734375,
                  96.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                95.111328125,
                87.7177734375,
                96.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/431",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  95.111328125
                ],
                [
                  88.7177734375,
                  95.111328125
                ],
                [
                  88.7177734375,
                  96.111328125
                ],
                [
                  87.7177734375,
                  96.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                95.111328125,
                88.7177734375,
                96.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/432",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  96.111328125
                ],
                [
                  85.7177734375,
                  96.111328125
                ],
                [
                  85.7177734375,
                  97.111328125
                ],
                [
                  84.7177734375,
                  97.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                96.111328125,
                85.7177734375,
                97.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/433",
              "block_type": "TableCell",
              "html": "<td>8.2</td>",
              "polygon": [
                [
                  85.7177734375,
                  96.111328125
                ],
                [
                  86.7177734375,
                  96.111328125
                ],
                [
                  86.7177734375,
                  97.111328125
                ],
                [
                  85.7177734375,
                  97.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                96.111328125,
                86.7177734375,
                97.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/434",
              "block_type": "TableCell",
              "html": "<td>len</td>",
              "polygon": [
                [
                  86.7177734375,
                  96.111328125
                ],
                [
                  87.7177734375,
                  96.111328125
                ],
                [
                  87.7177734375,
                  97.111328125
                ],
                [
                  86.7177734375,
                  97.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                96.111328125,
                87.7177734375,
                97.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/435",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  96.111328125
                ],
                [
                  88.7177734375,
                  96.111328125
                ],
                [
                  88.7177734375,
                  97.111328125
                ],
                [
                  87.7177734375,
                  97.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                96.111328125,
                88.7177734375,
                97.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/436",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  97.111328125
                ],
                [
                  85.7177734375,
                  97.111328125
                ],
                [
                  85.7177734375,
                  98.111328125
                ],
                [
                  84.7177734375,
                  98.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                97.111328125,
                85.7177734375,
                98.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/437",
              "block_type": "TableCell",
              "html": "<td>8.3</td>",
              "polygon": [
                [
                  85.7177734375,
                  97.111328125
                ],
                [
                  86.7177734375,
                  97.111328125
                ],
                [
                  86.7177734375,
                  98.111328125
                ],
                [
                  85.7177734375,
                  98.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                97.111328125,
                86.7177734375,
                98.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/438",
              "block_type": "TableCell",
              "html": "<td>Traversal with a for loop</td>",
              "polygon": [
                [
                  86.7177734375,
                  97.111328125
                ],
                [
                  87.7177734375,
                  97.111328125
                ],
                [
                  87.7177734375,
                  98.111328125
                ],
                [
                  86.7177734375,
                  98.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                97.111328125,
                87.7177734375,
                98.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/439",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  97.111328125
                ],
                [
                  88.7177734375,
                  97.111328125
                ],
                [
                  88.7177734375,
                  98.111328125
                ],
                [
                  87.7177734375,
                  98.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                97.111328125,
                88.7177734375,
                98.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/440",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  98.111328125
                ],
                [
                  85.7177734375,
                  98.111328125
                ],
                [
                  85.7177734375,
                  99.111328125
                ],
                [
                  84.7177734375,
                  99.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                98.111328125,
                85.7177734375,
                99.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/441",
              "block_type": "TableCell",
              "html": "<td>8.4</td>",
              "polygon": [
                [
                  85.7177734375,
                  98.111328125
                ],
                [
                  86.7177734375,
                  98.111328125
                ],
                [
                  86.7177734375,
                  99.111328125
                ],
                [
                  85.7177734375,
                  99.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                98.111328125,
                86.7177734375,
                99.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/442",
              "block_type": "TableCell",
              "html": "<td>String slices</td>",
              "polygon": [
                [
                  86.7177734375,
                  98.111328125
                ],
                [
                  87.7177734375,
                  98.111328125
                ],
                [
                  87.7177734375,
                  99.111328125
                ],
                [
                  86.7177734375,
                  99.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                98.111328125,
                87.7177734375,
                99.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/443",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  98.111328125
                ],
                [
                  88.7177734375,
                  98.111328125
                ],
                [
                  88.7177734375,
                  99.111328125
                ],
                [
                  87.7177734375,
                  99.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                98.111328125,
                88.7177734375,
                99.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/444",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  99.111328125
                ],
                [
                  85.7177734375,
                  99.111328125
                ],
                [
                  85.7177734375,
                  100.111328125
                ],
                [
                  84.7177734375,
                  100.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                99.111328125,
                85.7177734375,
                100.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/445",
              "block_type": "TableCell",
              "html": "<td>8.5</td>",
              "polygon": [
                [
                  85.7177734375,
                  99.111328125
                ],
                [
                  86.7177734375,
                  99.111328125
                ],
                [
                  86.7177734375,
                  100.111328125
                ],
                [
                  85.7177734375,
                  100.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                99.111328125,
                86.7177734375,
                100.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/446",
              "block_type": "TableCell",
              "html": "<td>Strings are immutable</td>",
              "polygon": [
                [
                  86.7177734375,
                  99.111328125
                ],
                [
                  87.7177734375,
                  99.111328125
                ],
                [
                  87.7177734375,
                  100.111328125
                ],
                [
                  86.7177734375,
                  100.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                99.111328125,
                87.7177734375,
                100.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/447",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  99.111328125
                ],
                [
                  88.7177734375,
                  99.111328125
                ],
                [
                  88.7177734375,
                  100.111328125
                ],
                [
                  87.7177734375,
                  100.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                99.111328125,
                88.7177734375,
                100.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/448",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  100.111328125
                ],
                [
                  85.7177734375,
                  100.111328125
                ],
                [
                  85.7177734375,
                  101.111328125
                ],
                [
                  84.7177734375,
                  101.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                100.111328125,
                85.7177734375,
                101.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/449",
              "block_type": "TableCell",
              "html": "<td>8.6</td>",
              "polygon": [
                [
                  85.7177734375,
                  100.111328125
                ],
                [
                  86.7177734375,
                  100.111328125
                ],
                [
                  86.7177734375,
                  101.111328125
                ],
                [
                  85.7177734375,
                  101.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                100.111328125,
                86.7177734375,
                101.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/450",
              "block_type": "TableCell",
              "html": "<td>Searching</td>",
              "polygon": [
                [
                  86.7177734375,
                  100.111328125
                ],
                [
                  87.7177734375,
                  100.111328125
                ],
                [
                  87.7177734375,
                  101.111328125
                ],
                [
                  86.7177734375,
                  101.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                100.111328125,
                87.7177734375,
                101.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/451",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  100.111328125
                ],
                [
                  88.7177734375,
                  100.111328125
                ],
                [
                  88.7177734375,
                  101.111328125
                ],
                [
                  87.7177734375,
                  101.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                100.111328125,
                88.7177734375,
                101.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/452",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  101.111328125
                ],
                [
                  85.7177734375,
                  101.111328125
                ],
                [
                  85.7177734375,
                  102.111328125
                ],
                [
                  84.7177734375,
                  102.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                101.111328125,
                85.7177734375,
                102.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/453",
              "block_type": "TableCell",
              "html": "<td>8.7</td>",
              "polygon": [
                [
                  85.7177734375,
                  101.111328125
                ],
                [
                  86.7177734375,
                  101.111328125
                ],
                [
                  86.7177734375,
                  102.111328125
                ],
                [
                  85.7177734375,
                  102.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                101.111328125,
                86.7177734375,
                102.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/454",
              "block_type": "TableCell",
              "html": "<td>Looping and counting</td>",
              "polygon": [
                [
                  86.7177734375,
                  101.111328125
                ],
                [
                  87.7177734375,
                  101.111328125
                ],
                [
                  87.7177734375,
                  102.111328125
                ],
                [
                  86.7177734375,
                  102.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                101.111328125,
                87.7177734375,
                102.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/455",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  101.111328125
                ],
                [
                  88.7177734375,
                  101.111328125
                ],
                [
                  88.7177734375,
                  102.111328125
                ],
                [
                  87.7177734375,
                  102.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                101.111328125,
                88.7177734375,
                102.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/456",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  102.111328125
                ],
                [
                  85.7177734375,
                  102.111328125
                ],
                [
                  85.7177734375,
                  103.111328125
                ],
                [
                  84.7177734375,
                  103.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                102.111328125,
                85.7177734375,
                103.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/457",
              "block_type": "TableCell",
              "html": "<td>8.8</td>",
              "polygon": [
                [
                  85.7177734375,
                  102.111328125
                ],
                [
                  86.7177734375,
                  102.111328125
                ],
                [
                  86.7177734375,
                  103.111328125
                ],
                [
                  85.7177734375,
                  103.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                102.111328125,
                86.7177734375,
                103.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/458",
              "block_type": "TableCell",
              "html": "<td>String methods</td>",
              "polygon": [
                [
                  86.7177734375,
                  102.111328125
                ],
                [
                  87.7177734375,
                  102.111328125
                ],
                [
                  87.7177734375,
                  103.111328125
                ],
                [
                  86.7177734375,
                  103.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                102.111328125,
                87.7177734375,
                103.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/459",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  102.111328125
                ],
                [
                  88.7177734375,
                  102.111328125
                ],
                [
                  88.7177734375,
                  103.111328125
                ],
                [
                  87.7177734375,
                  103.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                102.111328125,
                88.7177734375,
                103.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/460",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  103.111328125
                ],
                [
                  85.7177734375,
                  103.111328125
                ],
                [
                  85.7177734375,
                  104.111328125
                ],
                [
                  84.7177734375,
                  104.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                103.111328125,
                85.7177734375,
                104.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/461",
              "block_type": "TableCell",
              "html": "<td>8.9</td>",
              "polygon": [
                [
                  85.7177734375,
                  103.111328125
                ],
                [
                  86.7177734375,
                  103.111328125
                ],
                [
                  86.7177734375,
                  104.111328125
                ],
                [
                  85.7177734375,
                  104.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                103.111328125,
                86.7177734375,
                104.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/462",
              "block_type": "TableCell",
              "html": "<td>The in operator</td>",
              "polygon": [
                [
                  86.7177734375,
                  103.111328125
                ],
                [
                  87.7177734375,
                  103.111328125
                ],
                [
                  87.7177734375,
                  104.111328125
                ],
                [
                  86.7177734375,
                  104.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                103.111328125,
                87.7177734375,
                104.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/463",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  103.111328125
                ],
                [
                  88.7177734375,
                  103.111328125
                ],
                [
                  88.7177734375,
                  104.111328125
                ],
                [
                  87.7177734375,
                  104.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                103.111328125,
                88.7177734375,
                104.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/464",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  104.111328125
                ],
                [
                  85.7177734375,
                  104.111328125
                ],
                [
                  85.7177734375,
                  105.111328125
                ],
                [
                  84.7177734375,
                  105.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                104.111328125,
                85.7177734375,
                105.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/465",
              "block_type": "TableCell",
              "html": "<td>8.10</td>",
              "polygon": [
                [
                  85.7177734375,
                  104.111328125
                ],
                [
                  86.7177734375,
                  104.111328125
                ],
                [
                  86.7177734375,
                  105.111328125
                ],
                [
                  85.7177734375,
                  105.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                104.111328125,
                86.7177734375,
                105.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/466",
              "block_type": "TableCell",
              "html": "<td>String comparison</td>",
              "polygon": [
                [
                  86.7177734375,
                  104.111328125
                ],
                [
                  87.7177734375,
                  104.111328125
                ],
                [
                  87.7177734375,
                  105.111328125
                ],
                [
                  86.7177734375,
                  105.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                104.111328125,
                87.7177734375,
                105.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/467",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  104.111328125
                ],
                [
                  88.7177734375,
                  104.111328125
                ],
                [
                  88.7177734375,
                  105.111328125
                ],
                [
                  87.7177734375,
                  105.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                104.111328125,
                88.7177734375,
                105.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/468",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  105.111328125
                ],
                [
                  85.7177734375,
                  105.111328125
                ],
                [
                  85.7177734375,
                  106.111328125
                ],
                [
                  84.7177734375,
                  106.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                105.111328125,
                85.7177734375,
                106.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/469",
              "block_type": "TableCell",
              "html": "<td>8.11</td>",
              "polygon": [
                [
                  85.7177734375,
                  105.111328125
                ],
                [
                  86.7177734375,
                  105.111328125
                ],
                [
                  86.7177734375,
                  106.111328125
                ],
                [
                  85.7177734375,
                  106.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                105.111328125,
                86.7177734375,
                106.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/470",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  86.7177734375,
                  105.111328125
                ],
                [
                  87.7177734375,
                  105.111328125
                ],
                [
                  87.7177734375,
                  106.111328125
                ],
                [
                  86.7177734375,
                  106.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                105.111328125,
                87.7177734375,
                106.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/471",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  105.111328125
                ],
                [
                  88.7177734375,
                  105.111328125
                ],
                [
                  88.7177734375,
                  106.111328125
                ],
                [
                  87.7177734375,
                  106.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                105.111328125,
                88.7177734375,
                106.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/472",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  106.111328125
                ],
                [
                  85.7177734375,
                  106.111328125
                ],
                [
                  85.7177734375,
                  107.111328125
                ],
                [
                  84.7177734375,
                  107.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                106.111328125,
                85.7177734375,
                107.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/473",
              "block_type": "TableCell",
              "html": "<td>8.12</td>",
              "polygon": [
                [
                  85.7177734375,
                  106.111328125
                ],
                [
                  86.7177734375,
                  106.111328125
                ],
                [
                  86.7177734375,
                  107.111328125
                ],
                [
                  85.7177734375,
                  107.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                106.111328125,
                86.7177734375,
                107.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/474",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  86.7177734375,
                  106.111328125
                ],
                [
                  87.7177734375,
                  106.111328125
                ],
                [
                  87.7177734375,
                  107.111328125
                ],
                [
                  86.7177734375,
                  107.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                106.111328125,
                87.7177734375,
                107.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/475",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  106.111328125
                ],
                [
                  88.7177734375,
                  106.111328125
                ],
                [
                  88.7177734375,
                  107.111328125
                ],
                [
                  87.7177734375,
                  107.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                106.111328125,
                88.7177734375,
                107.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/476",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  107.111328125
                ],
                [
                  85.7177734375,
                  107.111328125
                ],
                [
                  85.7177734375,
                  108.111328125
                ],
                [
                  84.7177734375,
                  108.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                107.111328125,
                85.7177734375,
                108.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/477",
              "block_type": "TableCell",
              "html": "<td>8.13</td>",
              "polygon": [
                [
                  85.7177734375,
                  107.111328125
                ],
                [
                  86.7177734375,
                  107.111328125
                ],
                [
                  86.7177734375,
                  108.111328125
                ],
                [
                  85.7177734375,
                  108.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                107.111328125,
                86.7177734375,
                108.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/478",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  86.7177734375,
                  107.111328125
                ],
                [
                  87.7177734375,
                  107.111328125
                ],
                [
                  87.7177734375,
                  108.111328125
                ],
                [
                  86.7177734375,
                  108.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                107.111328125,
                87.7177734375,
                108.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/479",
              "block_type": "TableCell",
              "html": "<td>7</td>",
              "polygon": [
                [
                  87.7177734375,
                  107.111328125
                ],
                [
                  88.7177734375,
                  107.111328125
                ],
                [
                  88.7177734375,
                  108.111328125
                ],
                [
                  87.7177734375,
                  108.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                107.111328125,
                88.7177734375,
                108.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/480",
              "block_type": "TableCell",
              "html": "<th>9</th>",
              "polygon": [
                [
                  84.7177734375,
                  108.111328125
                ],
                [
                  85.7177734375,
                  108.111328125
                ],
                [
                  85.7177734375,
                  109.111328125
                ],
                [
                  84.7177734375,
                  109.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                108.111328125,
                85.7177734375,
                109.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/481",
              "block_type": "TableCell",
              "html": "<td colspan=\"2\">Case study: word play</td>",
              "polygon": [
                [
                  85.7177734375,
                  108.111328125
                ],
                [
                  87.7177734375,
                  108.111328125
                ],
                [
                  87.7177734375,
                  109.111328125
                ],
                [
                  85.7177734375,
                  109.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                108.111328125,
                87.7177734375,
                109.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/482",
              "block_type": "TableCell",
              "html": "<th>8</th>",
              "polygon": [
                [
                  87.7177734375,
                  108.111328125
                ],
                [
                  88.7177734375,
                  108.111328125
                ],
                [
                  88.7177734375,
                  109.111328125
                ],
                [
                  87.7177734375,
                  109.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                108.111328125,
                88.7177734375,
                109.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/483",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  109.111328125
                ],
                [
                  85.7177734375,
                  109.111328125
                ],
                [
                  85.7177734375,
                  110.111328125
                ],
                [
                  84.7177734375,
                  110.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                109.111328125,
                85.7177734375,
                110.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/484",
              "block_type": "TableCell",
              "html": "<td>9.1</td>",
              "polygon": [
                [
                  85.7177734375,
                  109.111328125
                ],
                [
                  86.7177734375,
                  109.111328125
                ],
                [
                  86.7177734375,
                  110.111328125
                ],
                [
                  85.7177734375,
                  110.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                109.111328125,
                86.7177734375,
                110.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/485",
              "block_type": "TableCell",
              "html": "<td>Reading word lists</td>",
              "polygon": [
                [
                  86.7177734375,
                  109.111328125
                ],
                [
                  87.7177734375,
                  109.111328125
                ],
                [
                  87.7177734375,
                  110.111328125
                ],
                [
                  86.7177734375,
                  110.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                109.111328125,
                87.7177734375,
                110.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/486",
              "block_type": "TableCell",
              "html": "<td>8</td>",
              "polygon": [
                [
                  87.7177734375,
                  109.111328125
                ],
                [
                  88.7177734375,
                  109.111328125
                ],
                [
                  88.7177734375,
                  110.111328125
                ],
                [
                  87.7177734375,
                  110.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                109.111328125,
                88.7177734375,
                110.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/487",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  110.111328125
                ],
                [
                  85.7177734375,
                  110.111328125
                ],
                [
                  85.7177734375,
                  111.111328125
                ],
                [
                  84.7177734375,
                  111.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                110.111328125,
                85.7177734375,
                111.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/488",
              "block_type": "TableCell",
              "html": "<td>9.2</td>",
              "polygon": [
                [
                  85.7177734375,
                  110.111328125
                ],
                [
                  86.7177734375,
                  110.111328125
                ],
                [
                  86.7177734375,
                  111.111328125
                ],
                [
                  85.7177734375,
                  111.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                110.111328125,
                86.7177734375,
                111.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/489",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  86.7177734375,
                  110.111328125
                ],
                [
                  87.7177734375,
                  110.111328125
                ],
                [
                  87.7177734375,
                  111.111328125
                ],
                [
                  86.7177734375,
                  111.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                110.111328125,
                87.7177734375,
                111.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/490",
              "block_type": "TableCell",
              "html": "<td>8</td>",
              "polygon": [
                [
                  87.7177734375,
                  110.111328125
                ],
                [
                  88.7177734375,
                  110.111328125
                ],
                [
                  88.7177734375,
                  111.111328125
                ],
                [
                  87.7177734375,
                  111.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                110.111328125,
                88.7177734375,
                111.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/491",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  111.111328125
                ],
                [
                  85.7177734375,
                  111.111328125
                ],
                [
                  85.7177734375,
                  112.111328125
                ],
                [
                  84.7177734375,
                  112.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                111.111328125,
                85.7177734375,
                112.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/492",
              "block_type": "TableCell",
              "html": "<td>9.3</td>",
              "polygon": [
                [
                  85.7177734375,
                  111.111328125
                ],
                [
                  86.7177734375,
                  111.111328125
                ],
                [
                  86.7177734375,
                  112.111328125
                ],
                [
                  85.7177734375,
                  112.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                111.111328125,
                86.7177734375,
                112.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/493",
              "block_type": "TableCell",
              "html": "<td>Search</td>",
              "polygon": [
                [
                  86.7177734375,
                  111.111328125
                ],
                [
                  87.7177734375,
                  111.111328125
                ],
                [
                  87.7177734375,
                  112.111328125
                ],
                [
                  86.7177734375,
                  112.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                111.111328125,
                87.7177734375,
                112.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/494",
              "block_type": "TableCell",
              "html": "<td>8</td>",
              "polygon": [
                [
                  87.7177734375,
                  111.111328125
                ],
                [
                  88.7177734375,
                  111.111328125
                ],
                [
                  88.7177734375,
                  112.111328125
                ],
                [
                  87.7177734375,
                  112.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                111.111328125,
                88.7177734375,
                112.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/495",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  112.111328125
                ],
                [
                  85.7177734375,
                  112.111328125
                ],
                [
                  85.7177734375,
                  113.111328125
                ],
                [
                  84.7177734375,
                  113.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                112.111328125,
                85.7177734375,
                113.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/496",
              "block_type": "TableCell",
              "html": "<td>9.4</td>",
              "polygon": [
                [
                  85.7177734375,
                  112.111328125
                ],
                [
                  86.7177734375,
                  112.111328125
                ],
                [
                  86.7177734375,
                  113.111328125
                ],
                [
                  85.7177734375,
                  113.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                112.111328125,
                86.7177734375,
                113.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/497",
              "block_type": "TableCell",
              "html": "<td>Looping with indices</td>",
              "polygon": [
                [
                  86.7177734375,
                  112.111328125
                ],
                [
                  87.7177734375,
                  112.111328125
                ],
                [
                  87.7177734375,
                  113.111328125
                ],
                [
                  86.7177734375,
                  113.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                112.111328125,
                87.7177734375,
                113.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/498",
              "block_type": "TableCell",
              "html": "<td>8</td>",
              "polygon": [
                [
                  87.7177734375,
                  112.111328125
                ],
                [
                  88.7177734375,
                  112.111328125
                ],
                [
                  88.7177734375,
                  113.111328125
                ],
                [
                  87.7177734375,
                  113.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                112.111328125,
                88.7177734375,
                113.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/499",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  113.111328125
                ],
                [
                  85.7177734375,
                  113.111328125
                ],
                [
                  85.7177734375,
                  114.111328125
                ],
                [
                  84.7177734375,
                  114.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                113.111328125,
                85.7177734375,
                114.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/500",
              "block_type": "TableCell",
              "html": "<td>9.5</td>",
              "polygon": [
                [
                  85.7177734375,
                  113.111328125
                ],
                [
                  86.7177734375,
                  113.111328125
                ],
                [
                  86.7177734375,
                  114.111328125
                ],
                [
                  85.7177734375,
                  114.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                113.111328125,
                86.7177734375,
                114.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/501",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  86.7177734375,
                  113.111328125
                ],
                [
                  87.7177734375,
                  113.111328125
                ],
                [
                  87.7177734375,
                  114.111328125
                ],
                [
                  86.7177734375,
                  114.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                113.111328125,
                87.7177734375,
                114.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/502",
              "block_type": "TableCell",
              "html": "<td>8</td>",
              "polygon": [
                [
                  87.7177734375,
                  113.111328125
                ],
                [
                  88.7177734375,
                  113.111328125
                ],
                [
                  88.7177734375,
                  114.111328125
                ],
                [
                  87.7177734375,
                  114.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                113.111328125,
                88.7177734375,
                114.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/503",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  114.111328125
                ],
                [
                  85.7177734375,
                  114.111328125
                ],
                [
                  85.7177734375,
                  115.111328125
                ],
                [
                  84.7177734375,
                  115.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                114.111328125,
                85.7177734375,
                115.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/504",
              "block_type": "TableCell",
              "html": "<td>9.6</td>",
              "polygon": [
                [
                  85.7177734375,
                  114.111328125
                ],
                [
                  86.7177734375,
                  114.111328125
                ],
                [
                  86.7177734375,
                  115.111328125
                ],
                [
                  85.7177734375,
                  115.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                114.111328125,
                86.7177734375,
                115.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/505",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  86.7177734375,
                  114.111328125
                ],
                [
                  87.7177734375,
                  114.111328125
                ],
                [
                  87.7177734375,
                  115.111328125
                ],
                [
                  86.7177734375,
                  115.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                114.111328125,
                87.7177734375,
                115.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/506",
              "block_type": "TableCell",
              "html": "<td>8</td>",
              "polygon": [
                [
                  87.7177734375,
                  114.111328125
                ],
                [
                  88.7177734375,
                  114.111328125
                ],
                [
                  88.7177734375,
                  115.111328125
                ],
                [
                  87.7177734375,
                  115.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                114.111328125,
                88.7177734375,
                115.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/507",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  84.7177734375,
                  115.111328125
                ],
                [
                  85.7177734375,
                  115.111328125
                ],
                [
                  85.7177734375,
                  116.111328125
                ],
                [
                  84.7177734375,
                  116.111328125
                ]
              ],
              "bbox": [
                84.7177734375,
                115.111328125,
                85.7177734375,
                116.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/508",
              "block_type": "TableCell",
              "html": "<td>9.7</td>",
              "polygon": [
                [
                  85.7177734375,
                  115.111328125
                ],
                [
                  86.7177734375,
                  115.111328125
                ],
                [
                  86.7177734375,
                  116.111328125
                ],
                [
                  85.7177734375,
                  116.111328125
                ]
              ],
              "bbox": [
                85.7177734375,
                115.111328125,
                86.7177734375,
                116.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/509",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  86.7177734375,
                  115.111328125
                ],
                [
                  87.7177734375,
                  115.111328125
                ],
                [
                  87.7177734375,
                  116.111328125
                ],
                [
                  86.7177734375,
                  116.111328125
                ]
              ],
              "bbox": [
                86.7177734375,
                115.111328125,
                87.7177734375,
                116.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/15/TableCell/510",
              "block_type": "TableCell",
              "html": "<td>8</td>",
              "polygon": [
                [
                  87.7177734375,
                  115.111328125
                ],
                [
                  88.7177734375,
                  115.111328125
                ],
                [
                  88.7177734375,
                  116.111328125
                ],
                [
                  87.7177734375,
                  116.111328125
                ]
              ],
              "bbox": [
                87.7177734375,
                115.111328125,
                88.7177734375,
                116.111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/346",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  129.5999755859375,
                  83.53125
                ],
                [
                  130.5999755859375,
                  83.53125
                ],
                [
                  130.5999755859375,
                  84.53125
                ],
                [
                  129.5999755859375,
                  84.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                83.53125,
                130.5999755859375,
                84.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/347",
              "block_type": "TableCell",
              "html": "<th>10 Lists</th>",
              "polygon": [
                [
                  130.5999755859375,
                  83.53125
                ],
                [
                  131.5999755859375,
                  83.53125
                ],
                [
                  131.5999755859375,
                  84.53125
                ],
                [
                  130.5999755859375,
                  84.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                83.53125,
                131.5999755859375,
                84.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/348",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  131.5999755859375,
                  83.53125
                ],
                [
                  132.5999755859375,
                  83.53125
                ],
                [
                  132.5999755859375,
                  84.53125
                ],
                [
                  131.5999755859375,
                  84.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                83.53125,
                132.5999755859375,
                84.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/349",
              "block_type": "TableCell",
              "html": "<th>87</th>",
              "polygon": [
                [
                  132.5999755859375,
                  83.53125
                ],
                [
                  133.5999755859375,
                  83.53125
                ],
                [
                  133.5999755859375,
                  84.53125
                ],
                [
                  132.5999755859375,
                  84.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                83.53125,
                133.5999755859375,
                84.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/350",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  84.53125
                ],
                [
                  130.5999755859375,
                  84.53125
                ],
                [
                  130.5999755859375,
                  85.53125
                ],
                [
                  129.5999755859375,
                  85.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                84.53125,
                130.5999755859375,
                85.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/351",
              "block_type": "TableCell",
              "html": "<td>10.1</td>",
              "polygon": [
                [
                  130.5999755859375,
                  84.53125
                ],
                [
                  131.5999755859375,
                  84.53125
                ],
                [
                  131.5999755859375,
                  85.53125
                ],
                [
                  130.5999755859375,
                  85.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                84.53125,
                131.5999755859375,
                85.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/352",
              "block_type": "TableCell",
              "html": "<td>A list is a sequence</td>",
              "polygon": [
                [
                  131.5999755859375,
                  84.53125
                ],
                [
                  132.5999755859375,
                  84.53125
                ],
                [
                  132.5999755859375,
                  85.53125
                ],
                [
                  131.5999755859375,
                  85.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                84.53125,
                132.5999755859375,
                85.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/353",
              "block_type": "TableCell",
              "html": "<td>87</td>",
              "polygon": [
                [
                  132.5999755859375,
                  84.53125
                ],
                [
                  133.5999755859375,
                  84.53125
                ],
                [
                  133.5999755859375,
                  85.53125
                ],
                [
                  132.5999755859375,
                  85.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                84.53125,
                133.5999755859375,
                85.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/354",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  85.53125
                ],
                [
                  130.5999755859375,
                  85.53125
                ],
                [
                  130.5999755859375,
                  86.53125
                ],
                [
                  129.5999755859375,
                  86.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                85.53125,
                130.5999755859375,
                86.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/355",
              "block_type": "TableCell",
              "html": "<td>10.2</td>",
              "polygon": [
                [
                  130.5999755859375,
                  85.53125
                ],
                [
                  131.5999755859375,
                  85.53125
                ],
                [
                  131.5999755859375,
                  86.53125
                ],
                [
                  130.5999755859375,
                  86.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                85.53125,
                131.5999755859375,
                86.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/356",
              "block_type": "TableCell",
              "html": "<td>Lists are mutable</td>",
              "polygon": [
                [
                  131.5999755859375,
                  85.53125
                ],
                [
                  132.5999755859375,
                  85.53125
                ],
                [
                  132.5999755859375,
                  86.53125
                ],
                [
                  131.5999755859375,
                  86.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                85.53125,
                132.5999755859375,
                86.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/357",
              "block_type": "TableCell",
              "html": "<td>87</td>",
              "polygon": [
                [
                  132.5999755859375,
                  85.53125
                ],
                [
                  133.5999755859375,
                  85.53125
                ],
                [
                  133.5999755859375,
                  86.53125
                ],
                [
                  132.5999755859375,
                  86.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                85.53125,
                133.5999755859375,
                86.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/358",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  86.53125
                ],
                [
                  130.5999755859375,
                  86.53125
                ],
                [
                  130.5999755859375,
                  87.53125
                ],
                [
                  129.5999755859375,
                  87.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                86.53125,
                130.5999755859375,
                87.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/359",
              "block_type": "TableCell",
              "html": "<td>10.3</td>",
              "polygon": [
                [
                  130.5999755859375,
                  86.53125
                ],
                [
                  131.5999755859375,
                  86.53125
                ],
                [
                  131.5999755859375,
                  87.53125
                ],
                [
                  130.5999755859375,
                  87.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                86.53125,
                131.5999755859375,
                87.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/360",
              "block_type": "TableCell",
              "html": "<td>Traversing a list</td>",
              "polygon": [
                [
                  131.5999755859375,
                  86.53125
                ],
                [
                  132.5999755859375,
                  86.53125
                ],
                [
                  132.5999755859375,
                  87.53125
                ],
                [
                  131.5999755859375,
                  87.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                86.53125,
                132.5999755859375,
                87.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/361",
              "block_type": "TableCell",
              "html": "<td>89</td>",
              "polygon": [
                [
                  132.5999755859375,
                  86.53125
                ],
                [
                  133.5999755859375,
                  86.53125
                ],
                [
                  133.5999755859375,
                  87.53125
                ],
                [
                  132.5999755859375,
                  87.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                86.53125,
                133.5999755859375,
                87.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/362",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  87.53125
                ],
                [
                  130.5999755859375,
                  87.53125
                ],
                [
                  130.5999755859375,
                  88.53125
                ],
                [
                  129.5999755859375,
                  88.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                87.53125,
                130.5999755859375,
                88.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/363",
              "block_type": "TableCell",
              "html": "<td>10.4</td>",
              "polygon": [
                [
                  130.5999755859375,
                  87.53125
                ],
                [
                  131.5999755859375,
                  87.53125
                ],
                [
                  131.5999755859375,
                  88.53125
                ],
                [
                  130.5999755859375,
                  88.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                87.53125,
                131.5999755859375,
                88.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/364",
              "block_type": "TableCell",
              "html": "<td>List operations</td>",
              "polygon": [
                [
                  131.5999755859375,
                  87.53125
                ],
                [
                  132.5999755859375,
                  87.53125
                ],
                [
                  132.5999755859375,
                  88.53125
                ],
                [
                  131.5999755859375,
                  88.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                87.53125,
                132.5999755859375,
                88.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/365",
              "block_type": "TableCell",
              "html": "<td>89</td>",
              "polygon": [
                [
                  132.5999755859375,
                  87.53125
                ],
                [
                  133.5999755859375,
                  87.53125
                ],
                [
                  133.5999755859375,
                  88.53125
                ],
                [
                  132.5999755859375,
                  88.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                87.53125,
                133.5999755859375,
                88.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/366",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  88.53125
                ],
                [
                  130.5999755859375,
                  88.53125
                ],
                [
                  130.5999755859375,
                  89.53125
                ],
                [
                  129.5999755859375,
                  89.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                88.53125,
                130.5999755859375,
                89.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/367",
              "block_type": "TableCell",
              "html": "<td>10.5</td>",
              "polygon": [
                [
                  130.5999755859375,
                  88.53125
                ],
                [
                  131.5999755859375,
                  88.53125
                ],
                [
                  131.5999755859375,
                  89.53125
                ],
                [
                  130.5999755859375,
                  89.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                88.53125,
                131.5999755859375,
                89.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/368",
              "block_type": "TableCell",
              "html": "<td>List slices</td>",
              "polygon": [
                [
                  131.5999755859375,
                  88.53125
                ],
                [
                  132.5999755859375,
                  88.53125
                ],
                [
                  132.5999755859375,
                  89.53125
                ],
                [
                  131.5999755859375,
                  89.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                88.53125,
                132.5999755859375,
                89.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/369",
              "block_type": "TableCell",
              "html": "<td>89</td>",
              "polygon": [
                [
                  132.5999755859375,
                  88.53125
                ],
                [
                  133.5999755859375,
                  88.53125
                ],
                [
                  133.5999755859375,
                  89.53125
                ],
                [
                  132.5999755859375,
                  89.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                88.53125,
                133.5999755859375,
                89.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/370",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  89.53125
                ],
                [
                  130.5999755859375,
                  89.53125
                ],
                [
                  130.5999755859375,
                  90.53125
                ],
                [
                  129.5999755859375,
                  90.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                89.53125,
                130.5999755859375,
                90.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/371",
              "block_type": "TableCell",
              "html": "<td>10.6</td>",
              "polygon": [
                [
                  130.5999755859375,
                  89.53125
                ],
                [
                  131.5999755859375,
                  89.53125
                ],
                [
                  131.5999755859375,
                  90.53125
                ],
                [
                  130.5999755859375,
                  90.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                89.53125,
                131.5999755859375,
                90.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/372",
              "block_type": "TableCell",
              "html": "<td>List methods</td>",
              "polygon": [
                [
                  131.5999755859375,
                  89.53125
                ],
                [
                  132.5999755859375,
                  89.53125
                ],
                [
                  132.5999755859375,
                  90.53125
                ],
                [
                  131.5999755859375,
                  90.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                89.53125,
                132.5999755859375,
                90.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/373",
              "block_type": "TableCell",
              "html": "<td>90</td>",
              "polygon": [
                [
                  132.5999755859375,
                  89.53125
                ],
                [
                  133.5999755859375,
                  89.53125
                ],
                [
                  133.5999755859375,
                  90.53125
                ],
                [
                  132.5999755859375,
                  90.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                89.53125,
                133.5999755859375,
                90.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/374",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  90.53125
                ],
                [
                  130.5999755859375,
                  90.53125
                ],
                [
                  130.5999755859375,
                  91.53125
                ],
                [
                  129.5999755859375,
                  91.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                90.53125,
                130.5999755859375,
                91.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/375",
              "block_type": "TableCell",
              "html": "<td>10.7</td>",
              "polygon": [
                [
                  130.5999755859375,
                  90.53125
                ],
                [
                  131.5999755859375,
                  90.53125
                ],
                [
                  131.5999755859375,
                  91.53125
                ],
                [
                  130.5999755859375,
                  91.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                90.53125,
                131.5999755859375,
                91.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/376",
              "block_type": "TableCell",
              "html": "<td>Map, filter and reduce</td>",
              "polygon": [
                [
                  131.5999755859375,
                  90.53125
                ],
                [
                  132.5999755859375,
                  90.53125
                ],
                [
                  132.5999755859375,
                  91.53125
                ],
                [
                  131.5999755859375,
                  91.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                90.53125,
                132.5999755859375,
                91.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/377",
              "block_type": "TableCell",
              "html": "<td>91</td>",
              "polygon": [
                [
                  132.5999755859375,
                  90.53125
                ],
                [
                  133.5999755859375,
                  90.53125
                ],
                [
                  133.5999755859375,
                  91.53125
                ],
                [
                  132.5999755859375,
                  91.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                90.53125,
                133.5999755859375,
                91.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/378",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  91.53125
                ],
                [
                  130.5999755859375,
                  91.53125
                ],
                [
                  130.5999755859375,
                  92.53125
                ],
                [
                  129.5999755859375,
                  92.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                91.53125,
                130.5999755859375,
                92.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/379",
              "block_type": "TableCell",
              "html": "<td>10.8</td>",
              "polygon": [
                [
                  130.5999755859375,
                  91.53125
                ],
                [
                  131.5999755859375,
                  91.53125
                ],
                [
                  131.5999755859375,
                  92.53125
                ],
                [
                  130.5999755859375,
                  92.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                91.53125,
                131.5999755859375,
                92.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/380",
              "block_type": "TableCell",
              "html": "<td>Deleting elements</td>",
              "polygon": [
                [
                  131.5999755859375,
                  91.53125
                ],
                [
                  132.5999755859375,
                  91.53125
                ],
                [
                  132.5999755859375,
                  92.53125
                ],
                [
                  131.5999755859375,
                  92.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                91.53125,
                132.5999755859375,
                92.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/381",
              "block_type": "TableCell",
              "html": "<td>92</td>",
              "polygon": [
                [
                  132.5999755859375,
                  91.53125
                ],
                [
                  133.5999755859375,
                  91.53125
                ],
                [
                  133.5999755859375,
                  92.53125
                ],
                [
                  132.5999755859375,
                  92.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                91.53125,
                133.5999755859375,
                92.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/382",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  92.53125
                ],
                [
                  130.5999755859375,
                  92.53125
                ],
                [
                  130.5999755859375,
                  93.53125
                ],
                [
                  129.5999755859375,
                  93.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                92.53125,
                130.5999755859375,
                93.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/383",
              "block_type": "TableCell",
              "html": "<td>10.9</td>",
              "polygon": [
                [
                  130.5999755859375,
                  92.53125
                ],
                [
                  131.5999755859375,
                  92.53125
                ],
                [
                  131.5999755859375,
                  93.53125
                ],
                [
                  130.5999755859375,
                  93.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                92.53125,
                131.5999755859375,
                93.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/384",
              "block_type": "TableCell",
              "html": "<td>Lists and strings</td>",
              "polygon": [
                [
                  131.5999755859375,
                  92.53125
                ],
                [
                  132.5999755859375,
                  92.53125
                ],
                [
                  132.5999755859375,
                  93.53125
                ],
                [
                  131.5999755859375,
                  93.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                92.53125,
                132.5999755859375,
                93.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/385",
              "block_type": "TableCell",
              "html": "<td>93</td>",
              "polygon": [
                [
                  132.5999755859375,
                  92.53125
                ],
                [
                  133.5999755859375,
                  92.53125
                ],
                [
                  133.5999755859375,
                  93.53125
                ],
                [
                  132.5999755859375,
                  93.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                92.53125,
                133.5999755859375,
                93.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/386",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  93.53125
                ],
                [
                  130.5999755859375,
                  93.53125
                ],
                [
                  130.5999755859375,
                  94.53125
                ],
                [
                  129.5999755859375,
                  94.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                93.53125,
                130.5999755859375,
                94.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/387",
              "block_type": "TableCell",
              "html": "<td>10.10</td>",
              "polygon": [
                [
                  130.5999755859375,
                  93.53125
                ],
                [
                  131.5999755859375,
                  93.53125
                ],
                [
                  131.5999755859375,
                  94.53125
                ],
                [
                  130.5999755859375,
                  94.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                93.53125,
                131.5999755859375,
                94.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/388",
              "block_type": "TableCell",
              "html": "<td>Objects and values</td>",
              "polygon": [
                [
                  131.5999755859375,
                  93.53125
                ],
                [
                  132.5999755859375,
                  93.53125
                ],
                [
                  132.5999755859375,
                  94.53125
                ],
                [
                  131.5999755859375,
                  94.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                93.53125,
                132.5999755859375,
                94.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/389",
              "block_type": "TableCell",
              "html": "<td>93</td>",
              "polygon": [
                [
                  132.5999755859375,
                  93.53125
                ],
                [
                  133.5999755859375,
                  93.53125
                ],
                [
                  133.5999755859375,
                  94.53125
                ],
                [
                  132.5999755859375,
                  94.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                93.53125,
                133.5999755859375,
                94.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/390",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  94.53125
                ],
                [
                  130.5999755859375,
                  94.53125
                ],
                [
                  130.5999755859375,
                  95.53125
                ],
                [
                  129.5999755859375,
                  95.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                94.53125,
                130.5999755859375,
                95.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/391",
              "block_type": "TableCell",
              "html": "<td>10.11</td>",
              "polygon": [
                [
                  130.5999755859375,
                  94.53125
                ],
                [
                  131.5999755859375,
                  94.53125
                ],
                [
                  131.5999755859375,
                  95.53125
                ],
                [
                  130.5999755859375,
                  95.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                94.53125,
                131.5999755859375,
                95.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/392",
              "block_type": "TableCell",
              "html": "<td>Aliasing</td>",
              "polygon": [
                [
                  131.5999755859375,
                  94.53125
                ],
                [
                  132.5999755859375,
                  94.53125
                ],
                [
                  132.5999755859375,
                  95.53125
                ],
                [
                  131.5999755859375,
                  95.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                94.53125,
                132.5999755859375,
                95.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/393",
              "block_type": "TableCell",
              "html": "<td>94</td>",
              "polygon": [
                [
                  132.5999755859375,
                  94.53125
                ],
                [
                  133.5999755859375,
                  94.53125
                ],
                [
                  133.5999755859375,
                  95.53125
                ],
                [
                  132.5999755859375,
                  95.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                94.53125,
                133.5999755859375,
                95.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/394",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  95.53125
                ],
                [
                  130.5999755859375,
                  95.53125
                ],
                [
                  130.5999755859375,
                  96.53125
                ],
                [
                  129.5999755859375,
                  96.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                95.53125,
                130.5999755859375,
                96.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/395",
              "block_type": "TableCell",
              "html": "<td>10.12</td>",
              "polygon": [
                [
                  130.5999755859375,
                  95.53125
                ],
                [
                  131.5999755859375,
                  95.53125
                ],
                [
                  131.5999755859375,
                  96.53125
                ],
                [
                  130.5999755859375,
                  96.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                95.53125,
                131.5999755859375,
                96.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/396",
              "block_type": "TableCell",
              "html": "<td>List arguments</td>",
              "polygon": [
                [
                  131.5999755859375,
                  95.53125
                ],
                [
                  132.5999755859375,
                  95.53125
                ],
                [
                  132.5999755859375,
                  96.53125
                ],
                [
                  131.5999755859375,
                  96.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                95.53125,
                132.5999755859375,
                96.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/397",
              "block_type": "TableCell",
              "html": "<td>95</td>",
              "polygon": [
                [
                  132.5999755859375,
                  95.53125
                ],
                [
                  133.5999755859375,
                  95.53125
                ],
                [
                  133.5999755859375,
                  96.53125
                ],
                [
                  132.5999755859375,
                  96.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                95.53125,
                133.5999755859375,
                96.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/398",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  96.53125
                ],
                [
                  130.5999755859375,
                  96.53125
                ],
                [
                  130.5999755859375,
                  97.53125
                ],
                [
                  129.5999755859375,
                  97.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                96.53125,
                130.5999755859375,
                97.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/399",
              "block_type": "TableCell",
              "html": "<td>10.13</td>",
              "polygon": [
                [
                  130.5999755859375,
                  96.53125
                ],
                [
                  131.5999755859375,
                  96.53125
                ],
                [
                  131.5999755859375,
                  97.53125
                ],
                [
                  130.5999755859375,
                  97.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                96.53125,
                131.5999755859375,
                97.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/400",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.5999755859375,
                  96.53125
                ],
                [
                  132.5999755859375,
                  96.53125
                ],
                [
                  132.5999755859375,
                  97.53125
                ],
                [
                  131.5999755859375,
                  97.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                96.53125,
                132.5999755859375,
                97.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/401",
              "block_type": "TableCell",
              "html": "<td>96</td>",
              "polygon": [
                [
                  132.5999755859375,
                  96.53125
                ],
                [
                  133.5999755859375,
                  96.53125
                ],
                [
                  133.5999755859375,
                  97.53125
                ],
                [
                  132.5999755859375,
                  97.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                96.53125,
                133.5999755859375,
                97.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/402",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  97.53125
                ],
                [
                  130.5999755859375,
                  97.53125
                ],
                [
                  130.5999755859375,
                  98.53125
                ],
                [
                  129.5999755859375,
                  98.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                97.53125,
                130.5999755859375,
                98.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/403",
              "block_type": "TableCell",
              "html": "<td>10.14</td>",
              "polygon": [
                [
                  130.5999755859375,
                  97.53125
                ],
                [
                  131.5999755859375,
                  97.53125
                ],
                [
                  131.5999755859375,
                  98.53125
                ],
                [
                  130.5999755859375,
                  98.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                97.53125,
                131.5999755859375,
                98.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/404",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.5999755859375,
                  97.53125
                ],
                [
                  132.5999755859375,
                  97.53125
                ],
                [
                  132.5999755859375,
                  98.53125
                ],
                [
                  131.5999755859375,
                  98.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                97.53125,
                132.5999755859375,
                98.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/405",
              "block_type": "TableCell",
              "html": "<td>97</td>",
              "polygon": [
                [
                  132.5999755859375,
                  97.53125
                ],
                [
                  133.5999755859375,
                  97.53125
                ],
                [
                  133.5999755859375,
                  98.53125
                ],
                [
                  132.5999755859375,
                  98.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                97.53125,
                133.5999755859375,
                98.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/406",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  98.53125
                ],
                [
                  130.5999755859375,
                  98.53125
                ],
                [
                  130.5999755859375,
                  99.53125
                ],
                [
                  129.5999755859375,
                  99.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                98.53125,
                130.5999755859375,
                99.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/407",
              "block_type": "TableCell",
              "html": "<td>10.15</td>",
              "polygon": [
                [
                  130.5999755859375,
                  98.53125
                ],
                [
                  131.5999755859375,
                  98.53125
                ],
                [
                  131.5999755859375,
                  99.53125
                ],
                [
                  130.5999755859375,
                  99.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                98.53125,
                131.5999755859375,
                99.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/408",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  131.5999755859375,
                  98.53125
                ],
                [
                  132.5999755859375,
                  98.53125
                ],
                [
                  132.5999755859375,
                  99.53125
                ],
                [
                  131.5999755859375,
                  99.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                98.53125,
                132.5999755859375,
                99.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/409",
              "block_type": "TableCell",
              "html": "<td>98</td>",
              "polygon": [
                [
                  132.5999755859375,
                  98.53125
                ],
                [
                  133.5999755859375,
                  98.53125
                ],
                [
                  133.5999755859375,
                  99.53125
                ],
                [
                  132.5999755859375,
                  99.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                98.53125,
                133.5999755859375,
                99.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/410",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  129.5999755859375,
                  99.53125
                ],
                [
                  130.5999755859375,
                  99.53125
                ],
                [
                  130.5999755859375,
                  100.53125
                ],
                [
                  129.5999755859375,
                  100.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                99.53125,
                130.5999755859375,
                100.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/411",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  130.5999755859375,
                  99.53125
                ],
                [
                  131.5999755859375,
                  99.53125
                ],
                [
                  131.5999755859375,
                  100.53125
                ],
                [
                  130.5999755859375,
                  100.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                99.53125,
                131.5999755859375,
                100.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/412",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  131.5999755859375,
                  99.53125
                ],
                [
                  132.5999755859375,
                  99.53125
                ],
                [
                  132.5999755859375,
                  100.53125
                ],
                [
                  131.5999755859375,
                  100.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                99.53125,
                132.5999755859375,
                100.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/413",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  132.5999755859375,
                  99.53125
                ],
                [
                  133.5999755859375,
                  99.53125
                ],
                [
                  133.5999755859375,
                  100.53125
                ],
                [
                  132.5999755859375,
                  100.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                99.53125,
                133.5999755859375,
                100.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/414",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  129.5999755859375,
                  100.53125
                ],
                [
                  130.5999755859375,
                  100.53125
                ],
                [
                  130.5999755859375,
                  101.53125
                ],
                [
                  129.5999755859375,
                  101.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                100.53125,
                130.5999755859375,
                101.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/415",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  130.5999755859375,
                  100.53125
                ],
                [
                  131.5999755859375,
                  100.53125
                ],
                [
                  131.5999755859375,
                  101.53125
                ],
                [
                  130.5999755859375,
                  101.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                100.53125,
                131.5999755859375,
                101.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/416",
              "block_type": "TableCell",
              "html": "<th>11 Dictionaries</th>",
              "polygon": [
                [
                  131.5999755859375,
                  100.53125
                ],
                [
                  132.5999755859375,
                  100.53125
                ],
                [
                  132.5999755859375,
                  101.53125
                ],
                [
                  131.5999755859375,
                  101.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                100.53125,
                132.5999755859375,
                101.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/417",
              "block_type": "TableCell",
              "html": "<th>101</th>",
              "polygon": [
                [
                  132.5999755859375,
                  100.53125
                ],
                [
                  133.5999755859375,
                  100.53125
                ],
                [
                  133.5999755859375,
                  101.53125
                ],
                [
                  132.5999755859375,
                  101.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                100.53125,
                133.5999755859375,
                101.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/418",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  101.53125
                ],
                [
                  130.5999755859375,
                  101.53125
                ],
                [
                  130.5999755859375,
                  102.53125
                ],
                [
                  129.5999755859375,
                  102.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                101.53125,
                130.5999755859375,
                102.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/419",
              "block_type": "TableCell",
              "html": "<td>11.1</td>",
              "polygon": [
                [
                  130.5999755859375,
                  101.53125
                ],
                [
                  131.5999755859375,
                  101.53125
                ],
                [
                  131.5999755859375,
                  102.53125
                ],
                [
                  130.5999755859375,
                  102.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                101.53125,
                131.5999755859375,
                102.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/420",
              "block_type": "TableCell",
              "html": "<td>Dictionary as a set of counters</td>",
              "polygon": [
                [
                  131.5999755859375,
                  101.53125
                ],
                [
                  132.5999755859375,
                  101.53125
                ],
                [
                  132.5999755859375,
                  102.53125
                ],
                [
                  131.5999755859375,
                  102.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                101.53125,
                132.5999755859375,
                102.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/421",
              "block_type": "TableCell",
              "html": "<td>102</td>",
              "polygon": [
                [
                  132.5999755859375,
                  101.53125
                ],
                [
                  133.5999755859375,
                  101.53125
                ],
                [
                  133.5999755859375,
                  102.53125
                ],
                [
                  132.5999755859375,
                  102.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                101.53125,
                133.5999755859375,
                102.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/422",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  102.53125
                ],
                [
                  130.5999755859375,
                  102.53125
                ],
                [
                  130.5999755859375,
                  103.53125
                ],
                [
                  129.5999755859375,
                  103.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                102.53125,
                130.5999755859375,
                103.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/423",
              "block_type": "TableCell",
              "html": "<td>11.2</td>",
              "polygon": [
                [
                  130.5999755859375,
                  102.53125
                ],
                [
                  131.5999755859375,
                  102.53125
                ],
                [
                  131.5999755859375,
                  103.53125
                ],
                [
                  130.5999755859375,
                  103.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                102.53125,
                131.5999755859375,
                103.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/424",
              "block_type": "TableCell",
              "html": "<td>Looping and dictionaries</td>",
              "polygon": [
                [
                  131.5999755859375,
                  102.53125
                ],
                [
                  132.5999755859375,
                  102.53125
                ],
                [
                  132.5999755859375,
                  103.53125
                ],
                [
                  131.5999755859375,
                  103.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                102.53125,
                132.5999755859375,
                103.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/425",
              "block_type": "TableCell",
              "html": "<td>103</td>",
              "polygon": [
                [
                  132.5999755859375,
                  102.53125
                ],
                [
                  133.5999755859375,
                  102.53125
                ],
                [
                  133.5999755859375,
                  103.53125
                ],
                [
                  132.5999755859375,
                  103.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                102.53125,
                133.5999755859375,
                103.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/426",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  103.53125
                ],
                [
                  130.5999755859375,
                  103.53125
                ],
                [
                  130.5999755859375,
                  104.53125
                ],
                [
                  129.5999755859375,
                  104.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                103.53125,
                130.5999755859375,
                104.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/427",
              "block_type": "TableCell",
              "html": "<td>11.3</td>",
              "polygon": [
                [
                  130.5999755859375,
                  103.53125
                ],
                [
                  131.5999755859375,
                  103.53125
                ],
                [
                  131.5999755859375,
                  104.53125
                ],
                [
                  130.5999755859375,
                  104.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                103.53125,
                131.5999755859375,
                104.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/428",
              "block_type": "TableCell",
              "html": "<td>Reverse lookup</td>",
              "polygon": [
                [
                  131.5999755859375,
                  103.53125
                ],
                [
                  132.5999755859375,
                  103.53125
                ],
                [
                  132.5999755859375,
                  104.53125
                ],
                [
                  131.5999755859375,
                  104.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                103.53125,
                132.5999755859375,
                104.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/429",
              "block_type": "TableCell",
              "html": "<td>104</td>",
              "polygon": [
                [
                  132.5999755859375,
                  103.53125
                ],
                [
                  133.5999755859375,
                  103.53125
                ],
                [
                  133.5999755859375,
                  104.53125
                ],
                [
                  132.5999755859375,
                  104.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                103.53125,
                133.5999755859375,
                104.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/430",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  104.53125
                ],
                [
                  130.5999755859375,
                  104.53125
                ],
                [
                  130.5999755859375,
                  105.53125
                ],
                [
                  129.5999755859375,
                  105.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                104.53125,
                130.5999755859375,
                105.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/431",
              "block_type": "TableCell",
              "html": "<td>11.4</td>",
              "polygon": [
                [
                  130.5999755859375,
                  104.53125
                ],
                [
                  131.5999755859375,
                  104.53125
                ],
                [
                  131.5999755859375,
                  105.53125
                ],
                [
                  130.5999755859375,
                  105.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                104.53125,
                131.5999755859375,
                105.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/432",
              "block_type": "TableCell",
              "html": "<td>Dictionaries and lists</td>",
              "polygon": [
                [
                  131.5999755859375,
                  104.53125
                ],
                [
                  132.5999755859375,
                  104.53125
                ],
                [
                  132.5999755859375,
                  105.53125
                ],
                [
                  131.5999755859375,
                  105.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                104.53125,
                132.5999755859375,
                105.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/433",
              "block_type": "TableCell",
              "html": "<td>105</td>",
              "polygon": [
                [
                  132.5999755859375,
                  104.53125
                ],
                [
                  133.5999755859375,
                  104.53125
                ],
                [
                  133.5999755859375,
                  105.53125
                ],
                [
                  132.5999755859375,
                  105.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                104.53125,
                133.5999755859375,
                105.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/434",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  105.53125
                ],
                [
                  130.5999755859375,
                  105.53125
                ],
                [
                  130.5999755859375,
                  106.53125
                ],
                [
                  129.5999755859375,
                  106.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                105.53125,
                130.5999755859375,
                106.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/435",
              "block_type": "TableCell",
              "html": "<td>11.5</td>",
              "polygon": [
                [
                  130.5999755859375,
                  105.53125
                ],
                [
                  131.5999755859375,
                  105.53125
                ],
                [
                  131.5999755859375,
                  106.53125
                ],
                [
                  130.5999755859375,
                  106.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                105.53125,
                131.5999755859375,
                106.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/436",
              "block_type": "TableCell",
              "html": "<td>Memos</td>",
              "polygon": [
                [
                  131.5999755859375,
                  105.53125
                ],
                [
                  132.5999755859375,
                  105.53125
                ],
                [
                  132.5999755859375,
                  106.53125
                ],
                [
                  131.5999755859375,
                  106.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                105.53125,
                132.5999755859375,
                106.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/437",
              "block_type": "TableCell",
              "html": "<td>106</td>",
              "polygon": [
                [
                  132.5999755859375,
                  105.53125
                ],
                [
                  133.5999755859375,
                  105.53125
                ],
                [
                  133.5999755859375,
                  106.53125
                ],
                [
                  132.5999755859375,
                  106.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                105.53125,
                133.5999755859375,
                106.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/438",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  106.53125
                ],
                [
                  130.5999755859375,
                  106.53125
                ],
                [
                  130.5999755859375,
                  107.53125
                ],
                [
                  129.5999755859375,
                  107.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                106.53125,
                130.5999755859375,
                107.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/439",
              "block_type": "TableCell",
              "html": "<td>11.6</td>",
              "polygon": [
                [
                  130.5999755859375,
                  106.53125
                ],
                [
                  131.5999755859375,
                  106.53125
                ],
                [
                  131.5999755859375,
                  107.53125
                ],
                [
                  130.5999755859375,
                  107.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                106.53125,
                131.5999755859375,
                107.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/440",
              "block_type": "TableCell",
              "html": "<td>Global variables</td>",
              "polygon": [
                [
                  131.5999755859375,
                  106.53125
                ],
                [
                  132.5999755859375,
                  106.53125
                ],
                [
                  132.5999755859375,
                  107.53125
                ],
                [
                  131.5999755859375,
                  107.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                106.53125,
                132.5999755859375,
                107.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/441",
              "block_type": "TableCell",
              "html": "<td>108</td>",
              "polygon": [
                [
                  132.5999755859375,
                  106.53125
                ],
                [
                  133.5999755859375,
                  106.53125
                ],
                [
                  133.5999755859375,
                  107.53125
                ],
                [
                  132.5999755859375,
                  107.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                106.53125,
                133.5999755859375,
                107.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/442",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  107.53125
                ],
                [
                  130.5999755859375,
                  107.53125
                ],
                [
                  130.5999755859375,
                  108.53125
                ],
                [
                  129.5999755859375,
                  108.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                107.53125,
                130.5999755859375,
                108.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/443",
              "block_type": "TableCell",
              "html": "<td>11.7</td>",
              "polygon": [
                [
                  130.5999755859375,
                  107.53125
                ],
                [
                  131.5999755859375,
                  107.53125
                ],
                [
                  131.5999755859375,
                  108.53125
                ],
                [
                  130.5999755859375,
                  108.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                107.53125,
                131.5999755859375,
                108.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/444",
              "block_type": "TableCell",
              "html": "<td>Long integers</td>",
              "polygon": [
                [
                  131.5999755859375,
                  107.53125
                ],
                [
                  132.5999755859375,
                  107.53125
                ],
                [
                  132.5999755859375,
                  108.53125
                ],
                [
                  131.5999755859375,
                  108.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                107.53125,
                132.5999755859375,
                108.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/445",
              "block_type": "TableCell",
              "html": "<td>109</td>",
              "polygon": [
                [
                  132.5999755859375,
                  107.53125
                ],
                [
                  133.5999755859375,
                  107.53125
                ],
                [
                  133.5999755859375,
                  108.53125
                ],
                [
                  132.5999755859375,
                  108.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                107.53125,
                133.5999755859375,
                108.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/446",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  108.53125
                ],
                [
                  130.5999755859375,
                  108.53125
                ],
                [
                  130.5999755859375,
                  109.53125
                ],
                [
                  129.5999755859375,
                  109.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                108.53125,
                130.5999755859375,
                109.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/447",
              "block_type": "TableCell",
              "html": "<td>11.8</td>",
              "polygon": [
                [
                  130.5999755859375,
                  108.53125
                ],
                [
                  131.5999755859375,
                  108.53125
                ],
                [
                  131.5999755859375,
                  109.53125
                ],
                [
                  130.5999755859375,
                  109.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                108.53125,
                131.5999755859375,
                109.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/448",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.5999755859375,
                  108.53125
                ],
                [
                  132.5999755859375,
                  108.53125
                ],
                [
                  132.5999755859375,
                  109.53125
                ],
                [
                  131.5999755859375,
                  109.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                108.53125,
                132.5999755859375,
                109.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/449",
              "block_type": "TableCell",
              "html": "<td>109</td>",
              "polygon": [
                [
                  132.5999755859375,
                  108.53125
                ],
                [
                  133.5999755859375,
                  108.53125
                ],
                [
                  133.5999755859375,
                  109.53125
                ],
                [
                  132.5999755859375,
                  109.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                108.53125,
                133.5999755859375,
                109.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/450",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  109.53125
                ],
                [
                  130.5999755859375,
                  109.53125
                ],
                [
                  130.5999755859375,
                  110.53125
                ],
                [
                  129.5999755859375,
                  110.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                109.53125,
                130.5999755859375,
                110.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/451",
              "block_type": "TableCell",
              "html": "<td>11.9</td>",
              "polygon": [
                [
                  130.5999755859375,
                  109.53125
                ],
                [
                  131.5999755859375,
                  109.53125
                ],
                [
                  131.5999755859375,
                  110.53125
                ],
                [
                  130.5999755859375,
                  110.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                109.53125,
                131.5999755859375,
                110.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/452",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.5999755859375,
                  109.53125
                ],
                [
                  132.5999755859375,
                  109.53125
                ],
                [
                  132.5999755859375,
                  110.53125
                ],
                [
                  131.5999755859375,
                  110.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                109.53125,
                132.5999755859375,
                110.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/453",
              "block_type": "TableCell",
              "html": "<td>110</td>",
              "polygon": [
                [
                  132.5999755859375,
                  109.53125
                ],
                [
                  133.5999755859375,
                  109.53125
                ],
                [
                  133.5999755859375,
                  110.53125
                ],
                [
                  132.5999755859375,
                  110.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                109.53125,
                133.5999755859375,
                110.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/454",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.5999755859375,
                  110.53125
                ],
                [
                  130.5999755859375,
                  110.53125
                ],
                [
                  130.5999755859375,
                  111.53125
                ],
                [
                  129.5999755859375,
                  111.53125
                ]
              ],
              "bbox": [
                129.5999755859375,
                110.53125,
                130.5999755859375,
                111.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/455",
              "block_type": "TableCell",
              "html": "<td>11.10</td>",
              "polygon": [
                [
                  130.5999755859375,
                  110.53125
                ],
                [
                  131.5999755859375,
                  110.53125
                ],
                [
                  131.5999755859375,
                  111.53125
                ],
                [
                  130.5999755859375,
                  111.53125
                ]
              ],
              "bbox": [
                130.5999755859375,
                110.53125,
                131.5999755859375,
                111.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/456",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  131.5999755859375,
                  110.53125
                ],
                [
                  132.5999755859375,
                  110.53125
                ],
                [
                  132.5999755859375,
                  111.53125
                ],
                [
                  131.5999755859375,
                  111.53125
                ]
              ],
              "bbox": [
                131.5999755859375,
                110.53125,
                132.5999755859375,
                111.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/16/TableCell/457",
              "block_type": "TableCell",
              "html": "<td>111</td>",
              "polygon": [
                [
                  132.5999755859375,
                  110.53125
                ],
                [
                  133.5999755859375,
                  110.53125
                ],
                [
                  133.5999755859375,
                  111.53125
                ],
                [
                  132.5999755859375,
                  111.53125
                ]
              ],
              "bbox": [
                132.5999755859375,
                110.53125,
                133.5999755859375,
                111.53125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/383",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  85.166015625,
                  85.271484375
                ],
                [
                  86.166015625,
                  85.271484375
                ],
                [
                  86.166015625,
                  86.271484375
                ],
                [
                  85.166015625,
                  86.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                85.271484375,
                86.166015625,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/384",
              "block_type": "TableCell",
              "html": "<th>12 Tuples</th>",
              "polygon": [
                [
                  86.166015625,
                  85.271484375
                ],
                [
                  87.166015625,
                  85.271484375
                ],
                [
                  87.166015625,
                  86.271484375
                ],
                [
                  86.166015625,
                  86.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                85.271484375,
                87.166015625,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/385",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  87.166015625,
                  85.271484375
                ],
                [
                  88.166015625,
                  85.271484375
                ],
                [
                  88.166015625,
                  86.271484375
                ],
                [
                  87.166015625,
                  86.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                85.271484375,
                88.166015625,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/386",
              "block_type": "TableCell",
              "html": "<th>113</th>",
              "polygon": [
                [
                  88.166015625,
                  85.271484375
                ],
                [
                  89.166015625,
                  85.271484375
                ],
                [
                  89.166015625,
                  86.271484375
                ],
                [
                  88.166015625,
                  86.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                85.271484375,
                89.166015625,
                86.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/387",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  86.271484375
                ],
                [
                  86.166015625,
                  86.271484375
                ],
                [
                  86.166015625,
                  87.271484375
                ],
                [
                  85.166015625,
                  87.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                86.271484375,
                86.166015625,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/388",
              "block_type": "TableCell",
              "html": "<td>12.1</td>",
              "polygon": [
                [
                  86.166015625,
                  86.271484375
                ],
                [
                  87.166015625,
                  86.271484375
                ],
                [
                  87.166015625,
                  87.271484375
                ],
                [
                  86.166015625,
                  87.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                86.271484375,
                87.166015625,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/389",
              "block_type": "TableCell",
              "html": "<td>Tuples are immutable</td>",
              "polygon": [
                [
                  87.166015625,
                  86.271484375
                ],
                [
                  88.166015625,
                  86.271484375
                ],
                [
                  88.166015625,
                  87.271484375
                ],
                [
                  87.166015625,
                  87.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                86.271484375,
                88.166015625,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/390",
              "block_type": "TableCell",
              "html": "<td>113</td>",
              "polygon": [
                [
                  88.166015625,
                  86.271484375
                ],
                [
                  89.166015625,
                  86.271484375
                ],
                [
                  89.166015625,
                  87.271484375
                ],
                [
                  88.166015625,
                  87.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                86.271484375,
                89.166015625,
                87.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/391",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  87.271484375
                ],
                [
                  86.166015625,
                  87.271484375
                ],
                [
                  86.166015625,
                  88.271484375
                ],
                [
                  85.166015625,
                  88.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                87.271484375,
                86.166015625,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/392",
              "block_type": "TableCell",
              "html": "<td>12.2</td>",
              "polygon": [
                [
                  86.166015625,
                  87.271484375
                ],
                [
                  87.166015625,
                  87.271484375
                ],
                [
                  87.166015625,
                  88.271484375
                ],
                [
                  86.166015625,
                  88.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                87.271484375,
                87.166015625,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/393",
              "block_type": "TableCell",
              "html": "<td>Tuple assignment</td>",
              "polygon": [
                [
                  87.166015625,
                  87.271484375
                ],
                [
                  88.166015625,
                  87.271484375
                ],
                [
                  88.166015625,
                  88.271484375
                ],
                [
                  87.166015625,
                  88.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                87.271484375,
                88.166015625,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/394",
              "block_type": "TableCell",
              "html": "<td>114</td>",
              "polygon": [
                [
                  88.166015625,
                  87.271484375
                ],
                [
                  89.166015625,
                  87.271484375
                ],
                [
                  89.166015625,
                  88.271484375
                ],
                [
                  88.166015625,
                  88.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                87.271484375,
                89.166015625,
                88.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/395",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  88.271484375
                ],
                [
                  86.166015625,
                  88.271484375
                ],
                [
                  86.166015625,
                  89.271484375
                ],
                [
                  85.166015625,
                  89.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                88.271484375,
                86.166015625,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/396",
              "block_type": "TableCell",
              "html": "<td>12.3</td>",
              "polygon": [
                [
                  86.166015625,
                  88.271484375
                ],
                [
                  87.166015625,
                  88.271484375
                ],
                [
                  87.166015625,
                  89.271484375
                ],
                [
                  86.166015625,
                  89.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                88.271484375,
                87.166015625,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/397",
              "block_type": "TableCell",
              "html": "<td>Tuples as return values</td>",
              "polygon": [
                [
                  87.166015625,
                  88.271484375
                ],
                [
                  88.166015625,
                  88.271484375
                ],
                [
                  88.166015625,
                  89.271484375
                ],
                [
                  87.166015625,
                  89.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                88.271484375,
                88.166015625,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/398",
              "block_type": "TableCell",
              "html": "<td>115</td>",
              "polygon": [
                [
                  88.166015625,
                  88.271484375
                ],
                [
                  89.166015625,
                  88.271484375
                ],
                [
                  89.166015625,
                  89.271484375
                ],
                [
                  88.166015625,
                  89.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                88.271484375,
                89.166015625,
                89.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/399",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  89.271484375
                ],
                [
                  86.166015625,
                  89.271484375
                ],
                [
                  86.166015625,
                  90.271484375
                ],
                [
                  85.166015625,
                  90.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                89.271484375,
                86.166015625,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/400",
              "block_type": "TableCell",
              "html": "<td>12.4</td>",
              "polygon": [
                [
                  86.166015625,
                  89.271484375
                ],
                [
                  87.166015625,
                  89.271484375
                ],
                [
                  87.166015625,
                  90.271484375
                ],
                [
                  86.166015625,
                  90.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                89.271484375,
                87.166015625,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/401",
              "block_type": "TableCell",
              "html": "<td>Variable-length argument tuples</td>",
              "polygon": [
                [
                  87.166015625,
                  89.271484375
                ],
                [
                  88.166015625,
                  89.271484375
                ],
                [
                  88.166015625,
                  90.271484375
                ],
                [
                  87.166015625,
                  90.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                89.271484375,
                88.166015625,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/402",
              "block_type": "TableCell",
              "html": "<td>115</td>",
              "polygon": [
                [
                  88.166015625,
                  89.271484375
                ],
                [
                  89.166015625,
                  89.271484375
                ],
                [
                  89.166015625,
                  90.271484375
                ],
                [
                  88.166015625,
                  90.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                89.271484375,
                89.166015625,
                90.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/403",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  90.271484375
                ],
                [
                  86.166015625,
                  90.271484375
                ],
                [
                  86.166015625,
                  91.271484375
                ],
                [
                  85.166015625,
                  91.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                90.271484375,
                86.166015625,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/404",
              "block_type": "TableCell",
              "html": "<td>12.5</td>",
              "polygon": [
                [
                  86.166015625,
                  90.271484375
                ],
                [
                  87.166015625,
                  90.271484375
                ],
                [
                  87.166015625,
                  91.271484375
                ],
                [
                  86.166015625,
                  91.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                90.271484375,
                87.166015625,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/405",
              "block_type": "TableCell",
              "html": "<td>Lists and tuples</td>",
              "polygon": [
                [
                  87.166015625,
                  90.271484375
                ],
                [
                  88.166015625,
                  90.271484375
                ],
                [
                  88.166015625,
                  91.271484375
                ],
                [
                  87.166015625,
                  91.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                90.271484375,
                88.166015625,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/406",
              "block_type": "TableCell",
              "html": "<td>116</td>",
              "polygon": [
                [
                  88.166015625,
                  90.271484375
                ],
                [
                  89.166015625,
                  90.271484375
                ],
                [
                  89.166015625,
                  91.271484375
                ],
                [
                  88.166015625,
                  91.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                90.271484375,
                89.166015625,
                91.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/407",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  91.271484375
                ],
                [
                  86.166015625,
                  91.271484375
                ],
                [
                  86.166015625,
                  92.271484375
                ],
                [
                  85.166015625,
                  92.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                91.271484375,
                86.166015625,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/408",
              "block_type": "TableCell",
              "html": "<td>12.6</td>",
              "polygon": [
                [
                  86.166015625,
                  91.271484375
                ],
                [
                  87.166015625,
                  91.271484375
                ],
                [
                  87.166015625,
                  92.271484375
                ],
                [
                  86.166015625,
                  92.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                91.271484375,
                87.166015625,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/409",
              "block_type": "TableCell",
              "html": "<td>Dictionaries and tuples</td>",
              "polygon": [
                [
                  87.166015625,
                  91.271484375
                ],
                [
                  88.166015625,
                  91.271484375
                ],
                [
                  88.166015625,
                  92.271484375
                ],
                [
                  87.166015625,
                  92.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                91.271484375,
                88.166015625,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/410",
              "block_type": "TableCell",
              "html": "<td>117</td>",
              "polygon": [
                [
                  88.166015625,
                  91.271484375
                ],
                [
                  89.166015625,
                  91.271484375
                ],
                [
                  89.166015625,
                  92.271484375
                ],
                [
                  88.166015625,
                  92.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                91.271484375,
                89.166015625,
                92.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/411",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  92.271484375
                ],
                [
                  86.166015625,
                  92.271484375
                ],
                [
                  86.166015625,
                  93.271484375
                ],
                [
                  85.166015625,
                  93.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                92.271484375,
                86.166015625,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/412",
              "block_type": "TableCell",
              "html": "<td>12.7</td>",
              "polygon": [
                [
                  86.166015625,
                  92.271484375
                ],
                [
                  87.166015625,
                  92.271484375
                ],
                [
                  87.166015625,
                  93.271484375
                ],
                [
                  86.166015625,
                  93.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                92.271484375,
                87.166015625,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/413",
              "block_type": "TableCell",
              "html": "<td>Comparing tuples</td>",
              "polygon": [
                [
                  87.166015625,
                  92.271484375
                ],
                [
                  88.166015625,
                  92.271484375
                ],
                [
                  88.166015625,
                  93.271484375
                ],
                [
                  87.166015625,
                  93.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                92.271484375,
                88.166015625,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/414",
              "block_type": "TableCell",
              "html": "<td>118</td>",
              "polygon": [
                [
                  88.166015625,
                  92.271484375
                ],
                [
                  89.166015625,
                  92.271484375
                ],
                [
                  89.166015625,
                  93.271484375
                ],
                [
                  88.166015625,
                  93.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                92.271484375,
                89.166015625,
                93.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/415",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  93.271484375
                ],
                [
                  86.166015625,
                  93.271484375
                ],
                [
                  86.166015625,
                  94.271484375
                ],
                [
                  85.166015625,
                  94.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                93.271484375,
                86.166015625,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/416",
              "block_type": "TableCell",
              "html": "<td>12.8</td>",
              "polygon": [
                [
                  86.166015625,
                  93.271484375
                ],
                [
                  87.166015625,
                  93.271484375
                ],
                [
                  87.166015625,
                  94.271484375
                ],
                [
                  86.166015625,
                  94.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                93.271484375,
                87.166015625,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/417",
              "block_type": "TableCell",
              "html": "<td>Sequences of sequences</td>",
              "polygon": [
                [
                  87.166015625,
                  93.271484375
                ],
                [
                  88.166015625,
                  93.271484375
                ],
                [
                  88.166015625,
                  94.271484375
                ],
                [
                  87.166015625,
                  94.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                93.271484375,
                88.166015625,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/418",
              "block_type": "TableCell",
              "html": "<td>119</td>",
              "polygon": [
                [
                  88.166015625,
                  93.271484375
                ],
                [
                  89.166015625,
                  93.271484375
                ],
                [
                  89.166015625,
                  94.271484375
                ],
                [
                  88.166015625,
                  94.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                93.271484375,
                89.166015625,
                94.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/419",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  94.271484375
                ],
                [
                  86.166015625,
                  94.271484375
                ],
                [
                  86.166015625,
                  95.271484375
                ],
                [
                  85.166015625,
                  95.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                94.271484375,
                86.166015625,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/420",
              "block_type": "TableCell",
              "html": "<td>12.9</td>",
              "polygon": [
                [
                  86.166015625,
                  94.271484375
                ],
                [
                  87.166015625,
                  94.271484375
                ],
                [
                  87.166015625,
                  95.271484375
                ],
                [
                  86.166015625,
                  95.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                94.271484375,
                87.166015625,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/421",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  87.166015625,
                  94.271484375
                ],
                [
                  88.166015625,
                  94.271484375
                ],
                [
                  88.166015625,
                  95.271484375
                ],
                [
                  87.166015625,
                  95.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                94.271484375,
                88.166015625,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/422",
              "block_type": "TableCell",
              "html": "<td>120</td>",
              "polygon": [
                [
                  88.166015625,
                  94.271484375
                ],
                [
                  89.166015625,
                  94.271484375
                ],
                [
                  89.166015625,
                  95.271484375
                ],
                [
                  88.166015625,
                  95.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                94.271484375,
                89.166015625,
                95.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/423",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  95.271484375
                ],
                [
                  86.166015625,
                  95.271484375
                ],
                [
                  86.166015625,
                  96.271484375
                ],
                [
                  85.166015625,
                  96.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                95.271484375,
                86.166015625,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/424",
              "block_type": "TableCell",
              "html": "<td>12.10</td>",
              "polygon": [
                [
                  86.166015625,
                  95.271484375
                ],
                [
                  87.166015625,
                  95.271484375
                ],
                [
                  87.166015625,
                  96.271484375
                ],
                [
                  86.166015625,
                  96.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                95.271484375,
                87.166015625,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/425",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  87.166015625,
                  95.271484375
                ],
                [
                  88.166015625,
                  95.271484375
                ],
                [
                  88.166015625,
                  96.271484375
                ],
                [
                  87.166015625,
                  96.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                95.271484375,
                88.166015625,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/426",
              "block_type": "TableCell",
              "html": "<td>121</td>",
              "polygon": [
                [
                  88.166015625,
                  95.271484375
                ],
                [
                  89.166015625,
                  95.271484375
                ],
                [
                  89.166015625,
                  96.271484375
                ],
                [
                  88.166015625,
                  96.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                95.271484375,
                89.166015625,
                96.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/427",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  96.271484375
                ],
                [
                  86.166015625,
                  96.271484375
                ],
                [
                  86.166015625,
                  97.271484375
                ],
                [
                  85.166015625,
                  97.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                96.271484375,
                86.166015625,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/428",
              "block_type": "TableCell",
              "html": "<td>12.11</td>",
              "polygon": [
                [
                  86.166015625,
                  96.271484375
                ],
                [
                  87.166015625,
                  96.271484375
                ],
                [
                  87.166015625,
                  97.271484375
                ],
                [
                  86.166015625,
                  97.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                96.271484375,
                87.166015625,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/429",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  87.166015625,
                  96.271484375
                ],
                [
                  88.166015625,
                  96.271484375
                ],
                [
                  88.166015625,
                  97.271484375
                ],
                [
                  87.166015625,
                  97.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                96.271484375,
                88.166015625,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/430",
              "block_type": "TableCell",
              "html": "<td>121</td>",
              "polygon": [
                [
                  88.166015625,
                  96.271484375
                ],
                [
                  89.166015625,
                  96.271484375
                ],
                [
                  89.166015625,
                  97.271484375
                ],
                [
                  88.166015625,
                  97.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                96.271484375,
                89.166015625,
                97.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/431",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  85.166015625,
                  97.271484375
                ],
                [
                  86.166015625,
                  97.271484375
                ],
                [
                  86.166015625,
                  98.271484375
                ],
                [
                  85.166015625,
                  98.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                97.271484375,
                86.166015625,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/432",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  86.166015625,
                  97.271484375
                ],
                [
                  87.166015625,
                  97.271484375
                ],
                [
                  87.166015625,
                  98.271484375
                ],
                [
                  86.166015625,
                  98.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                97.271484375,
                87.166015625,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/433",
              "block_type": "TableCell",
              "html": "<th>13 Case study: data structure selection</th>",
              "polygon": [
                [
                  87.166015625,
                  97.271484375
                ],
                [
                  88.166015625,
                  97.271484375
                ],
                [
                  88.166015625,
                  98.271484375
                ],
                [
                  87.166015625,
                  98.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                97.271484375,
                88.166015625,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/434",
              "block_type": "TableCell",
              "html": "<th>123</th>",
              "polygon": [
                [
                  88.166015625,
                  97.271484375
                ],
                [
                  89.166015625,
                  97.271484375
                ],
                [
                  89.166015625,
                  98.271484375
                ],
                [
                  88.166015625,
                  98.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                97.271484375,
                89.166015625,
                98.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/435",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  98.271484375
                ],
                [
                  86.166015625,
                  98.271484375
                ],
                [
                  86.166015625,
                  99.271484375
                ],
                [
                  85.166015625,
                  99.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                98.271484375,
                86.166015625,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/436",
              "block_type": "TableCell",
              "html": "<td>13.1</td>",
              "polygon": [
                [
                  86.166015625,
                  98.271484375
                ],
                [
                  87.166015625,
                  98.271484375
                ],
                [
                  87.166015625,
                  99.271484375
                ],
                [
                  86.166015625,
                  99.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                98.271484375,
                87.166015625,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/437",
              "block_type": "TableCell",
              "html": "<td>Word frequency analysis</td>",
              "polygon": [
                [
                  87.166015625,
                  98.271484375
                ],
                [
                  88.166015625,
                  98.271484375
                ],
                [
                  88.166015625,
                  99.271484375
                ],
                [
                  87.166015625,
                  99.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                98.271484375,
                88.166015625,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/438",
              "block_type": "TableCell",
              "html": "<td>123</td>",
              "polygon": [
                [
                  88.166015625,
                  98.271484375
                ],
                [
                  89.166015625,
                  98.271484375
                ],
                [
                  89.166015625,
                  99.271484375
                ],
                [
                  88.166015625,
                  99.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                98.271484375,
                89.166015625,
                99.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/439",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  99.271484375
                ],
                [
                  86.166015625,
                  99.271484375
                ],
                [
                  86.166015625,
                  100.271484375
                ],
                [
                  85.166015625,
                  100.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                99.271484375,
                86.166015625,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/440",
              "block_type": "TableCell",
              "html": "<td>13.2</td>",
              "polygon": [
                [
                  86.166015625,
                  99.271484375
                ],
                [
                  87.166015625,
                  99.271484375
                ],
                [
                  87.166015625,
                  100.271484375
                ],
                [
                  86.166015625,
                  100.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                99.271484375,
                87.166015625,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/441",
              "block_type": "TableCell",
              "html": "<td>Random numbers</td>",
              "polygon": [
                [
                  87.166015625,
                  99.271484375
                ],
                [
                  88.166015625,
                  99.271484375
                ],
                [
                  88.166015625,
                  100.271484375
                ],
                [
                  87.166015625,
                  100.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                99.271484375,
                88.166015625,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/442",
              "block_type": "TableCell",
              "html": "<td>124</td>",
              "polygon": [
                [
                  88.166015625,
                  99.271484375
                ],
                [
                  89.166015625,
                  99.271484375
                ],
                [
                  89.166015625,
                  100.271484375
                ],
                [
                  88.166015625,
                  100.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                99.271484375,
                89.166015625,
                100.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/443",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  100.271484375
                ],
                [
                  86.166015625,
                  100.271484375
                ],
                [
                  86.166015625,
                  101.271484375
                ],
                [
                  85.166015625,
                  101.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                100.271484375,
                86.166015625,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/444",
              "block_type": "TableCell",
              "html": "<td>13.3</td>",
              "polygon": [
                [
                  86.166015625,
                  100.271484375
                ],
                [
                  87.166015625,
                  100.271484375
                ],
                [
                  87.166015625,
                  101.271484375
                ],
                [
                  86.166015625,
                  101.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                100.271484375,
                87.166015625,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/445",
              "block_type": "TableCell",
              "html": "<td>Word histogram</td>",
              "polygon": [
                [
                  87.166015625,
                  100.271484375
                ],
                [
                  88.166015625,
                  100.271484375
                ],
                [
                  88.166015625,
                  101.271484375
                ],
                [
                  87.166015625,
                  101.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                100.271484375,
                88.166015625,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/446",
              "block_type": "TableCell",
              "html": "<td>125</td>",
              "polygon": [
                [
                  88.166015625,
                  100.271484375
                ],
                [
                  89.166015625,
                  100.271484375
                ],
                [
                  89.166015625,
                  101.271484375
                ],
                [
                  88.166015625,
                  101.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                100.271484375,
                89.166015625,
                101.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/447",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  101.271484375
                ],
                [
                  86.166015625,
                  101.271484375
                ],
                [
                  86.166015625,
                  102.271484375
                ],
                [
                  85.166015625,
                  102.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                101.271484375,
                86.166015625,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/448",
              "block_type": "TableCell",
              "html": "<td>13.4</td>",
              "polygon": [
                [
                  86.166015625,
                  101.271484375
                ],
                [
                  87.166015625,
                  101.271484375
                ],
                [
                  87.166015625,
                  102.271484375
                ],
                [
                  86.166015625,
                  102.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                101.271484375,
                87.166015625,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/449",
              "block_type": "TableCell",
              "html": "<td>Most common words</td>",
              "polygon": [
                [
                  87.166015625,
                  101.271484375
                ],
                [
                  88.166015625,
                  101.271484375
                ],
                [
                  88.166015625,
                  102.271484375
                ],
                [
                  87.166015625,
                  102.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                101.271484375,
                88.166015625,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/450",
              "block_type": "TableCell",
              "html": "<td>126</td>",
              "polygon": [
                [
                  88.166015625,
                  101.271484375
                ],
                [
                  89.166015625,
                  101.271484375
                ],
                [
                  89.166015625,
                  102.271484375
                ],
                [
                  88.166015625,
                  102.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                101.271484375,
                89.166015625,
                102.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/451",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  102.271484375
                ],
                [
                  86.166015625,
                  102.271484375
                ],
                [
                  86.166015625,
                  103.271484375
                ],
                [
                  85.166015625,
                  103.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                102.271484375,
                86.166015625,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/452",
              "block_type": "TableCell",
              "html": "<td>13.5</td>",
              "polygon": [
                [
                  86.166015625,
                  102.271484375
                ],
                [
                  87.166015625,
                  102.271484375
                ],
                [
                  87.166015625,
                  103.271484375
                ],
                [
                  86.166015625,
                  103.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                102.271484375,
                87.166015625,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/453",
              "block_type": "TableCell",
              "html": "<td>Optional parameters</td>",
              "polygon": [
                [
                  87.166015625,
                  102.271484375
                ],
                [
                  88.166015625,
                  102.271484375
                ],
                [
                  88.166015625,
                  103.271484375
                ],
                [
                  87.166015625,
                  103.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                102.271484375,
                88.166015625,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/454",
              "block_type": "TableCell",
              "html": "<td>126</td>",
              "polygon": [
                [
                  88.166015625,
                  102.271484375
                ],
                [
                  89.166015625,
                  102.271484375
                ],
                [
                  89.166015625,
                  103.271484375
                ],
                [
                  88.166015625,
                  103.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                102.271484375,
                89.166015625,
                103.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/455",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  103.271484375
                ],
                [
                  86.166015625,
                  103.271484375
                ],
                [
                  86.166015625,
                  104.271484375
                ],
                [
                  85.166015625,
                  104.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                103.271484375,
                86.166015625,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/456",
              "block_type": "TableCell",
              "html": "<td>13.6</td>",
              "polygon": [
                [
                  86.166015625,
                  103.271484375
                ],
                [
                  87.166015625,
                  103.271484375
                ],
                [
                  87.166015625,
                  104.271484375
                ],
                [
                  86.166015625,
                  104.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                103.271484375,
                87.166015625,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/457",
              "block_type": "TableCell",
              "html": "<td>Dictionary subtraction</td>",
              "polygon": [
                [
                  87.166015625,
                  103.271484375
                ],
                [
                  88.166015625,
                  103.271484375
                ],
                [
                  88.166015625,
                  104.271484375
                ],
                [
                  87.166015625,
                  104.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                103.271484375,
                88.166015625,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/458",
              "block_type": "TableCell",
              "html": "<td>127</td>",
              "polygon": [
                [
                  88.166015625,
                  103.271484375
                ],
                [
                  89.166015625,
                  103.271484375
                ],
                [
                  89.166015625,
                  104.271484375
                ],
                [
                  88.166015625,
                  104.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                103.271484375,
                89.166015625,
                104.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/459",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  104.271484375
                ],
                [
                  86.166015625,
                  104.271484375
                ],
                [
                  86.166015625,
                  105.271484375
                ],
                [
                  85.166015625,
                  105.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                104.271484375,
                86.166015625,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/460",
              "block_type": "TableCell",
              "html": "<td>13.7</td>",
              "polygon": [
                [
                  86.166015625,
                  104.271484375
                ],
                [
                  87.166015625,
                  104.271484375
                ],
                [
                  87.166015625,
                  105.271484375
                ],
                [
                  86.166015625,
                  105.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                104.271484375,
                87.166015625,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/461",
              "block_type": "TableCell",
              "html": "<td>Random words</td>",
              "polygon": [
                [
                  87.166015625,
                  104.271484375
                ],
                [
                  88.166015625,
                  104.271484375
                ],
                [
                  88.166015625,
                  105.271484375
                ],
                [
                  87.166015625,
                  105.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                104.271484375,
                88.166015625,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/462",
              "block_type": "TableCell",
              "html": "<td>127</td>",
              "polygon": [
                [
                  88.166015625,
                  104.271484375
                ],
                [
                  89.166015625,
                  104.271484375
                ],
                [
                  89.166015625,
                  105.271484375
                ],
                [
                  88.166015625,
                  105.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                104.271484375,
                89.166015625,
                105.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/463",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  105.271484375
                ],
                [
                  86.166015625,
                  105.271484375
                ],
                [
                  86.166015625,
                  106.271484375
                ],
                [
                  85.166015625,
                  106.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                105.271484375,
                86.166015625,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/464",
              "block_type": "TableCell",
              "html": "<td>13.8</td>",
              "polygon": [
                [
                  86.166015625,
                  105.271484375
                ],
                [
                  87.166015625,
                  105.271484375
                ],
                [
                  87.166015625,
                  106.271484375
                ],
                [
                  86.166015625,
                  106.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                105.271484375,
                87.166015625,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/465",
              "block_type": "TableCell",
              "html": "<td>Markov analysis</td>",
              "polygon": [
                [
                  87.166015625,
                  105.271484375
                ],
                [
                  88.166015625,
                  105.271484375
                ],
                [
                  88.166015625,
                  106.271484375
                ],
                [
                  87.166015625,
                  106.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                105.271484375,
                88.166015625,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/466",
              "block_type": "TableCell",
              "html": "<td>128</td>",
              "polygon": [
                [
                  88.166015625,
                  105.271484375
                ],
                [
                  89.166015625,
                  105.271484375
                ],
                [
                  89.166015625,
                  106.271484375
                ],
                [
                  88.166015625,
                  106.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                105.271484375,
                89.166015625,
                106.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/467",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  106.271484375
                ],
                [
                  86.166015625,
                  106.271484375
                ],
                [
                  86.166015625,
                  107.271484375
                ],
                [
                  85.166015625,
                  107.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                106.271484375,
                86.166015625,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/468",
              "block_type": "TableCell",
              "html": "<td>13.9</td>",
              "polygon": [
                [
                  86.166015625,
                  106.271484375
                ],
                [
                  87.166015625,
                  106.271484375
                ],
                [
                  87.166015625,
                  107.271484375
                ],
                [
                  86.166015625,
                  107.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                106.271484375,
                87.166015625,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/469",
              "block_type": "TableCell",
              "html": "<td>Data structures</td>",
              "polygon": [
                [
                  87.166015625,
                  106.271484375
                ],
                [
                  88.166015625,
                  106.271484375
                ],
                [
                  88.166015625,
                  107.271484375
                ],
                [
                  87.166015625,
                  107.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                106.271484375,
                88.166015625,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/470",
              "block_type": "TableCell",
              "html": "<td>129</td>",
              "polygon": [
                [
                  88.166015625,
                  106.271484375
                ],
                [
                  89.166015625,
                  106.271484375
                ],
                [
                  89.166015625,
                  107.271484375
                ],
                [
                  88.166015625,
                  107.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                106.271484375,
                89.166015625,
                107.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/471",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  107.271484375
                ],
                [
                  86.166015625,
                  107.271484375
                ],
                [
                  86.166015625,
                  108.271484375
                ],
                [
                  85.166015625,
                  108.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                107.271484375,
                86.166015625,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/472",
              "block_type": "TableCell",
              "html": "<td>13.10</td>",
              "polygon": [
                [
                  86.166015625,
                  107.271484375
                ],
                [
                  87.166015625,
                  107.271484375
                ],
                [
                  87.166015625,
                  108.271484375
                ],
                [
                  86.166015625,
                  108.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                107.271484375,
                87.166015625,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/473",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  87.166015625,
                  107.271484375
                ],
                [
                  88.166015625,
                  107.271484375
                ],
                [
                  88.166015625,
                  108.271484375
                ],
                [
                  87.166015625,
                  108.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                107.271484375,
                88.166015625,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/474",
              "block_type": "TableCell",
              "html": "<td>131</td>",
              "polygon": [
                [
                  88.166015625,
                  107.271484375
                ],
                [
                  89.166015625,
                  107.271484375
                ],
                [
                  89.166015625,
                  108.271484375
                ],
                [
                  88.166015625,
                  108.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                107.271484375,
                89.166015625,
                108.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/475",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  108.271484375
                ],
                [
                  86.166015625,
                  108.271484375
                ],
                [
                  86.166015625,
                  109.271484375
                ],
                [
                  85.166015625,
                  109.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                108.271484375,
                86.166015625,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/476",
              "block_type": "TableCell",
              "html": "<td>13.11</td>",
              "polygon": [
                [
                  86.166015625,
                  108.271484375
                ],
                [
                  87.166015625,
                  108.271484375
                ],
                [
                  87.166015625,
                  109.271484375
                ],
                [
                  86.166015625,
                  109.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                108.271484375,
                87.166015625,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/477",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  87.166015625,
                  108.271484375
                ],
                [
                  88.166015625,
                  108.271484375
                ],
                [
                  88.166015625,
                  109.271484375
                ],
                [
                  87.166015625,
                  109.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                108.271484375,
                88.166015625,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/478",
              "block_type": "TableCell",
              "html": "<td>132</td>",
              "polygon": [
                [
                  88.166015625,
                  108.271484375
                ],
                [
                  89.166015625,
                  108.271484375
                ],
                [
                  89.166015625,
                  109.271484375
                ],
                [
                  88.166015625,
                  109.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                108.271484375,
                89.166015625,
                109.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/479",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  109.271484375
                ],
                [
                  86.166015625,
                  109.271484375
                ],
                [
                  86.166015625,
                  110.271484375
                ],
                [
                  85.166015625,
                  110.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                109.271484375,
                86.166015625,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/480",
              "block_type": "TableCell",
              "html": "<td>13.12</td>",
              "polygon": [
                [
                  86.166015625,
                  109.271484375
                ],
                [
                  87.166015625,
                  109.271484375
                ],
                [
                  87.166015625,
                  110.271484375
                ],
                [
                  86.166015625,
                  110.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                109.271484375,
                87.166015625,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/481",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  87.166015625,
                  109.271484375
                ],
                [
                  88.166015625,
                  109.271484375
                ],
                [
                  88.166015625,
                  110.271484375
                ],
                [
                  87.166015625,
                  110.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                109.271484375,
                88.166015625,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/482",
              "block_type": "TableCell",
              "html": "<td>132</td>",
              "polygon": [
                [
                  88.166015625,
                  109.271484375
                ],
                [
                  89.166015625,
                  109.271484375
                ],
                [
                  89.166015625,
                  110.271484375
                ],
                [
                  88.166015625,
                  110.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                109.271484375,
                89.166015625,
                110.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/483",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  110.271484375
                ],
                [
                  86.166015625,
                  110.271484375
                ],
                [
                  86.166015625,
                  111.271484375
                ],
                [
                  85.166015625,
                  111.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                110.271484375,
                86.166015625,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/484",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.166015625,
                  110.271484375
                ],
                [
                  87.166015625,
                  110.271484375
                ],
                [
                  87.166015625,
                  111.271484375
                ],
                [
                  86.166015625,
                  111.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                110.271484375,
                87.166015625,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/485",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  87.166015625,
                  110.271484375
                ],
                [
                  88.166015625,
                  110.271484375
                ],
                [
                  88.166015625,
                  111.271484375
                ],
                [
                  87.166015625,
                  111.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                110.271484375,
                88.166015625,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/486",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  88.166015625,
                  110.271484375
                ],
                [
                  89.166015625,
                  110.271484375
                ],
                [
                  89.166015625,
                  111.271484375
                ],
                [
                  88.166015625,
                  111.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                110.271484375,
                89.166015625,
                111.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/487",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  111.271484375
                ],
                [
                  86.166015625,
                  111.271484375
                ],
                [
                  86.166015625,
                  112.271484375
                ],
                [
                  85.166015625,
                  112.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                111.271484375,
                86.166015625,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/488",
              "block_type": "TableCell",
              "html": "<td>14 Files</td>",
              "polygon": [
                [
                  86.166015625,
                  111.271484375
                ],
                [
                  87.166015625,
                  111.271484375
                ],
                [
                  87.166015625,
                  112.271484375
                ],
                [
                  86.166015625,
                  112.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                111.271484375,
                87.166015625,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/489",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  87.166015625,
                  111.271484375
                ],
                [
                  88.166015625,
                  111.271484375
                ],
                [
                  88.166015625,
                  112.271484375
                ],
                [
                  87.166015625,
                  112.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                111.271484375,
                88.166015625,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/490",
              "block_type": "TableCell",
              "html": "<td>133</td>",
              "polygon": [
                [
                  88.166015625,
                  111.271484375
                ],
                [
                  89.166015625,
                  111.271484375
                ],
                [
                  89.166015625,
                  112.271484375
                ],
                [
                  88.166015625,
                  112.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                111.271484375,
                89.166015625,
                112.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/491",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  112.271484375
                ],
                [
                  86.166015625,
                  112.271484375
                ],
                [
                  86.166015625,
                  113.271484375
                ],
                [
                  85.166015625,
                  113.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                112.271484375,
                86.166015625,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/492",
              "block_type": "TableCell",
              "html": "<td>14.1</td>",
              "polygon": [
                [
                  86.166015625,
                  112.271484375
                ],
                [
                  87.166015625,
                  112.271484375
                ],
                [
                  87.166015625,
                  113.271484375
                ],
                [
                  86.166015625,
                  113.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                112.271484375,
                87.166015625,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/493",
              "block_type": "TableCell",
              "html": "<td>Persistence</td>",
              "polygon": [
                [
                  87.166015625,
                  112.271484375
                ],
                [
                  88.166015625,
                  112.271484375
                ],
                [
                  88.166015625,
                  113.271484375
                ],
                [
                  87.166015625,
                  113.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                112.271484375,
                88.166015625,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/494",
              "block_type": "TableCell",
              "html": "<td>133</td>",
              "polygon": [
                [
                  88.166015625,
                  112.271484375
                ],
                [
                  89.166015625,
                  112.271484375
                ],
                [
                  89.166015625,
                  113.271484375
                ],
                [
                  88.166015625,
                  113.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                112.271484375,
                89.166015625,
                113.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/495",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  113.271484375
                ],
                [
                  86.166015625,
                  113.271484375
                ],
                [
                  86.166015625,
                  114.271484375
                ],
                [
                  85.166015625,
                  114.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                113.271484375,
                86.166015625,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/496",
              "block_type": "TableCell",
              "html": "<td>14.2</td>",
              "polygon": [
                [
                  86.166015625,
                  113.271484375
                ],
                [
                  87.166015625,
                  113.271484375
                ],
                [
                  87.166015625,
                  114.271484375
                ],
                [
                  86.166015625,
                  114.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                113.271484375,
                87.166015625,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/497",
              "block_type": "TableCell",
              "html": "<td>Reading and writing</td>",
              "polygon": [
                [
                  87.166015625,
                  113.271484375
                ],
                [
                  88.166015625,
                  113.271484375
                ],
                [
                  88.166015625,
                  114.271484375
                ],
                [
                  87.166015625,
                  114.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                113.271484375,
                88.166015625,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/498",
              "block_type": "TableCell",
              "html": "<td>133</td>",
              "polygon": [
                [
                  88.166015625,
                  113.271484375
                ],
                [
                  89.166015625,
                  113.271484375
                ],
                [
                  89.166015625,
                  114.271484375
                ],
                [
                  88.166015625,
                  114.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                113.271484375,
                89.166015625,
                114.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/499",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  114.271484375
                ],
                [
                  86.166015625,
                  114.271484375
                ],
                [
                  86.166015625,
                  115.271484375
                ],
                [
                  85.166015625,
                  115.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                114.271484375,
                86.166015625,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/500",
              "block_type": "TableCell",
              "html": "<td>14.3</td>",
              "polygon": [
                [
                  86.166015625,
                  114.271484375
                ],
                [
                  87.166015625,
                  114.271484375
                ],
                [
                  87.166015625,
                  115.271484375
                ],
                [
                  86.166015625,
                  115.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                114.271484375,
                87.166015625,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/501",
              "block_type": "TableCell",
              "html": "<td>Format operator</td>",
              "polygon": [
                [
                  87.166015625,
                  114.271484375
                ],
                [
                  88.166015625,
                  114.271484375
                ],
                [
                  88.166015625,
                  115.271484375
                ],
                [
                  87.166015625,
                  115.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                114.271484375,
                88.166015625,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/502",
              "block_type": "TableCell",
              "html": "<td>134</td>",
              "polygon": [
                [
                  88.166015625,
                  114.271484375
                ],
                [
                  89.166015625,
                  114.271484375
                ],
                [
                  89.166015625,
                  115.271484375
                ],
                [
                  88.166015625,
                  115.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                114.271484375,
                89.166015625,
                115.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/503",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  85.166015625,
                  115.271484375
                ],
                [
                  86.166015625,
                  115.271484375
                ],
                [
                  86.166015625,
                  116.271484375
                ],
                [
                  85.166015625,
                  116.271484375
                ]
              ],
              "bbox": [
                85.166015625,
                115.271484375,
                86.166015625,
                116.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/504",
              "block_type": "TableCell",
              "html": "<td>14.4</td>",
              "polygon": [
                [
                  86.166015625,
                  115.271484375
                ],
                [
                  87.166015625,
                  115.271484375
                ],
                [
                  87.166015625,
                  116.271484375
                ],
                [
                  86.166015625,
                  116.271484375
                ]
              ],
              "bbox": [
                86.166015625,
                115.271484375,
                87.166015625,
                116.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/505",
              "block_type": "TableCell",
              "html": "<td>Filenames and paths</td>",
              "polygon": [
                [
                  87.166015625,
                  115.271484375
                ],
                [
                  88.166015625,
                  115.271484375
                ],
                [
                  88.166015625,
                  116.271484375
                ],
                [
                  87.166015625,
                  116.271484375
                ]
              ],
              "bbox": [
                87.166015625,
                115.271484375,
                88.166015625,
                116.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/17/TableCell/506",
              "block_type": "TableCell",
              "html": "<td>135</td>",
              "polygon": [
                [
                  88.166015625,
                  115.271484375
                ],
                [
                  89.166015625,
                  115.271484375
                ],
                [
                  89.166015625,
                  116.271484375
                ],
                [
                  88.166015625,
                  116.271484375
                ]
              ],
              "bbox": [
                88.166015625,
                115.271484375,
                89.166015625,
                116.271484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/309",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  129.59999084472656,
                  78.697265625
                ],
                [
                  130.59999084472656,
                  78.697265625
                ],
                [
                  130.59999084472656,
                  79.697265625
                ],
                [
                  129.59999084472656,
                  79.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                78.697265625,
                130.59999084472656,
                79.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/310",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  130.59999084472656,
                  78.697265625
                ],
                [
                  131.59999084472656,
                  78.697265625
                ],
                [
                  131.59999084472656,
                  79.697265625
                ],
                [
                  130.59999084472656,
                  79.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                78.697265625,
                131.59999084472656,
                79.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/311",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  131.59999084472656,
                  78.697265625
                ],
                [
                  132.59999084472656,
                  78.697265625
                ],
                [
                  132.59999084472656,
                  79.697265625
                ],
                [
                  131.59999084472656,
                  79.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                78.697265625,
                132.59999084472656,
                79.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/312",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  132.59999084472656,
                  78.697265625
                ],
                [
                  133.59999084472656,
                  78.697265625
                ],
                [
                  133.59999084472656,
                  79.697265625
                ],
                [
                  132.59999084472656,
                  79.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                78.697265625,
                133.59999084472656,
                79.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/313",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  79.697265625
                ],
                [
                  130.59999084472656,
                  79.697265625
                ],
                [
                  130.59999084472656,
                  80.697265625
                ],
                [
                  129.59999084472656,
                  80.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                79.697265625,
                130.59999084472656,
                80.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/314",
              "block_type": "TableCell",
              "html": "<td>14.5</td>",
              "polygon": [
                [
                  130.59999084472656,
                  79.697265625
                ],
                [
                  131.59999084472656,
                  79.697265625
                ],
                [
                  131.59999084472656,
                  80.697265625
                ],
                [
                  130.59999084472656,
                  80.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                79.697265625,
                131.59999084472656,
                80.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/315",
              "block_type": "TableCell",
              "html": "<td>Catching exceptions</td>",
              "polygon": [
                [
                  131.59999084472656,
                  79.697265625
                ],
                [
                  132.59999084472656,
                  79.697265625
                ],
                [
                  132.59999084472656,
                  80.697265625
                ],
                [
                  131.59999084472656,
                  80.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                79.697265625,
                132.59999084472656,
                80.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/316",
              "block_type": "TableCell",
              "html": "<td>136</td>",
              "polygon": [
                [
                  132.59999084472656,
                  79.697265625
                ],
                [
                  133.59999084472656,
                  79.697265625
                ],
                [
                  133.59999084472656,
                  80.697265625
                ],
                [
                  132.59999084472656,
                  80.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                79.697265625,
                133.59999084472656,
                80.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/317",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  80.697265625
                ],
                [
                  130.59999084472656,
                  80.697265625
                ],
                [
                  130.59999084472656,
                  81.697265625
                ],
                [
                  129.59999084472656,
                  81.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                80.697265625,
                130.59999084472656,
                81.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/318",
              "block_type": "TableCell",
              "html": "<td>14.6</td>",
              "polygon": [
                [
                  130.59999084472656,
                  80.697265625
                ],
                [
                  131.59999084472656,
                  80.697265625
                ],
                [
                  131.59999084472656,
                  81.697265625
                ],
                [
                  130.59999084472656,
                  81.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                80.697265625,
                131.59999084472656,
                81.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/319",
              "block_type": "TableCell",
              "html": "<td>Databases</td>",
              "polygon": [
                [
                  131.59999084472656,
                  80.697265625
                ],
                [
                  132.59999084472656,
                  80.697265625
                ],
                [
                  132.59999084472656,
                  81.697265625
                ],
                [
                  131.59999084472656,
                  81.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                80.697265625,
                132.59999084472656,
                81.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/320",
              "block_type": "TableCell",
              "html": "<td>137</td>",
              "polygon": [
                [
                  132.59999084472656,
                  80.697265625
                ],
                [
                  133.59999084472656,
                  80.697265625
                ],
                [
                  133.59999084472656,
                  81.697265625
                ],
                [
                  132.59999084472656,
                  81.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                80.697265625,
                133.59999084472656,
                81.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/321",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  81.697265625
                ],
                [
                  130.59999084472656,
                  81.697265625
                ],
                [
                  130.59999084472656,
                  82.697265625
                ],
                [
                  129.59999084472656,
                  82.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                81.697265625,
                130.59999084472656,
                82.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/322",
              "block_type": "TableCell",
              "html": "<td>14.7</td>",
              "polygon": [
                [
                  130.59999084472656,
                  81.697265625
                ],
                [
                  131.59999084472656,
                  81.697265625
                ],
                [
                  131.59999084472656,
                  82.697265625
                ],
                [
                  130.59999084472656,
                  82.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                81.697265625,
                131.59999084472656,
                82.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/323",
              "block_type": "TableCell",
              "html": "<td>Pickling</td>",
              "polygon": [
                [
                  131.59999084472656,
                  81.697265625
                ],
                [
                  132.59999084472656,
                  81.697265625
                ],
                [
                  132.59999084472656,
                  82.697265625
                ],
                [
                  131.59999084472656,
                  82.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                81.697265625,
                132.59999084472656,
                82.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/324",
              "block_type": "TableCell",
              "html": "<td>137</td>",
              "polygon": [
                [
                  132.59999084472656,
                  81.697265625
                ],
                [
                  133.59999084472656,
                  81.697265625
                ],
                [
                  133.59999084472656,
                  82.697265625
                ],
                [
                  132.59999084472656,
                  82.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                81.697265625,
                133.59999084472656,
                82.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/325",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  82.697265625
                ],
                [
                  130.59999084472656,
                  82.697265625
                ],
                [
                  130.59999084472656,
                  83.697265625
                ],
                [
                  129.59999084472656,
                  83.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                82.697265625,
                130.59999084472656,
                83.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/326",
              "block_type": "TableCell",
              "html": "<td>14.8</td>",
              "polygon": [
                [
                  130.59999084472656,
                  82.697265625
                ],
                [
                  131.59999084472656,
                  82.697265625
                ],
                [
                  131.59999084472656,
                  83.697265625
                ],
                [
                  130.59999084472656,
                  83.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                82.697265625,
                131.59999084472656,
                83.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/327",
              "block_type": "TableCell",
              "html": "<td>Pipes</td>",
              "polygon": [
                [
                  131.59999084472656,
                  82.697265625
                ],
                [
                  132.59999084472656,
                  82.697265625
                ],
                [
                  132.59999084472656,
                  83.697265625
                ],
                [
                  131.59999084472656,
                  83.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                82.697265625,
                132.59999084472656,
                83.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/328",
              "block_type": "TableCell",
              "html": "<td>138</td>",
              "polygon": [
                [
                  132.59999084472656,
                  82.697265625
                ],
                [
                  133.59999084472656,
                  82.697265625
                ],
                [
                  133.59999084472656,
                  83.697265625
                ],
                [
                  132.59999084472656,
                  83.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                82.697265625,
                133.59999084472656,
                83.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/329",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  83.697265625
                ],
                [
                  130.59999084472656,
                  83.697265625
                ],
                [
                  130.59999084472656,
                  84.697265625
                ],
                [
                  129.59999084472656,
                  84.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                83.697265625,
                130.59999084472656,
                84.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/330",
              "block_type": "TableCell",
              "html": "<td>14.9</td>",
              "polygon": [
                [
                  130.59999084472656,
                  83.697265625
                ],
                [
                  131.59999084472656,
                  83.697265625
                ],
                [
                  131.59999084472656,
                  84.697265625
                ],
                [
                  130.59999084472656,
                  84.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                83.697265625,
                131.59999084472656,
                84.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/331",
              "block_type": "TableCell",
              "html": "<td>Writing modules</td>",
              "polygon": [
                [
                  131.59999084472656,
                  83.697265625
                ],
                [
                  132.59999084472656,
                  83.697265625
                ],
                [
                  132.59999084472656,
                  84.697265625
                ],
                [
                  131.59999084472656,
                  84.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                83.697265625,
                132.59999084472656,
                84.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/332",
              "block_type": "TableCell",
              "html": "<td>139</td>",
              "polygon": [
                [
                  132.59999084472656,
                  83.697265625
                ],
                [
                  133.59999084472656,
                  83.697265625
                ],
                [
                  133.59999084472656,
                  84.697265625
                ],
                [
                  132.59999084472656,
                  84.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                83.697265625,
                133.59999084472656,
                84.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/333",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  84.697265625
                ],
                [
                  130.59999084472656,
                  84.697265625
                ],
                [
                  130.59999084472656,
                  85.697265625
                ],
                [
                  129.59999084472656,
                  85.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                84.697265625,
                130.59999084472656,
                85.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/334",
              "block_type": "TableCell",
              "html": "<td>14.10</td>",
              "polygon": [
                [
                  130.59999084472656,
                  84.697265625
                ],
                [
                  131.59999084472656,
                  84.697265625
                ],
                [
                  131.59999084472656,
                  85.697265625
                ],
                [
                  130.59999084472656,
                  85.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                84.697265625,
                131.59999084472656,
                85.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/335",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.59999084472656,
                  84.697265625
                ],
                [
                  132.59999084472656,
                  84.697265625
                ],
                [
                  132.59999084472656,
                  85.697265625
                ],
                [
                  131.59999084472656,
                  85.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                84.697265625,
                132.59999084472656,
                85.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/336",
              "block_type": "TableCell",
              "html": "<td>140</td>",
              "polygon": [
                [
                  132.59999084472656,
                  84.697265625
                ],
                [
                  133.59999084472656,
                  84.697265625
                ],
                [
                  133.59999084472656,
                  85.697265625
                ],
                [
                  132.59999084472656,
                  85.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                84.697265625,
                133.59999084472656,
                85.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/337",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  85.697265625
                ],
                [
                  130.59999084472656,
                  85.697265625
                ],
                [
                  130.59999084472656,
                  86.697265625
                ],
                [
                  129.59999084472656,
                  86.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                85.697265625,
                130.59999084472656,
                86.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/338",
              "block_type": "TableCell",
              "html": "<td>14.11</td>",
              "polygon": [
                [
                  130.59999084472656,
                  85.697265625
                ],
                [
                  131.59999084472656,
                  85.697265625
                ],
                [
                  131.59999084472656,
                  86.697265625
                ],
                [
                  130.59999084472656,
                  86.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                85.697265625,
                131.59999084472656,
                86.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/339",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.59999084472656,
                  85.697265625
                ],
                [
                  132.59999084472656,
                  85.697265625
                ],
                [
                  132.59999084472656,
                  86.697265625
                ],
                [
                  131.59999084472656,
                  86.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                85.697265625,
                132.59999084472656,
                86.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/340",
              "block_type": "TableCell",
              "html": "<td>141</td>",
              "polygon": [
                [
                  132.59999084472656,
                  85.697265625
                ],
                [
                  133.59999084472656,
                  85.697265625
                ],
                [
                  133.59999084472656,
                  86.697265625
                ],
                [
                  132.59999084472656,
                  86.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                85.697265625,
                133.59999084472656,
                86.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/341",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  86.697265625
                ],
                [
                  130.59999084472656,
                  86.697265625
                ],
                [
                  130.59999084472656,
                  87.697265625
                ],
                [
                  129.59999084472656,
                  87.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                86.697265625,
                130.59999084472656,
                87.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/342",
              "block_type": "TableCell",
              "html": "<td>14.12</td>",
              "polygon": [
                [
                  130.59999084472656,
                  86.697265625
                ],
                [
                  131.59999084472656,
                  86.697265625
                ],
                [
                  131.59999084472656,
                  87.697265625
                ],
                [
                  130.59999084472656,
                  87.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                86.697265625,
                131.59999084472656,
                87.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/343",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  131.59999084472656,
                  86.697265625
                ],
                [
                  132.59999084472656,
                  86.697265625
                ],
                [
                  132.59999084472656,
                  87.697265625
                ],
                [
                  131.59999084472656,
                  87.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                86.697265625,
                132.59999084472656,
                87.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/344",
              "block_type": "TableCell",
              "html": "<td>141</td>",
              "polygon": [
                [
                  132.59999084472656,
                  86.697265625
                ],
                [
                  133.59999084472656,
                  86.697265625
                ],
                [
                  133.59999084472656,
                  87.697265625
                ],
                [
                  132.59999084472656,
                  87.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                86.697265625,
                133.59999084472656,
                87.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/345",
              "block_type": "TableCell",
              "html": "<th>15</th>",
              "polygon": [
                [
                  129.59999084472656,
                  87.697265625
                ],
                [
                  130.59999084472656,
                  87.697265625
                ],
                [
                  130.59999084472656,
                  88.697265625
                ],
                [
                  129.59999084472656,
                  88.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                87.697265625,
                130.59999084472656,
                88.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/346",
              "block_type": "TableCell",
              "html": "<th colspan=\"3\">Classes and objects</th>",
              "polygon": [
                [
                  130.59999084472656,
                  87.697265625
                ],
                [
                  133.59999084472656,
                  87.697265625
                ],
                [
                  133.59999084472656,
                  88.697265625
                ],
                [
                  130.59999084472656,
                  88.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                87.697265625,
                133.59999084472656,
                88.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/347",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  88.697265625
                ],
                [
                  130.59999084472656,
                  88.697265625
                ],
                [
                  130.59999084472656,
                  89.697265625
                ],
                [
                  129.59999084472656,
                  89.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                88.697265625,
                130.59999084472656,
                89.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/348",
              "block_type": "TableCell",
              "html": "<td>15.1</td>",
              "polygon": [
                [
                  130.59999084472656,
                  88.697265625
                ],
                [
                  131.59999084472656,
                  88.697265625
                ],
                [
                  131.59999084472656,
                  89.697265625
                ],
                [
                  130.59999084472656,
                  89.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                88.697265625,
                131.59999084472656,
                89.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/349",
              "block_type": "TableCell",
              "html": "<td>User-defined types</td>",
              "polygon": [
                [
                  131.59999084472656,
                  88.697265625
                ],
                [
                  132.59999084472656,
                  88.697265625
                ],
                [
                  132.59999084472656,
                  89.697265625
                ],
                [
                  131.59999084472656,
                  89.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                88.697265625,
                132.59999084472656,
                89.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/350",
              "block_type": "TableCell",
              "html": "<td>143</td>",
              "polygon": [
                [
                  132.59999084472656,
                  88.697265625
                ],
                [
                  133.59999084472656,
                  88.697265625
                ],
                [
                  133.59999084472656,
                  89.697265625
                ],
                [
                  132.59999084472656,
                  89.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                88.697265625,
                133.59999084472656,
                89.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/351",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  89.697265625
                ],
                [
                  130.59999084472656,
                  89.697265625
                ],
                [
                  130.59999084472656,
                  90.697265625
                ],
                [
                  129.59999084472656,
                  90.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                89.697265625,
                130.59999084472656,
                90.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/352",
              "block_type": "TableCell",
              "html": "<td>15.2</td>",
              "polygon": [
                [
                  130.59999084472656,
                  89.697265625
                ],
                [
                  131.59999084472656,
                  89.697265625
                ],
                [
                  131.59999084472656,
                  90.697265625
                ],
                [
                  130.59999084472656,
                  90.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                89.697265625,
                131.59999084472656,
                90.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/353",
              "block_type": "TableCell",
              "html": "<td>Attributes</td>",
              "polygon": [
                [
                  131.59999084472656,
                  89.697265625
                ],
                [
                  132.59999084472656,
                  89.697265625
                ],
                [
                  132.59999084472656,
                  90.697265625
                ],
                [
                  131.59999084472656,
                  90.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                89.697265625,
                132.59999084472656,
                90.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/354",
              "block_type": "TableCell",
              "html": "<td>144</td>",
              "polygon": [
                [
                  132.59999084472656,
                  89.697265625
                ],
                [
                  133.59999084472656,
                  89.697265625
                ],
                [
                  133.59999084472656,
                  90.697265625
                ],
                [
                  132.59999084472656,
                  90.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                89.697265625,
                133.59999084472656,
                90.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/355",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  90.697265625
                ],
                [
                  130.59999084472656,
                  90.697265625
                ],
                [
                  130.59999084472656,
                  91.697265625
                ],
                [
                  129.59999084472656,
                  91.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                90.697265625,
                130.59999084472656,
                91.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/356",
              "block_type": "TableCell",
              "html": "<td>15.3</td>",
              "polygon": [
                [
                  130.59999084472656,
                  90.697265625
                ],
                [
                  131.59999084472656,
                  90.697265625
                ],
                [
                  131.59999084472656,
                  91.697265625
                ],
                [
                  130.59999084472656,
                  91.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                90.697265625,
                131.59999084472656,
                91.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/357",
              "block_type": "TableCell",
              "html": "<td>Rectangles</td>",
              "polygon": [
                [
                  131.59999084472656,
                  90.697265625
                ],
                [
                  132.59999084472656,
                  90.697265625
                ],
                [
                  132.59999084472656,
                  91.697265625
                ],
                [
                  131.59999084472656,
                  91.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                90.697265625,
                132.59999084472656,
                91.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/358",
              "block_type": "TableCell",
              "html": "<td>145</td>",
              "polygon": [
                [
                  132.59999084472656,
                  90.697265625
                ],
                [
                  133.59999084472656,
                  90.697265625
                ],
                [
                  133.59999084472656,
                  91.697265625
                ],
                [
                  132.59999084472656,
                  91.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                90.697265625,
                133.59999084472656,
                91.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/359",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  91.697265625
                ],
                [
                  130.59999084472656,
                  91.697265625
                ],
                [
                  130.59999084472656,
                  92.697265625
                ],
                [
                  129.59999084472656,
                  92.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                91.697265625,
                130.59999084472656,
                92.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/360",
              "block_type": "TableCell",
              "html": "<td>15.4</td>",
              "polygon": [
                [
                  130.59999084472656,
                  91.697265625
                ],
                [
                  131.59999084472656,
                  91.697265625
                ],
                [
                  131.59999084472656,
                  92.697265625
                ],
                [
                  130.59999084472656,
                  92.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                91.697265625,
                131.59999084472656,
                92.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/361",
              "block_type": "TableCell",
              "html": "<td>Instances as return values</td>",
              "polygon": [
                [
                  131.59999084472656,
                  91.697265625
                ],
                [
                  132.59999084472656,
                  91.697265625
                ],
                [
                  132.59999084472656,
                  92.697265625
                ],
                [
                  131.59999084472656,
                  92.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                91.697265625,
                132.59999084472656,
                92.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/362",
              "block_type": "TableCell",
              "html": "<td>146</td>",
              "polygon": [
                [
                  132.59999084472656,
                  91.697265625
                ],
                [
                  133.59999084472656,
                  91.697265625
                ],
                [
                  133.59999084472656,
                  92.697265625
                ],
                [
                  132.59999084472656,
                  92.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                91.697265625,
                133.59999084472656,
                92.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/363",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  92.697265625
                ],
                [
                  130.59999084472656,
                  92.697265625
                ],
                [
                  130.59999084472656,
                  93.697265625
                ],
                [
                  129.59999084472656,
                  93.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                92.697265625,
                130.59999084472656,
                93.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/364",
              "block_type": "TableCell",
              "html": "<td>15.5</td>",
              "polygon": [
                [
                  130.59999084472656,
                  92.697265625
                ],
                [
                  131.59999084472656,
                  92.697265625
                ],
                [
                  131.59999084472656,
                  93.697265625
                ],
                [
                  130.59999084472656,
                  93.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                92.697265625,
                131.59999084472656,
                93.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/365",
              "block_type": "TableCell",
              "html": "<td>Objects are mutable</td>",
              "polygon": [
                [
                  131.59999084472656,
                  92.697265625
                ],
                [
                  132.59999084472656,
                  92.697265625
                ],
                [
                  132.59999084472656,
                  93.697265625
                ],
                [
                  131.59999084472656,
                  93.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                92.697265625,
                132.59999084472656,
                93.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/366",
              "block_type": "TableCell",
              "html": "<td>146</td>",
              "polygon": [
                [
                  132.59999084472656,
                  92.697265625
                ],
                [
                  133.59999084472656,
                  92.697265625
                ],
                [
                  133.59999084472656,
                  93.697265625
                ],
                [
                  132.59999084472656,
                  93.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                92.697265625,
                133.59999084472656,
                93.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/367",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  93.697265625
                ],
                [
                  130.59999084472656,
                  93.697265625
                ],
                [
                  130.59999084472656,
                  94.697265625
                ],
                [
                  129.59999084472656,
                  94.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                93.697265625,
                130.59999084472656,
                94.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/368",
              "block_type": "TableCell",
              "html": "<td>15.6</td>",
              "polygon": [
                [
                  130.59999084472656,
                  93.697265625
                ],
                [
                  131.59999084472656,
                  93.697265625
                ],
                [
                  131.59999084472656,
                  94.697265625
                ],
                [
                  130.59999084472656,
                  94.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                93.697265625,
                131.59999084472656,
                94.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/369",
              "block_type": "TableCell",
              "html": "<td>Copying</td>",
              "polygon": [
                [
                  131.59999084472656,
                  93.697265625
                ],
                [
                  132.59999084472656,
                  93.697265625
                ],
                [
                  132.59999084472656,
                  94.697265625
                ],
                [
                  131.59999084472656,
                  94.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                93.697265625,
                132.59999084472656,
                94.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/370",
              "block_type": "TableCell",
              "html": "<td>147</td>",
              "polygon": [
                [
                  132.59999084472656,
                  93.697265625
                ],
                [
                  133.59999084472656,
                  93.697265625
                ],
                [
                  133.59999084472656,
                  94.697265625
                ],
                [
                  132.59999084472656,
                  94.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                93.697265625,
                133.59999084472656,
                94.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/371",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  94.697265625
                ],
                [
                  130.59999084472656,
                  94.697265625
                ],
                [
                  130.59999084472656,
                  95.697265625
                ],
                [
                  129.59999084472656,
                  95.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                94.697265625,
                130.59999084472656,
                95.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/372",
              "block_type": "TableCell",
              "html": "<td>15.7</td>",
              "polygon": [
                [
                  130.59999084472656,
                  94.697265625
                ],
                [
                  131.59999084472656,
                  94.697265625
                ],
                [
                  131.59999084472656,
                  95.697265625
                ],
                [
                  130.59999084472656,
                  95.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                94.697265625,
                131.59999084472656,
                95.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/373",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.59999084472656,
                  94.697265625
                ],
                [
                  132.59999084472656,
                  94.697265625
                ],
                [
                  132.59999084472656,
                  95.697265625
                ],
                [
                  131.59999084472656,
                  95.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                94.697265625,
                132.59999084472656,
                95.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/374",
              "block_type": "TableCell",
              "html": "<td>148</td>",
              "polygon": [
                [
                  132.59999084472656,
                  94.697265625
                ],
                [
                  133.59999084472656,
                  94.697265625
                ],
                [
                  133.59999084472656,
                  95.697265625
                ],
                [
                  132.59999084472656,
                  95.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                94.697265625,
                133.59999084472656,
                95.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/375",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  95.697265625
                ],
                [
                  130.59999084472656,
                  95.697265625
                ],
                [
                  130.59999084472656,
                  96.697265625
                ],
                [
                  129.59999084472656,
                  96.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                95.697265625,
                130.59999084472656,
                96.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/376",
              "block_type": "TableCell",
              "html": "<td>15.8</td>",
              "polygon": [
                [
                  130.59999084472656,
                  95.697265625
                ],
                [
                  131.59999084472656,
                  95.697265625
                ],
                [
                  131.59999084472656,
                  96.697265625
                ],
                [
                  130.59999084472656,
                  96.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                95.697265625,
                131.59999084472656,
                96.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/377",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.59999084472656,
                  95.697265625
                ],
                [
                  132.59999084472656,
                  95.697265625
                ],
                [
                  132.59999084472656,
                  96.697265625
                ],
                [
                  131.59999084472656,
                  96.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                95.697265625,
                132.59999084472656,
                96.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/378",
              "block_type": "TableCell",
              "html": "<td>149</td>",
              "polygon": [
                [
                  132.59999084472656,
                  95.697265625
                ],
                [
                  133.59999084472656,
                  95.697265625
                ],
                [
                  133.59999084472656,
                  96.697265625
                ],
                [
                  132.59999084472656,
                  96.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                95.697265625,
                133.59999084472656,
                96.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/379",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  96.697265625
                ],
                [
                  130.59999084472656,
                  96.697265625
                ],
                [
                  130.59999084472656,
                  97.697265625
                ],
                [
                  129.59999084472656,
                  97.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                96.697265625,
                130.59999084472656,
                97.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/380",
              "block_type": "TableCell",
              "html": "<td>15.9</td>",
              "polygon": [
                [
                  130.59999084472656,
                  96.697265625
                ],
                [
                  131.59999084472656,
                  96.697265625
                ],
                [
                  131.59999084472656,
                  97.697265625
                ],
                [
                  130.59999084472656,
                  97.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                96.697265625,
                131.59999084472656,
                97.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/381",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  131.59999084472656,
                  96.697265625
                ],
                [
                  132.59999084472656,
                  96.697265625
                ],
                [
                  132.59999084472656,
                  97.697265625
                ],
                [
                  131.59999084472656,
                  97.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                96.697265625,
                132.59999084472656,
                97.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/382",
              "block_type": "TableCell",
              "html": "<td>149</td>",
              "polygon": [
                [
                  132.59999084472656,
                  96.697265625
                ],
                [
                  133.59999084472656,
                  96.697265625
                ],
                [
                  133.59999084472656,
                  97.697265625
                ],
                [
                  132.59999084472656,
                  97.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                96.697265625,
                133.59999084472656,
                97.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/383",
              "block_type": "TableCell",
              "html": "<th>16</th>",
              "polygon": [
                [
                  129.59999084472656,
                  97.697265625
                ],
                [
                  130.59999084472656,
                  97.697265625
                ],
                [
                  130.59999084472656,
                  98.697265625
                ],
                [
                  129.59999084472656,
                  98.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                97.697265625,
                130.59999084472656,
                98.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/384",
              "block_type": "TableCell",
              "html": "<th colspan=\"3\">Classes and functions</th>",
              "polygon": [
                [
                  130.59999084472656,
                  97.697265625
                ],
                [
                  133.59999084472656,
                  97.697265625
                ],
                [
                  133.59999084472656,
                  98.697265625
                ],
                [
                  130.59999084472656,
                  98.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                97.697265625,
                133.59999084472656,
                98.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/385",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  98.697265625
                ],
                [
                  130.59999084472656,
                  98.697265625
                ],
                [
                  130.59999084472656,
                  99.697265625
                ],
                [
                  129.59999084472656,
                  99.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                98.697265625,
                130.59999084472656,
                99.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/386",
              "block_type": "TableCell",
              "html": "<td>16.1</td>",
              "polygon": [
                [
                  130.59999084472656,
                  98.697265625
                ],
                [
                  131.59999084472656,
                  98.697265625
                ],
                [
                  131.59999084472656,
                  99.697265625
                ],
                [
                  130.59999084472656,
                  99.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                98.697265625,
                131.59999084472656,
                99.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/387",
              "block_type": "TableCell",
              "html": "<td>Time</td>",
              "polygon": [
                [
                  131.59999084472656,
                  98.697265625
                ],
                [
                  132.59999084472656,
                  98.697265625
                ],
                [
                  132.59999084472656,
                  99.697265625
                ],
                [
                  131.59999084472656,
                  99.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                98.697265625,
                132.59999084472656,
                99.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/388",
              "block_type": "TableCell",
              "html": "<td>151</td>",
              "polygon": [
                [
                  132.59999084472656,
                  98.697265625
                ],
                [
                  133.59999084472656,
                  98.697265625
                ],
                [
                  133.59999084472656,
                  99.697265625
                ],
                [
                  132.59999084472656,
                  99.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                98.697265625,
                133.59999084472656,
                99.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/389",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  99.697265625
                ],
                [
                  130.59999084472656,
                  99.697265625
                ],
                [
                  130.59999084472656,
                  100.697265625
                ],
                [
                  129.59999084472656,
                  100.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                99.697265625,
                130.59999084472656,
                100.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/390",
              "block_type": "TableCell",
              "html": "<td>16.2</td>",
              "polygon": [
                [
                  130.59999084472656,
                  99.697265625
                ],
                [
                  131.59999084472656,
                  99.697265625
                ],
                [
                  131.59999084472656,
                  100.697265625
                ],
                [
                  130.59999084472656,
                  100.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                99.697265625,
                131.59999084472656,
                100.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/391",
              "block_type": "TableCell",
              "html": "<td>Pure functions</td>",
              "polygon": [
                [
                  131.59999084472656,
                  99.697265625
                ],
                [
                  132.59999084472656,
                  99.697265625
                ],
                [
                  132.59999084472656,
                  100.697265625
                ],
                [
                  131.59999084472656,
                  100.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                99.697265625,
                132.59999084472656,
                100.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/392",
              "block_type": "TableCell",
              "html": "<td>151</td>",
              "polygon": [
                [
                  132.59999084472656,
                  99.697265625
                ],
                [
                  133.59999084472656,
                  99.697265625
                ],
                [
                  133.59999084472656,
                  100.697265625
                ],
                [
                  132.59999084472656,
                  100.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                99.697265625,
                133.59999084472656,
                100.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/393",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  100.697265625
                ],
                [
                  130.59999084472656,
                  100.697265625
                ],
                [
                  130.59999084472656,
                  101.697265625
                ],
                [
                  129.59999084472656,
                  101.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                100.697265625,
                130.59999084472656,
                101.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/394",
              "block_type": "TableCell",
              "html": "<td>16.3</td>",
              "polygon": [
                [
                  130.59999084472656,
                  100.697265625
                ],
                [
                  131.59999084472656,
                  100.697265625
                ],
                [
                  131.59999084472656,
                  101.697265625
                ],
                [
                  130.59999084472656,
                  101.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                100.697265625,
                131.59999084472656,
                101.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/395",
              "block_type": "TableCell",
              "html": "<td>Modifiers</td>",
              "polygon": [
                [
                  131.59999084472656,
                  100.697265625
                ],
                [
                  132.59999084472656,
                  100.697265625
                ],
                [
                  132.59999084472656,
                  101.697265625
                ],
                [
                  131.59999084472656,
                  101.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                100.697265625,
                132.59999084472656,
                101.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/396",
              "block_type": "TableCell",
              "html": "<td>153</td>",
              "polygon": [
                [
                  132.59999084472656,
                  100.697265625
                ],
                [
                  133.59999084472656,
                  100.697265625
                ],
                [
                  133.59999084472656,
                  101.697265625
                ],
                [
                  132.59999084472656,
                  101.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                100.697265625,
                133.59999084472656,
                101.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/397",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  101.697265625
                ],
                [
                  130.59999084472656,
                  101.697265625
                ],
                [
                  130.59999084472656,
                  102.697265625
                ],
                [
                  129.59999084472656,
                  102.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                101.697265625,
                130.59999084472656,
                102.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/398",
              "block_type": "TableCell",
              "html": "<td>16.4</td>",
              "polygon": [
                [
                  130.59999084472656,
                  101.697265625
                ],
                [
                  131.59999084472656,
                  101.697265625
                ],
                [
                  131.59999084472656,
                  102.697265625
                ],
                [
                  130.59999084472656,
                  102.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                101.697265625,
                131.59999084472656,
                102.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/399",
              "block_type": "TableCell",
              "html": "<td>Prototyping versus planning</td>",
              "polygon": [
                [
                  131.59999084472656,
                  101.697265625
                ],
                [
                  132.59999084472656,
                  101.697265625
                ],
                [
                  132.59999084472656,
                  102.697265625
                ],
                [
                  131.59999084472656,
                  102.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                101.697265625,
                132.59999084472656,
                102.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/400",
              "block_type": "TableCell",
              "html": "<td>154</td>",
              "polygon": [
                [
                  132.59999084472656,
                  101.697265625
                ],
                [
                  133.59999084472656,
                  101.697265625
                ],
                [
                  133.59999084472656,
                  102.697265625
                ],
                [
                  132.59999084472656,
                  102.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                101.697265625,
                133.59999084472656,
                102.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/401",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  102.697265625
                ],
                [
                  130.59999084472656,
                  102.697265625
                ],
                [
                  130.59999084472656,
                  103.697265625
                ],
                [
                  129.59999084472656,
                  103.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                102.697265625,
                130.59999084472656,
                103.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/402",
              "block_type": "TableCell",
              "html": "<td>16.5</td>",
              "polygon": [
                [
                  130.59999084472656,
                  102.697265625
                ],
                [
                  131.59999084472656,
                  102.697265625
                ],
                [
                  131.59999084472656,
                  103.697265625
                ],
                [
                  130.59999084472656,
                  103.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                102.697265625,
                131.59999084472656,
                103.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/403",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.59999084472656,
                  102.697265625
                ],
                [
                  132.59999084472656,
                  102.697265625
                ],
                [
                  132.59999084472656,
                  103.697265625
                ],
                [
                  131.59999084472656,
                  103.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                102.697265625,
                132.59999084472656,
                103.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/404",
              "block_type": "TableCell",
              "html": "<td>155</td>",
              "polygon": [
                [
                  132.59999084472656,
                  102.697265625
                ],
                [
                  133.59999084472656,
                  102.697265625
                ],
                [
                  133.59999084472656,
                  103.697265625
                ],
                [
                  132.59999084472656,
                  103.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                102.697265625,
                133.59999084472656,
                103.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/405",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  103.697265625
                ],
                [
                  130.59999084472656,
                  103.697265625
                ],
                [
                  130.59999084472656,
                  104.697265625
                ],
                [
                  129.59999084472656,
                  104.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                103.697265625,
                130.59999084472656,
                104.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/406",
              "block_type": "TableCell",
              "html": "<td>16.6</td>",
              "polygon": [
                [
                  130.59999084472656,
                  103.697265625
                ],
                [
                  131.59999084472656,
                  103.697265625
                ],
                [
                  131.59999084472656,
                  104.697265625
                ],
                [
                  130.59999084472656,
                  104.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                103.697265625,
                131.59999084472656,
                104.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/407",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.59999084472656,
                  103.697265625
                ],
                [
                  132.59999084472656,
                  103.697265625
                ],
                [
                  132.59999084472656,
                  104.697265625
                ],
                [
                  131.59999084472656,
                  104.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                103.697265625,
                132.59999084472656,
                104.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/408",
              "block_type": "TableCell",
              "html": "<td>155</td>",
              "polygon": [
                [
                  132.59999084472656,
                  103.697265625
                ],
                [
                  133.59999084472656,
                  103.697265625
                ],
                [
                  133.59999084472656,
                  104.697265625
                ],
                [
                  132.59999084472656,
                  104.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                103.697265625,
                133.59999084472656,
                104.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/409",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.59999084472656,
                  104.697265625
                ],
                [
                  130.59999084472656,
                  104.697265625
                ],
                [
                  130.59999084472656,
                  105.697265625
                ],
                [
                  129.59999084472656,
                  105.697265625
                ]
              ],
              "bbox": [
                129.59999084472656,
                104.697265625,
                130.59999084472656,
                105.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/410",
              "block_type": "TableCell",
              "html": "<td>16.7</td>",
              "polygon": [
                [
                  130.59999084472656,
                  104.697265625
                ],
                [
                  131.59999084472656,
                  104.697265625
                ],
                [
                  131.59999084472656,
                  105.697265625
                ],
                [
                  130.59999084472656,
                  105.697265625
                ]
              ],
              "bbox": [
                130.59999084472656,
                104.697265625,
                131.59999084472656,
                105.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/411",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  131.59999084472656,
                  104.697265625
                ],
                [
                  132.59999084472656,
                  104.697265625
                ],
                [
                  132.59999084472656,
                  105.697265625
                ],
                [
                  131.59999084472656,
                  105.697265625
                ]
              ],
              "bbox": [
                131.59999084472656,
                104.697265625,
                132.59999084472656,
                105.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/18/TableCell/412",
              "block_type": "TableCell",
              "html": "<td>156</td>",
              "polygon": [
                [
                  132.59999084472656,
                  104.697265625
                ],
                [
                  133.59999084472656,
                  104.697265625
                ],
                [
                  133.59999084472656,
                  105.697265625
                ],
                [
                  132.59999084472656,
                  105.697265625
                ]
              ],
              "bbox": [
                132.59999084472656,
                104.697265625,
                133.59999084472656,
                105.697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/334",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  86.39998626708984,
                  87.591796875
                ],
                [
                  87.39998626708984,
                  87.591796875
                ],
                [
                  87.39998626708984,
                  88.591796875
                ],
                [
                  86.39998626708984,
                  88.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                87.591796875,
                87.39998626708984,
                88.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/335",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  87.39998626708984,
                  87.591796875
                ],
                [
                  88.39998626708984,
                  87.591796875
                ],
                [
                  88.39998626708984,
                  88.591796875
                ],
                [
                  87.39998626708984,
                  88.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                87.591796875,
                88.39998626708984,
                88.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/336",
              "block_type": "TableCell",
              "html": "<th>17 Classes and methods</th>",
              "polygon": [
                [
                  88.39998626708984,
                  87.591796875
                ],
                [
                  89.39998626708984,
                  87.591796875
                ],
                [
                  89.39998626708984,
                  88.591796875
                ],
                [
                  88.39998626708984,
                  88.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                87.591796875,
                89.39998626708984,
                88.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/337",
              "block_type": "TableCell",
              "html": "<th>157</th>",
              "polygon": [
                [
                  89.39998626708984,
                  87.591796875
                ],
                [
                  90.39998626708984,
                  87.591796875
                ],
                [
                  90.39998626708984,
                  88.591796875
                ],
                [
                  89.39998626708984,
                  88.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                87.591796875,
                90.39998626708984,
                88.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/338",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  88.591796875
                ],
                [
                  87.39998626708984,
                  88.591796875
                ],
                [
                  87.39998626708984,
                  89.591796875
                ],
                [
                  86.39998626708984,
                  89.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                88.591796875,
                87.39998626708984,
                89.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/339",
              "block_type": "TableCell",
              "html": "<td>17.1</td>",
              "polygon": [
                [
                  87.39998626708984,
                  88.591796875
                ],
                [
                  88.39998626708984,
                  88.591796875
                ],
                [
                  88.39998626708984,
                  89.591796875
                ],
                [
                  87.39998626708984,
                  89.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                88.591796875,
                88.39998626708984,
                89.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/340",
              "block_type": "TableCell",
              "html": "<td>Object-oriented features</td>",
              "polygon": [
                [
                  88.39998626708984,
                  88.591796875
                ],
                [
                  89.39998626708984,
                  88.591796875
                ],
                [
                  89.39998626708984,
                  89.591796875
                ],
                [
                  88.39998626708984,
                  89.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                88.591796875,
                89.39998626708984,
                89.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/341",
              "block_type": "TableCell",
              "html": "<td>157</td>",
              "polygon": [
                [
                  89.39998626708984,
                  88.591796875
                ],
                [
                  90.39998626708984,
                  88.591796875
                ],
                [
                  90.39998626708984,
                  89.591796875
                ],
                [
                  89.39998626708984,
                  89.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                88.591796875,
                90.39998626708984,
                89.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/342",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  89.591796875
                ],
                [
                  87.39998626708984,
                  89.591796875
                ],
                [
                  87.39998626708984,
                  90.591796875
                ],
                [
                  86.39998626708984,
                  90.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                89.591796875,
                87.39998626708984,
                90.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/343",
              "block_type": "TableCell",
              "html": "<td>17.2</td>",
              "polygon": [
                [
                  87.39998626708984,
                  89.591796875
                ],
                [
                  88.39998626708984,
                  89.591796875
                ],
                [
                  88.39998626708984,
                  90.591796875
                ],
                [
                  87.39998626708984,
                  90.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                89.591796875,
                88.39998626708984,
                90.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/344",
              "block_type": "TableCell",
              "html": "<td>Printing objects</td>",
              "polygon": [
                [
                  88.39998626708984,
                  89.591796875
                ],
                [
                  89.39998626708984,
                  89.591796875
                ],
                [
                  89.39998626708984,
                  90.591796875
                ],
                [
                  88.39998626708984,
                  90.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                89.591796875,
                89.39998626708984,
                90.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/345",
              "block_type": "TableCell",
              "html": "<td>158</td>",
              "polygon": [
                [
                  89.39998626708984,
                  89.591796875
                ],
                [
                  90.39998626708984,
                  89.591796875
                ],
                [
                  90.39998626708984,
                  90.591796875
                ],
                [
                  89.39998626708984,
                  90.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                89.591796875,
                90.39998626708984,
                90.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/346",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  90.591796875
                ],
                [
                  87.39998626708984,
                  90.591796875
                ],
                [
                  87.39998626708984,
                  91.591796875
                ],
                [
                  86.39998626708984,
                  91.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                90.591796875,
                87.39998626708984,
                91.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/347",
              "block_type": "TableCell",
              "html": "<td>17.3</td>",
              "polygon": [
                [
                  87.39998626708984,
                  90.591796875
                ],
                [
                  88.39998626708984,
                  90.591796875
                ],
                [
                  88.39998626708984,
                  91.591796875
                ],
                [
                  87.39998626708984,
                  91.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                90.591796875,
                88.39998626708984,
                91.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/348",
              "block_type": "TableCell",
              "html": "<td>Another example</td>",
              "polygon": [
                [
                  88.39998626708984,
                  90.591796875
                ],
                [
                  89.39998626708984,
                  90.591796875
                ],
                [
                  89.39998626708984,
                  91.591796875
                ],
                [
                  88.39998626708984,
                  91.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                90.591796875,
                89.39998626708984,
                91.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/349",
              "block_type": "TableCell",
              "html": "<td>159</td>",
              "polygon": [
                [
                  89.39998626708984,
                  90.591796875
                ],
                [
                  90.39998626708984,
                  90.591796875
                ],
                [
                  90.39998626708984,
                  91.591796875
                ],
                [
                  89.39998626708984,
                  91.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                90.591796875,
                90.39998626708984,
                91.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/350",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  91.591796875
                ],
                [
                  87.39998626708984,
                  91.591796875
                ],
                [
                  87.39998626708984,
                  92.591796875
                ],
                [
                  86.39998626708984,
                  92.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                91.591796875,
                87.39998626708984,
                92.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/351",
              "block_type": "TableCell",
              "html": "<td>17.4</td>",
              "polygon": [
                [
                  87.39998626708984,
                  91.591796875
                ],
                [
                  88.39998626708984,
                  91.591796875
                ],
                [
                  88.39998626708984,
                  92.591796875
                ],
                [
                  87.39998626708984,
                  92.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                91.591796875,
                88.39998626708984,
                92.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/352",
              "block_type": "TableCell",
              "html": "<td>A more complicated example</td>",
              "polygon": [
                [
                  88.39998626708984,
                  91.591796875
                ],
                [
                  89.39998626708984,
                  91.591796875
                ],
                [
                  89.39998626708984,
                  92.591796875
                ],
                [
                  88.39998626708984,
                  92.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                91.591796875,
                89.39998626708984,
                92.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/353",
              "block_type": "TableCell",
              "html": "<td>160</td>",
              "polygon": [
                [
                  89.39998626708984,
                  91.591796875
                ],
                [
                  90.39998626708984,
                  91.591796875
                ],
                [
                  90.39998626708984,
                  92.591796875
                ],
                [
                  89.39998626708984,
                  92.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                91.591796875,
                90.39998626708984,
                92.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/354",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  92.591796875
                ],
                [
                  87.39998626708984,
                  92.591796875
                ],
                [
                  87.39998626708984,
                  93.591796875
                ],
                [
                  86.39998626708984,
                  93.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                92.591796875,
                87.39998626708984,
                93.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/355",
              "block_type": "TableCell",
              "html": "<td>17.5</td>",
              "polygon": [
                [
                  87.39998626708984,
                  92.591796875
                ],
                [
                  88.39998626708984,
                  92.591796875
                ],
                [
                  88.39998626708984,
                  93.591796875
                ],
                [
                  87.39998626708984,
                  93.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                92.591796875,
                88.39998626708984,
                93.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/356",
              "block_type": "TableCell",
              "html": "<td>The init method</td>",
              "polygon": [
                [
                  88.39998626708984,
                  92.591796875
                ],
                [
                  89.39998626708984,
                  92.591796875
                ],
                [
                  89.39998626708984,
                  93.591796875
                ],
                [
                  88.39998626708984,
                  93.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                92.591796875,
                89.39998626708984,
                93.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/357",
              "block_type": "TableCell",
              "html": "<td>160</td>",
              "polygon": [
                [
                  89.39998626708984,
                  92.591796875
                ],
                [
                  90.39998626708984,
                  92.591796875
                ],
                [
                  90.39998626708984,
                  93.591796875
                ],
                [
                  89.39998626708984,
                  93.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                92.591796875,
                90.39998626708984,
                93.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/358",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  93.591796875
                ],
                [
                  87.39998626708984,
                  93.591796875
                ],
                [
                  87.39998626708984,
                  94.591796875
                ],
                [
                  86.39998626708984,
                  94.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                93.591796875,
                87.39998626708984,
                94.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/359",
              "block_type": "TableCell",
              "html": "<td>17.6</td>",
              "polygon": [
                [
                  87.39998626708984,
                  93.591796875
                ],
                [
                  88.39998626708984,
                  93.591796875
                ],
                [
                  88.39998626708984,
                  94.591796875
                ],
                [
                  87.39998626708984,
                  94.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                93.591796875,
                88.39998626708984,
                94.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/360",
              "block_type": "TableCell",
              "html": "<td>The __str__ method</td>",
              "polygon": [
                [
                  88.39998626708984,
                  93.591796875
                ],
                [
                  89.39998626708984,
                  93.591796875
                ],
                [
                  89.39998626708984,
                  94.591796875
                ],
                [
                  88.39998626708984,
                  94.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                93.591796875,
                89.39998626708984,
                94.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/361",
              "block_type": "TableCell",
              "html": "<td>161</td>",
              "polygon": [
                [
                  89.39998626708984,
                  93.591796875
                ],
                [
                  90.39998626708984,
                  93.591796875
                ],
                [
                  90.39998626708984,
                  94.591796875
                ],
                [
                  89.39998626708984,
                  94.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                93.591796875,
                90.39998626708984,
                94.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/362",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  94.591796875
                ],
                [
                  87.39998626708984,
                  94.591796875
                ],
                [
                  87.39998626708984,
                  95.591796875
                ],
                [
                  86.39998626708984,
                  95.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                94.591796875,
                87.39998626708984,
                95.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/363",
              "block_type": "TableCell",
              "html": "<td>17.7</td>",
              "polygon": [
                [
                  87.39998626708984,
                  94.591796875
                ],
                [
                  88.39998626708984,
                  94.591796875
                ],
                [
                  88.39998626708984,
                  95.591796875
                ],
                [
                  87.39998626708984,
                  95.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                94.591796875,
                88.39998626708984,
                95.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/364",
              "block_type": "TableCell",
              "html": "<td>Operator overloading</td>",
              "polygon": [
                [
                  88.39998626708984,
                  94.591796875
                ],
                [
                  89.39998626708984,
                  94.591796875
                ],
                [
                  89.39998626708984,
                  95.591796875
                ],
                [
                  88.39998626708984,
                  95.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                94.591796875,
                89.39998626708984,
                95.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/365",
              "block_type": "TableCell",
              "html": "<td>161</td>",
              "polygon": [
                [
                  89.39998626708984,
                  94.591796875
                ],
                [
                  90.39998626708984,
                  94.591796875
                ],
                [
                  90.39998626708984,
                  95.591796875
                ],
                [
                  89.39998626708984,
                  95.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                94.591796875,
                90.39998626708984,
                95.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/366",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  95.591796875
                ],
                [
                  87.39998626708984,
                  95.591796875
                ],
                [
                  87.39998626708984,
                  96.591796875
                ],
                [
                  86.39998626708984,
                  96.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                95.591796875,
                87.39998626708984,
                96.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/367",
              "block_type": "TableCell",
              "html": "<td>17.8</td>",
              "polygon": [
                [
                  87.39998626708984,
                  95.591796875
                ],
                [
                  88.39998626708984,
                  95.591796875
                ],
                [
                  88.39998626708984,
                  96.591796875
                ],
                [
                  87.39998626708984,
                  96.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                95.591796875,
                88.39998626708984,
                96.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/368",
              "block_type": "TableCell",
              "html": "<td>Type-based dispatch</td>",
              "polygon": [
                [
                  88.39998626708984,
                  95.591796875
                ],
                [
                  89.39998626708984,
                  95.591796875
                ],
                [
                  89.39998626708984,
                  96.591796875
                ],
                [
                  88.39998626708984,
                  96.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                95.591796875,
                89.39998626708984,
                96.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/369",
              "block_type": "TableCell",
              "html": "<td>162</td>",
              "polygon": [
                [
                  89.39998626708984,
                  95.591796875
                ],
                [
                  90.39998626708984,
                  95.591796875
                ],
                [
                  90.39998626708984,
                  96.591796875
                ],
                [
                  89.39998626708984,
                  96.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                95.591796875,
                90.39998626708984,
                96.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/370",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  96.591796875
                ],
                [
                  87.39998626708984,
                  96.591796875
                ],
                [
                  87.39998626708984,
                  97.591796875
                ],
                [
                  86.39998626708984,
                  97.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                96.591796875,
                87.39998626708984,
                97.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/371",
              "block_type": "TableCell",
              "html": "<td>17.9</td>",
              "polygon": [
                [
                  87.39998626708984,
                  96.591796875
                ],
                [
                  88.39998626708984,
                  96.591796875
                ],
                [
                  88.39998626708984,
                  97.591796875
                ],
                [
                  87.39998626708984,
                  97.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                96.591796875,
                88.39998626708984,
                97.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/372",
              "block_type": "TableCell",
              "html": "<td>Polymorphism</td>",
              "polygon": [
                [
                  88.39998626708984,
                  96.591796875
                ],
                [
                  89.39998626708984,
                  96.591796875
                ],
                [
                  89.39998626708984,
                  97.591796875
                ],
                [
                  88.39998626708984,
                  97.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                96.591796875,
                89.39998626708984,
                97.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/373",
              "block_type": "TableCell",
              "html": "<td>163</td>",
              "polygon": [
                [
                  89.39998626708984,
                  96.591796875
                ],
                [
                  90.39998626708984,
                  96.591796875
                ],
                [
                  90.39998626708984,
                  97.591796875
                ],
                [
                  89.39998626708984,
                  97.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                96.591796875,
                90.39998626708984,
                97.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/374",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  97.591796875
                ],
                [
                  87.39998626708984,
                  97.591796875
                ],
                [
                  87.39998626708984,
                  98.591796875
                ],
                [
                  86.39998626708984,
                  98.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                97.591796875,
                87.39998626708984,
                98.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/375",
              "block_type": "TableCell",
              "html": "<td>17.10</td>",
              "polygon": [
                [
                  87.39998626708984,
                  97.591796875
                ],
                [
                  88.39998626708984,
                  97.591796875
                ],
                [
                  88.39998626708984,
                  98.591796875
                ],
                [
                  87.39998626708984,
                  98.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                97.591796875,
                88.39998626708984,
                98.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/376",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  88.39998626708984,
                  97.591796875
                ],
                [
                  89.39998626708984,
                  97.591796875
                ],
                [
                  89.39998626708984,
                  98.591796875
                ],
                [
                  88.39998626708984,
                  98.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                97.591796875,
                89.39998626708984,
                98.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/377",
              "block_type": "TableCell",
              "html": "<td>164</td>",
              "polygon": [
                [
                  89.39998626708984,
                  97.591796875
                ],
                [
                  90.39998626708984,
                  97.591796875
                ],
                [
                  90.39998626708984,
                  98.591796875
                ],
                [
                  89.39998626708984,
                  98.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                97.591796875,
                90.39998626708984,
                98.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/378",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  98.591796875
                ],
                [
                  87.39998626708984,
                  98.591796875
                ],
                [
                  87.39998626708984,
                  99.591796875
                ],
                [
                  86.39998626708984,
                  99.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                98.591796875,
                87.39998626708984,
                99.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/379",
              "block_type": "TableCell",
              "html": "<td>17.11</td>",
              "polygon": [
                [
                  87.39998626708984,
                  98.591796875
                ],
                [
                  88.39998626708984,
                  98.591796875
                ],
                [
                  88.39998626708984,
                  99.591796875
                ],
                [
                  87.39998626708984,
                  99.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                98.591796875,
                88.39998626708984,
                99.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/380",
              "block_type": "TableCell",
              "html": "<td>Interface and implementation</td>",
              "polygon": [
                [
                  88.39998626708984,
                  98.591796875
                ],
                [
                  89.39998626708984,
                  98.591796875
                ],
                [
                  89.39998626708984,
                  99.591796875
                ],
                [
                  88.39998626708984,
                  99.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                98.591796875,
                89.39998626708984,
                99.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/381",
              "block_type": "TableCell",
              "html": "<td>164</td>",
              "polygon": [
                [
                  89.39998626708984,
                  98.591796875
                ],
                [
                  90.39998626708984,
                  98.591796875
                ],
                [
                  90.39998626708984,
                  99.591796875
                ],
                [
                  89.39998626708984,
                  99.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                98.591796875,
                90.39998626708984,
                99.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/382",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  99.591796875
                ],
                [
                  87.39998626708984,
                  99.591796875
                ],
                [
                  87.39998626708984,
                  100.591796875
                ],
                [
                  86.39998626708984,
                  100.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                99.591796875,
                87.39998626708984,
                100.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/383",
              "block_type": "TableCell",
              "html": "<td>17.12</td>",
              "polygon": [
                [
                  87.39998626708984,
                  99.591796875
                ],
                [
                  88.39998626708984,
                  99.591796875
                ],
                [
                  88.39998626708984,
                  100.591796875
                ],
                [
                  87.39998626708984,
                  100.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                99.591796875,
                88.39998626708984,
                100.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/384",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  88.39998626708984,
                  99.591796875
                ],
                [
                  89.39998626708984,
                  99.591796875
                ],
                [
                  89.39998626708984,
                  100.591796875
                ],
                [
                  88.39998626708984,
                  100.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                99.591796875,
                89.39998626708984,
                100.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/385",
              "block_type": "TableCell",
              "html": "<td>165</td>",
              "polygon": [
                [
                  89.39998626708984,
                  99.591796875
                ],
                [
                  90.39998626708984,
                  99.591796875
                ],
                [
                  90.39998626708984,
                  100.591796875
                ],
                [
                  89.39998626708984,
                  100.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                99.591796875,
                90.39998626708984,
                100.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/386",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  100.591796875
                ],
                [
                  87.39998626708984,
                  100.591796875
                ],
                [
                  87.39998626708984,
                  101.591796875
                ],
                [
                  86.39998626708984,
                  101.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                100.591796875,
                87.39998626708984,
                101.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/387",
              "block_type": "TableCell",
              "html": "<td>17.13</td>",
              "polygon": [
                [
                  87.39998626708984,
                  100.591796875
                ],
                [
                  88.39998626708984,
                  100.591796875
                ],
                [
                  88.39998626708984,
                  101.591796875
                ],
                [
                  87.39998626708984,
                  101.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                100.591796875,
                88.39998626708984,
                101.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/388",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  88.39998626708984,
                  100.591796875
                ],
                [
                  89.39998626708984,
                  100.591796875
                ],
                [
                  89.39998626708984,
                  101.591796875
                ],
                [
                  88.39998626708984,
                  101.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                100.591796875,
                89.39998626708984,
                101.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/389",
              "block_type": "TableCell",
              "html": "<td>165</td>",
              "polygon": [
                [
                  89.39998626708984,
                  100.591796875
                ],
                [
                  90.39998626708984,
                  100.591796875
                ],
                [
                  90.39998626708984,
                  101.591796875
                ],
                [
                  89.39998626708984,
                  101.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                100.591796875,
                90.39998626708984,
                101.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/390",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  86.39998626708984,
                  101.591796875
                ],
                [
                  87.39998626708984,
                  101.591796875
                ],
                [
                  87.39998626708984,
                  102.591796875
                ],
                [
                  86.39998626708984,
                  102.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                101.591796875,
                87.39998626708984,
                102.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/391",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  87.39998626708984,
                  101.591796875
                ],
                [
                  88.39998626708984,
                  101.591796875
                ],
                [
                  88.39998626708984,
                  102.591796875
                ],
                [
                  87.39998626708984,
                  102.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                101.591796875,
                88.39998626708984,
                102.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/392",
              "block_type": "TableCell",
              "html": "<th>18 Inheritance</th>",
              "polygon": [
                [
                  88.39998626708984,
                  101.591796875
                ],
                [
                  89.39998626708984,
                  101.591796875
                ],
                [
                  89.39998626708984,
                  102.591796875
                ],
                [
                  88.39998626708984,
                  102.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                101.591796875,
                89.39998626708984,
                102.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/393",
              "block_type": "TableCell",
              "html": "<th>167</th>",
              "polygon": [
                [
                  89.39998626708984,
                  101.591796875
                ],
                [
                  90.39998626708984,
                  101.591796875
                ],
                [
                  90.39998626708984,
                  102.591796875
                ],
                [
                  89.39998626708984,
                  102.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                101.591796875,
                90.39998626708984,
                102.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/394",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  102.591796875
                ],
                [
                  87.39998626708984,
                  102.591796875
                ],
                [
                  87.39998626708984,
                  103.591796875
                ],
                [
                  86.39998626708984,
                  103.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                102.591796875,
                87.39998626708984,
                103.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/395",
              "block_type": "TableCell",
              "html": "<td>18.1</td>",
              "polygon": [
                [
                  87.39998626708984,
                  102.591796875
                ],
                [
                  88.39998626708984,
                  102.591796875
                ],
                [
                  88.39998626708984,
                  103.591796875
                ],
                [
                  87.39998626708984,
                  103.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                102.591796875,
                88.39998626708984,
                103.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/396",
              "block_type": "TableCell",
              "html": "<td>Card objects</td>",
              "polygon": [
                [
                  88.39998626708984,
                  102.591796875
                ],
                [
                  89.39998626708984,
                  102.591796875
                ],
                [
                  89.39998626708984,
                  103.591796875
                ],
                [
                  88.39998626708984,
                  103.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                102.591796875,
                89.39998626708984,
                103.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/397",
              "block_type": "TableCell",
              "html": "<td>167</td>",
              "polygon": [
                [
                  89.39998626708984,
                  102.591796875
                ],
                [
                  90.39998626708984,
                  102.591796875
                ],
                [
                  90.39998626708984,
                  103.591796875
                ],
                [
                  89.39998626708984,
                  103.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                102.591796875,
                90.39998626708984,
                103.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/398",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  103.591796875
                ],
                [
                  87.39998626708984,
                  103.591796875
                ],
                [
                  87.39998626708984,
                  104.591796875
                ],
                [
                  86.39998626708984,
                  104.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                103.591796875,
                87.39998626708984,
                104.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/399",
              "block_type": "TableCell",
              "html": "<td>18.2</td>",
              "polygon": [
                [
                  87.39998626708984,
                  103.591796875
                ],
                [
                  88.39998626708984,
                  103.591796875
                ],
                [
                  88.39998626708984,
                  104.591796875
                ],
                [
                  87.39998626708984,
                  104.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                103.591796875,
                88.39998626708984,
                104.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/400",
              "block_type": "TableCell",
              "html": "<td>Class attributes</td>",
              "polygon": [
                [
                  88.39998626708984,
                  103.591796875
                ],
                [
                  89.39998626708984,
                  103.591796875
                ],
                [
                  89.39998626708984,
                  104.591796875
                ],
                [
                  88.39998626708984,
                  104.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                103.591796875,
                89.39998626708984,
                104.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/401",
              "block_type": "TableCell",
              "html": "<td>168</td>",
              "polygon": [
                [
                  89.39998626708984,
                  103.591796875
                ],
                [
                  90.39998626708984,
                  103.591796875
                ],
                [
                  90.39998626708984,
                  104.591796875
                ],
                [
                  89.39998626708984,
                  104.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                103.591796875,
                90.39998626708984,
                104.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/402",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  104.591796875
                ],
                [
                  87.39998626708984,
                  104.591796875
                ],
                [
                  87.39998626708984,
                  105.591796875
                ],
                [
                  86.39998626708984,
                  105.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                104.591796875,
                87.39998626708984,
                105.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/403",
              "block_type": "TableCell",
              "html": "<td>18.3</td>",
              "polygon": [
                [
                  87.39998626708984,
                  104.591796875
                ],
                [
                  88.39998626708984,
                  104.591796875
                ],
                [
                  88.39998626708984,
                  105.591796875
                ],
                [
                  87.39998626708984,
                  105.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                104.591796875,
                88.39998626708984,
                105.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/404",
              "block_type": "TableCell",
              "html": "<td>Comparing cards</td>",
              "polygon": [
                [
                  88.39998626708984,
                  104.591796875
                ],
                [
                  89.39998626708984,
                  104.591796875
                ],
                [
                  89.39998626708984,
                  105.591796875
                ],
                [
                  88.39998626708984,
                  105.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                104.591796875,
                89.39998626708984,
                105.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/405",
              "block_type": "TableCell",
              "html": "<td>169</td>",
              "polygon": [
                [
                  89.39998626708984,
                  104.591796875
                ],
                [
                  90.39998626708984,
                  104.591796875
                ],
                [
                  90.39998626708984,
                  105.591796875
                ],
                [
                  89.39998626708984,
                  105.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                104.591796875,
                90.39998626708984,
                105.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/406",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  105.591796875
                ],
                [
                  87.39998626708984,
                  105.591796875
                ],
                [
                  87.39998626708984,
                  106.591796875
                ],
                [
                  86.39998626708984,
                  106.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                105.591796875,
                87.39998626708984,
                106.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/407",
              "block_type": "TableCell",
              "html": "<td>18.4</td>",
              "polygon": [
                [
                  87.39998626708984,
                  105.591796875
                ],
                [
                  88.39998626708984,
                  105.591796875
                ],
                [
                  88.39998626708984,
                  106.591796875
                ],
                [
                  87.39998626708984,
                  106.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                105.591796875,
                88.39998626708984,
                106.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/408",
              "block_type": "TableCell",
              "html": "<td>Decks</td>",
              "polygon": [
                [
                  88.39998626708984,
                  105.591796875
                ],
                [
                  89.39998626708984,
                  105.591796875
                ],
                [
                  89.39998626708984,
                  106.591796875
                ],
                [
                  88.39998626708984,
                  106.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                105.591796875,
                89.39998626708984,
                106.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/409",
              "block_type": "TableCell",
              "html": "<td>170</td>",
              "polygon": [
                [
                  89.39998626708984,
                  105.591796875
                ],
                [
                  90.39998626708984,
                  105.591796875
                ],
                [
                  90.39998626708984,
                  106.591796875
                ],
                [
                  89.39998626708984,
                  106.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                105.591796875,
                90.39998626708984,
                106.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/410",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  106.591796875
                ],
                [
                  87.39998626708984,
                  106.591796875
                ],
                [
                  87.39998626708984,
                  107.591796875
                ],
                [
                  86.39998626708984,
                  107.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                106.591796875,
                87.39998626708984,
                107.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/411",
              "block_type": "TableCell",
              "html": "<td>18.5</td>",
              "polygon": [
                [
                  87.39998626708984,
                  106.591796875
                ],
                [
                  88.39998626708984,
                  106.591796875
                ],
                [
                  88.39998626708984,
                  107.591796875
                ],
                [
                  87.39998626708984,
                  107.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                106.591796875,
                88.39998626708984,
                107.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/412",
              "block_type": "TableCell",
              "html": "<td>Printing the deck</td>",
              "polygon": [
                [
                  88.39998626708984,
                  106.591796875
                ],
                [
                  89.39998626708984,
                  106.591796875
                ],
                [
                  89.39998626708984,
                  107.591796875
                ],
                [
                  88.39998626708984,
                  107.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                106.591796875,
                89.39998626708984,
                107.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/413",
              "block_type": "TableCell",
              "html": "<td>171</td>",
              "polygon": [
                [
                  89.39998626708984,
                  106.591796875
                ],
                [
                  90.39998626708984,
                  106.591796875
                ],
                [
                  90.39998626708984,
                  107.591796875
                ],
                [
                  89.39998626708984,
                  107.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                106.591796875,
                90.39998626708984,
                107.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/414",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  107.591796875
                ],
                [
                  87.39998626708984,
                  107.591796875
                ],
                [
                  87.39998626708984,
                  108.591796875
                ],
                [
                  86.39998626708984,
                  108.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                107.591796875,
                87.39998626708984,
                108.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/415",
              "block_type": "TableCell",
              "html": "<td>18.6</td>",
              "polygon": [
                [
                  87.39998626708984,
                  107.591796875
                ],
                [
                  88.39998626708984,
                  107.591796875
                ],
                [
                  88.39998626708984,
                  108.591796875
                ],
                [
                  87.39998626708984,
                  108.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                107.591796875,
                88.39998626708984,
                108.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/416",
              "block_type": "TableCell",
              "html": "<td>Add, remove, shuffle and sort</td>",
              "polygon": [
                [
                  88.39998626708984,
                  107.591796875
                ],
                [
                  89.39998626708984,
                  107.591796875
                ],
                [
                  89.39998626708984,
                  108.591796875
                ],
                [
                  88.39998626708984,
                  108.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                107.591796875,
                89.39998626708984,
                108.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/417",
              "block_type": "TableCell",
              "html": "<td>171</td>",
              "polygon": [
                [
                  89.39998626708984,
                  107.591796875
                ],
                [
                  90.39998626708984,
                  107.591796875
                ],
                [
                  90.39998626708984,
                  108.591796875
                ],
                [
                  89.39998626708984,
                  108.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                107.591796875,
                90.39998626708984,
                108.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/418",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  108.591796875
                ],
                [
                  87.39998626708984,
                  108.591796875
                ],
                [
                  87.39998626708984,
                  109.591796875
                ],
                [
                  86.39998626708984,
                  109.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                108.591796875,
                87.39998626708984,
                109.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/419",
              "block_type": "TableCell",
              "html": "<td>18.7</td>",
              "polygon": [
                [
                  87.39998626708984,
                  108.591796875
                ],
                [
                  88.39998626708984,
                  108.591796875
                ],
                [
                  88.39998626708984,
                  109.591796875
                ],
                [
                  87.39998626708984,
                  109.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                108.591796875,
                88.39998626708984,
                109.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/420",
              "block_type": "TableCell",
              "html": "<td>Inheritance</td>",
              "polygon": [
                [
                  88.39998626708984,
                  108.591796875
                ],
                [
                  89.39998626708984,
                  108.591796875
                ],
                [
                  89.39998626708984,
                  109.591796875
                ],
                [
                  88.39998626708984,
                  109.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                108.591796875,
                89.39998626708984,
                109.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/421",
              "block_type": "TableCell",
              "html": "<td>172</td>",
              "polygon": [
                [
                  89.39998626708984,
                  108.591796875
                ],
                [
                  90.39998626708984,
                  108.591796875
                ],
                [
                  90.39998626708984,
                  109.591796875
                ],
                [
                  89.39998626708984,
                  109.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                108.591796875,
                90.39998626708984,
                109.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/422",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  109.591796875
                ],
                [
                  87.39998626708984,
                  109.591796875
                ],
                [
                  87.39998626708984,
                  110.591796875
                ],
                [
                  86.39998626708984,
                  110.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                109.591796875,
                87.39998626708984,
                110.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/423",
              "block_type": "TableCell",
              "html": "<td>18.8</td>",
              "polygon": [
                [
                  87.39998626708984,
                  109.591796875
                ],
                [
                  88.39998626708984,
                  109.591796875
                ],
                [
                  88.39998626708984,
                  110.591796875
                ],
                [
                  87.39998626708984,
                  110.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                109.591796875,
                88.39998626708984,
                110.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/424",
              "block_type": "TableCell",
              "html": "<td>Class diagrams</td>",
              "polygon": [
                [
                  88.39998626708984,
                  109.591796875
                ],
                [
                  89.39998626708984,
                  109.591796875
                ],
                [
                  89.39998626708984,
                  110.591796875
                ],
                [
                  88.39998626708984,
                  110.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                109.591796875,
                89.39998626708984,
                110.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/425",
              "block_type": "TableCell",
              "html": "<td>173</td>",
              "polygon": [
                [
                  89.39998626708984,
                  109.591796875
                ],
                [
                  90.39998626708984,
                  109.591796875
                ],
                [
                  90.39998626708984,
                  110.591796875
                ],
                [
                  89.39998626708984,
                  110.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                109.591796875,
                90.39998626708984,
                110.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/426",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  110.591796875
                ],
                [
                  87.39998626708984,
                  110.591796875
                ],
                [
                  87.39998626708984,
                  111.591796875
                ],
                [
                  86.39998626708984,
                  111.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                110.591796875,
                87.39998626708984,
                111.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/427",
              "block_type": "TableCell",
              "html": "<td>18.9</td>",
              "polygon": [
                [
                  87.39998626708984,
                  110.591796875
                ],
                [
                  88.39998626708984,
                  110.591796875
                ],
                [
                  88.39998626708984,
                  111.591796875
                ],
                [
                  87.39998626708984,
                  111.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                110.591796875,
                88.39998626708984,
                111.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/428",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  88.39998626708984,
                  110.591796875
                ],
                [
                  89.39998626708984,
                  110.591796875
                ],
                [
                  89.39998626708984,
                  111.591796875
                ],
                [
                  88.39998626708984,
                  111.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                110.591796875,
                89.39998626708984,
                111.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/429",
              "block_type": "TableCell",
              "html": "<td>174</td>",
              "polygon": [
                [
                  89.39998626708984,
                  110.591796875
                ],
                [
                  90.39998626708984,
                  110.591796875
                ],
                [
                  90.39998626708984,
                  111.591796875
                ],
                [
                  89.39998626708984,
                  111.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                110.591796875,
                90.39998626708984,
                111.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/430",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  111.591796875
                ],
                [
                  87.39998626708984,
                  111.591796875
                ],
                [
                  87.39998626708984,
                  112.591796875
                ],
                [
                  86.39998626708984,
                  112.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                111.591796875,
                87.39998626708984,
                112.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/431",
              "block_type": "TableCell",
              "html": "<td>18.10</td>",
              "polygon": [
                [
                  87.39998626708984,
                  111.591796875
                ],
                [
                  88.39998626708984,
                  111.591796875
                ],
                [
                  88.39998626708984,
                  112.591796875
                ],
                [
                  87.39998626708984,
                  112.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                111.591796875,
                88.39998626708984,
                112.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/432",
              "block_type": "TableCell",
              "html": "<td>Data encapsulation</td>",
              "polygon": [
                [
                  88.39998626708984,
                  111.591796875
                ],
                [
                  89.39998626708984,
                  111.591796875
                ],
                [
                  89.39998626708984,
                  112.591796875
                ],
                [
                  88.39998626708984,
                  112.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                111.591796875,
                89.39998626708984,
                112.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/433",
              "block_type": "TableCell",
              "html": "<td>175</td>",
              "polygon": [
                [
                  89.39998626708984,
                  111.591796875
                ],
                [
                  90.39998626708984,
                  111.591796875
                ],
                [
                  90.39998626708984,
                  112.591796875
                ],
                [
                  89.39998626708984,
                  112.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                111.591796875,
                90.39998626708984,
                112.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/434",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  86.39998626708984,
                  112.591796875
                ],
                [
                  87.39998626708984,
                  112.591796875
                ],
                [
                  87.39998626708984,
                  113.591796875
                ],
                [
                  86.39998626708984,
                  113.591796875
                ]
              ],
              "bbox": [
                86.39998626708984,
                112.591796875,
                87.39998626708984,
                113.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/435",
              "block_type": "TableCell",
              "html": "<td>18.11</td>",
              "polygon": [
                [
                  87.39998626708984,
                  112.591796875
                ],
                [
                  88.39998626708984,
                  112.591796875
                ],
                [
                  88.39998626708984,
                  113.591796875
                ],
                [
                  87.39998626708984,
                  113.591796875
                ]
              ],
              "bbox": [
                87.39998626708984,
                112.591796875,
                88.39998626708984,
                113.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/436",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  88.39998626708984,
                  112.591796875
                ],
                [
                  89.39998626708984,
                  112.591796875
                ],
                [
                  89.39998626708984,
                  113.591796875
                ],
                [
                  88.39998626708984,
                  113.591796875
                ]
              ],
              "bbox": [
                88.39998626708984,
                112.591796875,
                89.39998626708984,
                113.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/19/TableCell/437",
              "block_type": "TableCell",
              "html": "<td>176</td>",
              "polygon": [
                [
                  89.39998626708984,
                  112.591796875
                ],
                [
                  90.39998626708984,
                  112.591796875
                ],
                [
                  90.39998626708984,
                  113.591796875
                ],
                [
                  89.39998626708984,
                  113.591796875
                ]
              ],
              "bbox": [
                89.39998626708984,
                112.591796875,
                90.39998626708984,
                113.591796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/344",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  129.60000610351562,
                  85.658203125
                ],
                [
                  130.60000610351562,
                  85.658203125
                ],
                [
                  130.60000610351562,
                  86.658203125
                ],
                [
                  129.60000610351562,
                  86.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                85.658203125,
                130.60000610351562,
                86.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/345",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  130.60000610351562,
                  85.658203125
                ],
                [
                  131.60000610351562,
                  85.658203125
                ],
                [
                  131.60000610351562,
                  86.658203125
                ],
                [
                  130.60000610351562,
                  86.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                85.658203125,
                131.60000610351562,
                86.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/346",
              "block_type": "TableCell",
              "html": "<th>19 Case study: Tkinter</th>",
              "polygon": [
                [
                  131.60000610351562,
                  85.658203125
                ],
                [
                  132.60000610351562,
                  85.658203125
                ],
                [
                  132.60000610351562,
                  86.658203125
                ],
                [
                  131.60000610351562,
                  86.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                85.658203125,
                132.60000610351562,
                86.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/347",
              "block_type": "TableCell",
              "html": "<th>179</th>",
              "polygon": [
                [
                  132.60000610351562,
                  85.658203125
                ],
                [
                  133.60000610351562,
                  85.658203125
                ],
                [
                  133.60000610351562,
                  86.658203125
                ],
                [
                  132.60000610351562,
                  86.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                85.658203125,
                133.60000610351562,
                86.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/348",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  86.658203125
                ],
                [
                  130.60000610351562,
                  86.658203125
                ],
                [
                  130.60000610351562,
                  87.658203125
                ],
                [
                  129.60000610351562,
                  87.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                86.658203125,
                130.60000610351562,
                87.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/349",
              "block_type": "TableCell",
              "html": "<td>19.1</td>",
              "polygon": [
                [
                  130.60000610351562,
                  86.658203125
                ],
                [
                  131.60000610351562,
                  86.658203125
                ],
                [
                  131.60000610351562,
                  87.658203125
                ],
                [
                  130.60000610351562,
                  87.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                86.658203125,
                131.60000610351562,
                87.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/350",
              "block_type": "TableCell",
              "html": "<td>GUI</td>",
              "polygon": [
                [
                  131.60000610351562,
                  86.658203125
                ],
                [
                  132.60000610351562,
                  86.658203125
                ],
                [
                  132.60000610351562,
                  87.658203125
                ],
                [
                  131.60000610351562,
                  87.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                86.658203125,
                132.60000610351562,
                87.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/351",
              "block_type": "TableCell",
              "html": "<td>179</td>",
              "polygon": [
                [
                  132.60000610351562,
                  86.658203125
                ],
                [
                  133.60000610351562,
                  86.658203125
                ],
                [
                  133.60000610351562,
                  87.658203125
                ],
                [
                  132.60000610351562,
                  87.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                86.658203125,
                133.60000610351562,
                87.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/352",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  87.658203125
                ],
                [
                  130.60000610351562,
                  87.658203125
                ],
                [
                  130.60000610351562,
                  88.658203125
                ],
                [
                  129.60000610351562,
                  88.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                87.658203125,
                130.60000610351562,
                88.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/353",
              "block_type": "TableCell",
              "html": "<td>19.2</td>",
              "polygon": [
                [
                  130.60000610351562,
                  87.658203125
                ],
                [
                  131.60000610351562,
                  87.658203125
                ],
                [
                  131.60000610351562,
                  88.658203125
                ],
                [
                  130.60000610351562,
                  88.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                87.658203125,
                131.60000610351562,
                88.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/354",
              "block_type": "TableCell",
              "html": "<td>Buttons and callbacks</td>",
              "polygon": [
                [
                  131.60000610351562,
                  87.658203125
                ],
                [
                  132.60000610351562,
                  87.658203125
                ],
                [
                  132.60000610351562,
                  88.658203125
                ],
                [
                  131.60000610351562,
                  88.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                87.658203125,
                132.60000610351562,
                88.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/355",
              "block_type": "TableCell",
              "html": "<td>180</td>",
              "polygon": [
                [
                  132.60000610351562,
                  87.658203125
                ],
                [
                  133.60000610351562,
                  87.658203125
                ],
                [
                  133.60000610351562,
                  88.658203125
                ],
                [
                  132.60000610351562,
                  88.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                87.658203125,
                133.60000610351562,
                88.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/356",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  88.658203125
                ],
                [
                  130.60000610351562,
                  88.658203125
                ],
                [
                  130.60000610351562,
                  89.658203125
                ],
                [
                  129.60000610351562,
                  89.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                88.658203125,
                130.60000610351562,
                89.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/357",
              "block_type": "TableCell",
              "html": "<td>19.3</td>",
              "polygon": [
                [
                  130.60000610351562,
                  88.658203125
                ],
                [
                  131.60000610351562,
                  88.658203125
                ],
                [
                  131.60000610351562,
                  89.658203125
                ],
                [
                  130.60000610351562,
                  89.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                88.658203125,
                131.60000610351562,
                89.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/358",
              "block_type": "TableCell",
              "html": "<td>Canvas widgets</td>",
              "polygon": [
                [
                  131.60000610351562,
                  88.658203125
                ],
                [
                  132.60000610351562,
                  88.658203125
                ],
                [
                  132.60000610351562,
                  89.658203125
                ],
                [
                  131.60000610351562,
                  89.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                88.658203125,
                132.60000610351562,
                89.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/359",
              "block_type": "TableCell",
              "html": "<td>181</td>",
              "polygon": [
                [
                  132.60000610351562,
                  88.658203125
                ],
                [
                  133.60000610351562,
                  88.658203125
                ],
                [
                  133.60000610351562,
                  89.658203125
                ],
                [
                  132.60000610351562,
                  89.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                88.658203125,
                133.60000610351562,
                89.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/360",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  89.658203125
                ],
                [
                  130.60000610351562,
                  89.658203125
                ],
                [
                  130.60000610351562,
                  90.658203125
                ],
                [
                  129.60000610351562,
                  90.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                89.658203125,
                130.60000610351562,
                90.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/361",
              "block_type": "TableCell",
              "html": "<td>19.4</td>",
              "polygon": [
                [
                  130.60000610351562,
                  89.658203125
                ],
                [
                  131.60000610351562,
                  89.658203125
                ],
                [
                  131.60000610351562,
                  90.658203125
                ],
                [
                  130.60000610351562,
                  90.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                89.658203125,
                131.60000610351562,
                90.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/362",
              "block_type": "TableCell",
              "html": "<td>Coordinate sequences</td>",
              "polygon": [
                [
                  131.60000610351562,
                  89.658203125
                ],
                [
                  132.60000610351562,
                  89.658203125
                ],
                [
                  132.60000610351562,
                  90.658203125
                ],
                [
                  131.60000610351562,
                  90.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                89.658203125,
                132.60000610351562,
                90.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/363",
              "block_type": "TableCell",
              "html": "<td>182</td>",
              "polygon": [
                [
                  132.60000610351562,
                  89.658203125
                ],
                [
                  133.60000610351562,
                  89.658203125
                ],
                [
                  133.60000610351562,
                  90.658203125
                ],
                [
                  132.60000610351562,
                  90.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                89.658203125,
                133.60000610351562,
                90.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/364",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  90.658203125
                ],
                [
                  130.60000610351562,
                  90.658203125
                ],
                [
                  130.60000610351562,
                  91.658203125
                ],
                [
                  129.60000610351562,
                  91.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                90.658203125,
                130.60000610351562,
                91.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/365",
              "block_type": "TableCell",
              "html": "<td>19.5</td>",
              "polygon": [
                [
                  130.60000610351562,
                  90.658203125
                ],
                [
                  131.60000610351562,
                  90.658203125
                ],
                [
                  131.60000610351562,
                  91.658203125
                ],
                [
                  130.60000610351562,
                  91.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                90.658203125,
                131.60000610351562,
                91.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/366",
              "block_type": "TableCell",
              "html": "<td>More widgets</td>",
              "polygon": [
                [
                  131.60000610351562,
                  90.658203125
                ],
                [
                  132.60000610351562,
                  90.658203125
                ],
                [
                  132.60000610351562,
                  91.658203125
                ],
                [
                  131.60000610351562,
                  91.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                90.658203125,
                132.60000610351562,
                91.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/367",
              "block_type": "TableCell",
              "html": "<td>182</td>",
              "polygon": [
                [
                  132.60000610351562,
                  90.658203125
                ],
                [
                  133.60000610351562,
                  90.658203125
                ],
                [
                  133.60000610351562,
                  91.658203125
                ],
                [
                  132.60000610351562,
                  91.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                90.658203125,
                133.60000610351562,
                91.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/368",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  91.658203125
                ],
                [
                  130.60000610351562,
                  91.658203125
                ],
                [
                  130.60000610351562,
                  92.658203125
                ],
                [
                  129.60000610351562,
                  92.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                91.658203125,
                130.60000610351562,
                92.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/369",
              "block_type": "TableCell",
              "html": "<td>19.6</td>",
              "polygon": [
                [
                  130.60000610351562,
                  91.658203125
                ],
                [
                  131.60000610351562,
                  91.658203125
                ],
                [
                  131.60000610351562,
                  92.658203125
                ],
                [
                  130.60000610351562,
                  92.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                91.658203125,
                131.60000610351562,
                92.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/370",
              "block_type": "TableCell",
              "html": "<td>Packing widgets</td>",
              "polygon": [
                [
                  131.60000610351562,
                  91.658203125
                ],
                [
                  132.60000610351562,
                  91.658203125
                ],
                [
                  132.60000610351562,
                  92.658203125
                ],
                [
                  131.60000610351562,
                  92.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                91.658203125,
                132.60000610351562,
                92.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/371",
              "block_type": "TableCell",
              "html": "<td>183</td>",
              "polygon": [
                [
                  132.60000610351562,
                  91.658203125
                ],
                [
                  133.60000610351562,
                  91.658203125
                ],
                [
                  133.60000610351562,
                  92.658203125
                ],
                [
                  132.60000610351562,
                  92.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                91.658203125,
                133.60000610351562,
                92.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/372",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  92.658203125
                ],
                [
                  130.60000610351562,
                  92.658203125
                ],
                [
                  130.60000610351562,
                  93.658203125
                ],
                [
                  129.60000610351562,
                  93.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                92.658203125,
                130.60000610351562,
                93.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/373",
              "block_type": "TableCell",
              "html": "<td>19.7</td>",
              "polygon": [
                [
                  130.60000610351562,
                  92.658203125
                ],
                [
                  131.60000610351562,
                  92.658203125
                ],
                [
                  131.60000610351562,
                  93.658203125
                ],
                [
                  130.60000610351562,
                  93.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                92.658203125,
                131.60000610351562,
                93.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/374",
              "block_type": "TableCell",
              "html": "<td>Menus and Callables</td>",
              "polygon": [
                [
                  131.60000610351562,
                  92.658203125
                ],
                [
                  132.60000610351562,
                  92.658203125
                ],
                [
                  132.60000610351562,
                  93.658203125
                ],
                [
                  131.60000610351562,
                  93.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                92.658203125,
                132.60000610351562,
                93.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/375",
              "block_type": "TableCell",
              "html": "<td>185</td>",
              "polygon": [
                [
                  132.60000610351562,
                  92.658203125
                ],
                [
                  133.60000610351562,
                  92.658203125
                ],
                [
                  133.60000610351562,
                  93.658203125
                ],
                [
                  132.60000610351562,
                  93.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                92.658203125,
                133.60000610351562,
                93.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/376",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  93.658203125
                ],
                [
                  130.60000610351562,
                  93.658203125
                ],
                [
                  130.60000610351562,
                  94.658203125
                ],
                [
                  129.60000610351562,
                  94.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                93.658203125,
                130.60000610351562,
                94.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/377",
              "block_type": "TableCell",
              "html": "<td>19.8</td>",
              "polygon": [
                [
                  130.60000610351562,
                  93.658203125
                ],
                [
                  131.60000610351562,
                  93.658203125
                ],
                [
                  131.60000610351562,
                  94.658203125
                ],
                [
                  130.60000610351562,
                  94.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                93.658203125,
                131.60000610351562,
                94.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/378",
              "block_type": "TableCell",
              "html": "<td>Binding</td>",
              "polygon": [
                [
                  131.60000610351562,
                  93.658203125
                ],
                [
                  132.60000610351562,
                  93.658203125
                ],
                [
                  132.60000610351562,
                  94.658203125
                ],
                [
                  131.60000610351562,
                  94.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                93.658203125,
                132.60000610351562,
                94.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/379",
              "block_type": "TableCell",
              "html": "<td>186</td>",
              "polygon": [
                [
                  132.60000610351562,
                  93.658203125
                ],
                [
                  133.60000610351562,
                  93.658203125
                ],
                [
                  133.60000610351562,
                  94.658203125
                ],
                [
                  132.60000610351562,
                  94.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                93.658203125,
                133.60000610351562,
                94.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/380",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  94.658203125
                ],
                [
                  130.60000610351562,
                  94.658203125
                ],
                [
                  130.60000610351562,
                  95.658203125
                ],
                [
                  129.60000610351562,
                  95.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                94.658203125,
                130.60000610351562,
                95.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/381",
              "block_type": "TableCell",
              "html": "<td>19.9</td>",
              "polygon": [
                [
                  130.60000610351562,
                  94.658203125
                ],
                [
                  131.60000610351562,
                  94.658203125
                ],
                [
                  131.60000610351562,
                  95.658203125
                ],
                [
                  130.60000610351562,
                  95.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                94.658203125,
                131.60000610351562,
                95.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/382",
              "block_type": "TableCell",
              "html": "<td>Debugging</td>",
              "polygon": [
                [
                  131.60000610351562,
                  94.658203125
                ],
                [
                  132.60000610351562,
                  94.658203125
                ],
                [
                  132.60000610351562,
                  95.658203125
                ],
                [
                  131.60000610351562,
                  95.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                94.658203125,
                132.60000610351562,
                95.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/383",
              "block_type": "TableCell",
              "html": "<td>188</td>",
              "polygon": [
                [
                  132.60000610351562,
                  94.658203125
                ],
                [
                  133.60000610351562,
                  94.658203125
                ],
                [
                  133.60000610351562,
                  95.658203125
                ],
                [
                  132.60000610351562,
                  95.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                94.658203125,
                133.60000610351562,
                95.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/384",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  95.658203125
                ],
                [
                  130.60000610351562,
                  95.658203125
                ],
                [
                  130.60000610351562,
                  96.658203125
                ],
                [
                  129.60000610351562,
                  96.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                95.658203125,
                130.60000610351562,
                96.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/385",
              "block_type": "TableCell",
              "html": "<td>19.10</td>",
              "polygon": [
                [
                  130.60000610351562,
                  95.658203125
                ],
                [
                  131.60000610351562,
                  95.658203125
                ],
                [
                  131.60000610351562,
                  96.658203125
                ],
                [
                  130.60000610351562,
                  96.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                95.658203125,
                131.60000610351562,
                96.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/386",
              "block_type": "TableCell",
              "html": "<td>Glossary</td>",
              "polygon": [
                [
                  131.60000610351562,
                  95.658203125
                ],
                [
                  132.60000610351562,
                  95.658203125
                ],
                [
                  132.60000610351562,
                  96.658203125
                ],
                [
                  131.60000610351562,
                  96.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                95.658203125,
                132.60000610351562,
                96.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/387",
              "block_type": "TableCell",
              "html": "<td>189</td>",
              "polygon": [
                [
                  132.60000610351562,
                  95.658203125
                ],
                [
                  133.60000610351562,
                  95.658203125
                ],
                [
                  133.60000610351562,
                  96.658203125
                ],
                [
                  132.60000610351562,
                  96.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                95.658203125,
                133.60000610351562,
                96.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/388",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  96.658203125
                ],
                [
                  130.60000610351562,
                  96.658203125
                ],
                [
                  130.60000610351562,
                  97.658203125
                ],
                [
                  129.60000610351562,
                  97.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                96.658203125,
                130.60000610351562,
                97.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/389",
              "block_type": "TableCell",
              "html": "<td>19.11</td>",
              "polygon": [
                [
                  130.60000610351562,
                  96.658203125
                ],
                [
                  131.60000610351562,
                  96.658203125
                ],
                [
                  131.60000610351562,
                  97.658203125
                ],
                [
                  130.60000610351562,
                  97.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                96.658203125,
                131.60000610351562,
                97.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/390",
              "block_type": "TableCell",
              "html": "<td>Exercises</td>",
              "polygon": [
                [
                  131.60000610351562,
                  96.658203125
                ],
                [
                  132.60000610351562,
                  96.658203125
                ],
                [
                  132.60000610351562,
                  97.658203125
                ],
                [
                  131.60000610351562,
                  97.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                96.658203125,
                132.60000610351562,
                97.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/391",
              "block_type": "TableCell",
              "html": "<td>190</td>",
              "polygon": [
                [
                  132.60000610351562,
                  96.658203125
                ],
                [
                  133.60000610351562,
                  96.658203125
                ],
                [
                  133.60000610351562,
                  97.658203125
                ],
                [
                  132.60000610351562,
                  97.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                96.658203125,
                133.60000610351562,
                97.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/392",
              "block_type": "TableCell",
              "html": "<th>A</th>",
              "polygon": [
                [
                  129.60000610351562,
                  97.658203125
                ],
                [
                  130.60000610351562,
                  97.658203125
                ],
                [
                  130.60000610351562,
                  98.658203125
                ],
                [
                  129.60000610351562,
                  98.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                97.658203125,
                130.60000610351562,
                98.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/393",
              "block_type": "TableCell",
              "html": "<th>Debugging</th>",
              "polygon": [
                [
                  130.60000610351562,
                  97.658203125
                ],
                [
                  131.60000610351562,
                  97.658203125
                ],
                [
                  131.60000610351562,
                  98.658203125
                ],
                [
                  130.60000610351562,
                  98.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                97.658203125,
                131.60000610351562,
                98.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/394",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  131.60000610351562,
                  97.658203125
                ],
                [
                  132.60000610351562,
                  97.658203125
                ],
                [
                  132.60000610351562,
                  98.658203125
                ],
                [
                  131.60000610351562,
                  98.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                97.658203125,
                132.60000610351562,
                98.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/395",
              "block_type": "TableCell",
              "html": "<th>193</th>",
              "polygon": [
                [
                  132.60000610351562,
                  97.658203125
                ],
                [
                  133.60000610351562,
                  97.658203125
                ],
                [
                  133.60000610351562,
                  98.658203125
                ],
                [
                  132.60000610351562,
                  98.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                97.658203125,
                133.60000610351562,
                98.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/396",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  98.658203125
                ],
                [
                  130.60000610351562,
                  98.658203125
                ],
                [
                  130.60000610351562,
                  99.658203125
                ],
                [
                  129.60000610351562,
                  99.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                98.658203125,
                130.60000610351562,
                99.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/397",
              "block_type": "TableCell",
              "html": "<td>A.1</td>",
              "polygon": [
                [
                  130.60000610351562,
                  98.658203125
                ],
                [
                  131.60000610351562,
                  98.658203125
                ],
                [
                  131.60000610351562,
                  99.658203125
                ],
                [
                  130.60000610351562,
                  99.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                98.658203125,
                131.60000610351562,
                99.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/398",
              "block_type": "TableCell",
              "html": "<td>Syntax errors</td>",
              "polygon": [
                [
                  131.60000610351562,
                  98.658203125
                ],
                [
                  132.60000610351562,
                  98.658203125
                ],
                [
                  132.60000610351562,
                  99.658203125
                ],
                [
                  131.60000610351562,
                  99.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                98.658203125,
                132.60000610351562,
                99.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/399",
              "block_type": "TableCell",
              "html": "<td>193</td>",
              "polygon": [
                [
                  132.60000610351562,
                  98.658203125
                ],
                [
                  133.60000610351562,
                  98.658203125
                ],
                [
                  133.60000610351562,
                  99.658203125
                ],
                [
                  132.60000610351562,
                  99.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                98.658203125,
                133.60000610351562,
                99.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/400",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  99.658203125
                ],
                [
                  130.60000610351562,
                  99.658203125
                ],
                [
                  130.60000610351562,
                  100.658203125
                ],
                [
                  129.60000610351562,
                  100.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                99.658203125,
                130.60000610351562,
                100.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/401",
              "block_type": "TableCell",
              "html": "<td>A.2</td>",
              "polygon": [
                [
                  130.60000610351562,
                  99.658203125
                ],
                [
                  131.60000610351562,
                  99.658203125
                ],
                [
                  131.60000610351562,
                  100.658203125
                ],
                [
                  130.60000610351562,
                  100.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                99.658203125,
                131.60000610351562,
                100.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/402",
              "block_type": "TableCell",
              "html": "<td>Runtime errors</td>",
              "polygon": [
                [
                  131.60000610351562,
                  99.658203125
                ],
                [
                  132.60000610351562,
                  99.658203125
                ],
                [
                  132.60000610351562,
                  100.658203125
                ],
                [
                  131.60000610351562,
                  100.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                99.658203125,
                132.60000610351562,
                100.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/403",
              "block_type": "TableCell",
              "html": "<td>195</td>",
              "polygon": [
                [
                  132.60000610351562,
                  99.658203125
                ],
                [
                  133.60000610351562,
                  99.658203125
                ],
                [
                  133.60000610351562,
                  100.658203125
                ],
                [
                  132.60000610351562,
                  100.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                99.658203125,
                133.60000610351562,
                100.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/404",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  100.658203125
                ],
                [
                  130.60000610351562,
                  100.658203125
                ],
                [
                  130.60000610351562,
                  101.658203125
                ],
                [
                  129.60000610351562,
                  101.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                100.658203125,
                130.60000610351562,
                101.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/405",
              "block_type": "TableCell",
              "html": "<td>A.3</td>",
              "polygon": [
                [
                  130.60000610351562,
                  100.658203125
                ],
                [
                  131.60000610351562,
                  100.658203125
                ],
                [
                  131.60000610351562,
                  101.658203125
                ],
                [
                  130.60000610351562,
                  101.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                100.658203125,
                131.60000610351562,
                101.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/406",
              "block_type": "TableCell",
              "html": "<td>Semantic errors</td>",
              "polygon": [
                [
                  131.60000610351562,
                  100.658203125
                ],
                [
                  132.60000610351562,
                  100.658203125
                ],
                [
                  132.60000610351562,
                  101.658203125
                ],
                [
                  131.60000610351562,
                  101.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                100.658203125,
                132.60000610351562,
                101.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/407",
              "block_type": "TableCell",
              "html": "<td>198</td>",
              "polygon": [
                [
                  132.60000610351562,
                  100.658203125
                ],
                [
                  133.60000610351562,
                  100.658203125
                ],
                [
                  133.60000610351562,
                  101.658203125
                ],
                [
                  132.60000610351562,
                  101.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                100.658203125,
                133.60000610351562,
                101.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/408",
              "block_type": "TableCell",
              "html": "<th>B</th>",
              "polygon": [
                [
                  129.60000610351562,
                  101.658203125
                ],
                [
                  130.60000610351562,
                  101.658203125
                ],
                [
                  130.60000610351562,
                  102.658203125
                ],
                [
                  129.60000610351562,
                  102.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                101.658203125,
                130.60000610351562,
                102.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/409",
              "block_type": "TableCell",
              "html": "<th>Analysis of Algorithms</th>",
              "polygon": [
                [
                  130.60000610351562,
                  101.658203125
                ],
                [
                  131.60000610351562,
                  101.658203125
                ],
                [
                  131.60000610351562,
                  102.658203125
                ],
                [
                  130.60000610351562,
                  102.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                101.658203125,
                131.60000610351562,
                102.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/410",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  131.60000610351562,
                  101.658203125
                ],
                [
                  132.60000610351562,
                  101.658203125
                ],
                [
                  132.60000610351562,
                  102.658203125
                ],
                [
                  131.60000610351562,
                  102.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                101.658203125,
                132.60000610351562,
                102.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/411",
              "block_type": "TableCell",
              "html": "<th>201</th>",
              "polygon": [
                [
                  132.60000610351562,
                  101.658203125
                ],
                [
                  133.60000610351562,
                  101.658203125
                ],
                [
                  133.60000610351562,
                  102.658203125
                ],
                [
                  132.60000610351562,
                  102.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                101.658203125,
                133.60000610351562,
                102.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/412",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  102.658203125
                ],
                [
                  130.60000610351562,
                  102.658203125
                ],
                [
                  130.60000610351562,
                  103.658203125
                ],
                [
                  129.60000610351562,
                  103.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                102.658203125,
                130.60000610351562,
                103.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/413",
              "block_type": "TableCell",
              "html": "<td>B.1</td>",
              "polygon": [
                [
                  130.60000610351562,
                  102.658203125
                ],
                [
                  131.60000610351562,
                  102.658203125
                ],
                [
                  131.60000610351562,
                  103.658203125
                ],
                [
                  130.60000610351562,
                  103.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                102.658203125,
                131.60000610351562,
                103.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/414",
              "block_type": "TableCell",
              "html": "<td>Order of growth</td>",
              "polygon": [
                [
                  131.60000610351562,
                  102.658203125
                ],
                [
                  132.60000610351562,
                  102.658203125
                ],
                [
                  132.60000610351562,
                  103.658203125
                ],
                [
                  131.60000610351562,
                  103.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                102.658203125,
                132.60000610351562,
                103.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/415",
              "block_type": "TableCell",
              "html": "<td>202</td>",
              "polygon": [
                [
                  132.60000610351562,
                  102.658203125
                ],
                [
                  133.60000610351562,
                  102.658203125
                ],
                [
                  133.60000610351562,
                  103.658203125
                ],
                [
                  132.60000610351562,
                  103.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                102.658203125,
                133.60000610351562,
                103.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/416",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  103.658203125
                ],
                [
                  130.60000610351562,
                  103.658203125
                ],
                [
                  130.60000610351562,
                  104.658203125
                ],
                [
                  129.60000610351562,
                  104.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                103.658203125,
                130.60000610351562,
                104.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/417",
              "block_type": "TableCell",
              "html": "<td>B.2</td>",
              "polygon": [
                [
                  130.60000610351562,
                  103.658203125
                ],
                [
                  131.60000610351562,
                  103.658203125
                ],
                [
                  131.60000610351562,
                  104.658203125
                ],
                [
                  130.60000610351562,
                  104.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                103.658203125,
                131.60000610351562,
                104.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/418",
              "block_type": "TableCell",
              "html": "<td>Analysis of basic Python operations</td>",
              "polygon": [
                [
                  131.60000610351562,
                  103.658203125
                ],
                [
                  132.60000610351562,
                  103.658203125
                ],
                [
                  132.60000610351562,
                  104.658203125
                ],
                [
                  131.60000610351562,
                  104.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                103.658203125,
                132.60000610351562,
                104.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/419",
              "block_type": "TableCell",
              "html": "<td>204</td>",
              "polygon": [
                [
                  132.60000610351562,
                  103.658203125
                ],
                [
                  133.60000610351562,
                  103.658203125
                ],
                [
                  133.60000610351562,
                  104.658203125
                ],
                [
                  132.60000610351562,
                  104.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                103.658203125,
                133.60000610351562,
                104.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/420",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  104.658203125
                ],
                [
                  130.60000610351562,
                  104.658203125
                ],
                [
                  130.60000610351562,
                  105.658203125
                ],
                [
                  129.60000610351562,
                  105.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                104.658203125,
                130.60000610351562,
                105.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/421",
              "block_type": "TableCell",
              "html": "<td>B.3</td>",
              "polygon": [
                [
                  130.60000610351562,
                  104.658203125
                ],
                [
                  131.60000610351562,
                  104.658203125
                ],
                [
                  131.60000610351562,
                  105.658203125
                ],
                [
                  130.60000610351562,
                  105.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                104.658203125,
                131.60000610351562,
                105.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/422",
              "block_type": "TableCell",
              "html": "<td>Analysis of search algorithms</td>",
              "polygon": [
                [
                  131.60000610351562,
                  104.658203125
                ],
                [
                  132.60000610351562,
                  104.658203125
                ],
                [
                  132.60000610351562,
                  105.658203125
                ],
                [
                  131.60000610351562,
                  105.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                104.658203125,
                132.60000610351562,
                105.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/423",
              "block_type": "TableCell",
              "html": "<td>205</td>",
              "polygon": [
                [
                  132.60000610351562,
                  104.658203125
                ],
                [
                  133.60000610351562,
                  104.658203125
                ],
                [
                  133.60000610351562,
                  105.658203125
                ],
                [
                  132.60000610351562,
                  105.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                104.658203125,
                133.60000610351562,
                105.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/424",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  105.658203125
                ],
                [
                  130.60000610351562,
                  105.658203125
                ],
                [
                  130.60000610351562,
                  106.658203125
                ],
                [
                  129.60000610351562,
                  106.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                105.658203125,
                130.60000610351562,
                106.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/425",
              "block_type": "TableCell",
              "html": "<td>B.4</td>",
              "polygon": [
                [
                  130.60000610351562,
                  105.658203125
                ],
                [
                  131.60000610351562,
                  105.658203125
                ],
                [
                  131.60000610351562,
                  106.658203125
                ],
                [
                  130.60000610351562,
                  106.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                105.658203125,
                131.60000610351562,
                106.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/426",
              "block_type": "TableCell",
              "html": "<td>Hashtables</td>",
              "polygon": [
                [
                  131.60000610351562,
                  105.658203125
                ],
                [
                  132.60000610351562,
                  105.658203125
                ],
                [
                  132.60000610351562,
                  106.658203125
                ],
                [
                  131.60000610351562,
                  106.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                105.658203125,
                132.60000610351562,
                106.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/427",
              "block_type": "TableCell",
              "html": "<td>206</td>",
              "polygon": [
                [
                  132.60000610351562,
                  105.658203125
                ],
                [
                  133.60000610351562,
                  105.658203125
                ],
                [
                  133.60000610351562,
                  106.658203125
                ],
                [
                  132.60000610351562,
                  106.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                105.658203125,
                133.60000610351562,
                106.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/428",
              "block_type": "TableCell",
              "html": "<th>C</th>",
              "polygon": [
                [
                  129.60000610351562,
                  106.658203125
                ],
                [
                  130.60000610351562,
                  106.658203125
                ],
                [
                  130.60000610351562,
                  107.658203125
                ],
                [
                  129.60000610351562,
                  107.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                106.658203125,
                130.60000610351562,
                107.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/429",
              "block_type": "TableCell",
              "html": "<th>Lumpy</th>",
              "polygon": [
                [
                  130.60000610351562,
                  106.658203125
                ],
                [
                  131.60000610351562,
                  106.658203125
                ],
                [
                  131.60000610351562,
                  107.658203125
                ],
                [
                  130.60000610351562,
                  107.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                106.658203125,
                131.60000610351562,
                107.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/430",
              "block_type": "TableCell",
              "html": "<th></th>",
              "polygon": [
                [
                  131.60000610351562,
                  106.658203125
                ],
                [
                  132.60000610351562,
                  106.658203125
                ],
                [
                  132.60000610351562,
                  107.658203125
                ],
                [
                  131.60000610351562,
                  107.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                106.658203125,
                132.60000610351562,
                107.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/431",
              "block_type": "TableCell",
              "html": "<th>211</th>",
              "polygon": [
                [
                  132.60000610351562,
                  106.658203125
                ],
                [
                  133.60000610351562,
                  106.658203125
                ],
                [
                  133.60000610351562,
                  107.658203125
                ],
                [
                  132.60000610351562,
                  107.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                106.658203125,
                133.60000610351562,
                107.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/432",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  107.658203125
                ],
                [
                  130.60000610351562,
                  107.658203125
                ],
                [
                  130.60000610351562,
                  108.658203125
                ],
                [
                  129.60000610351562,
                  108.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                107.658203125,
                130.60000610351562,
                108.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/433",
              "block_type": "TableCell",
              "html": "<td>C.1</td>",
              "polygon": [
                [
                  130.60000610351562,
                  107.658203125
                ],
                [
                  131.60000610351562,
                  107.658203125
                ],
                [
                  131.60000610351562,
                  108.658203125
                ],
                [
                  130.60000610351562,
                  108.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                107.658203125,
                131.60000610351562,
                108.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/434",
              "block_type": "TableCell",
              "html": "<td>State diagram</td>",
              "polygon": [
                [
                  131.60000610351562,
                  107.658203125
                ],
                [
                  132.60000610351562,
                  107.658203125
                ],
                [
                  132.60000610351562,
                  108.658203125
                ],
                [
                  131.60000610351562,
                  108.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                107.658203125,
                132.60000610351562,
                108.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/435",
              "block_type": "TableCell",
              "html": "<td>211</td>",
              "polygon": [
                [
                  132.60000610351562,
                  107.658203125
                ],
                [
                  133.60000610351562,
                  107.658203125
                ],
                [
                  133.60000610351562,
                  108.658203125
                ],
                [
                  132.60000610351562,
                  108.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                107.658203125,
                133.60000610351562,
                108.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/436",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  108.658203125
                ],
                [
                  130.60000610351562,
                  108.658203125
                ],
                [
                  130.60000610351562,
                  109.658203125
                ],
                [
                  129.60000610351562,
                  109.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                108.658203125,
                130.60000610351562,
                109.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/437",
              "block_type": "TableCell",
              "html": "<td>C.2</td>",
              "polygon": [
                [
                  130.60000610351562,
                  108.658203125
                ],
                [
                  131.60000610351562,
                  108.658203125
                ],
                [
                  131.60000610351562,
                  109.658203125
                ],
                [
                  130.60000610351562,
                  109.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                108.658203125,
                131.60000610351562,
                109.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/438",
              "block_type": "TableCell",
              "html": "<td>Stack diagram</td>",
              "polygon": [
                [
                  131.60000610351562,
                  108.658203125
                ],
                [
                  132.60000610351562,
                  108.658203125
                ],
                [
                  132.60000610351562,
                  109.658203125
                ],
                [
                  131.60000610351562,
                  109.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                108.658203125,
                132.60000610351562,
                109.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/439",
              "block_type": "TableCell",
              "html": "<td>212</td>",
              "polygon": [
                [
                  132.60000610351562,
                  108.658203125
                ],
                [
                  133.60000610351562,
                  108.658203125
                ],
                [
                  133.60000610351562,
                  109.658203125
                ],
                [
                  132.60000610351562,
                  109.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                108.658203125,
                133.60000610351562,
                109.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/440",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  109.658203125
                ],
                [
                  130.60000610351562,
                  109.658203125
                ],
                [
                  130.60000610351562,
                  110.658203125
                ],
                [
                  129.60000610351562,
                  110.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                109.658203125,
                130.60000610351562,
                110.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/441",
              "block_type": "TableCell",
              "html": "<td>C.3</td>",
              "polygon": [
                [
                  130.60000610351562,
                  109.658203125
                ],
                [
                  131.60000610351562,
                  109.658203125
                ],
                [
                  131.60000610351562,
                  110.658203125
                ],
                [
                  130.60000610351562,
                  110.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                109.658203125,
                131.60000610351562,
                110.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/442",
              "block_type": "TableCell",
              "html": "<td>Object diagrams</td>",
              "polygon": [
                [
                  131.60000610351562,
                  109.658203125
                ],
                [
                  132.60000610351562,
                  109.658203125
                ],
                [
                  132.60000610351562,
                  110.658203125
                ],
                [
                  131.60000610351562,
                  110.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                109.658203125,
                132.60000610351562,
                110.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/443",
              "block_type": "TableCell",
              "html": "<td>213</td>",
              "polygon": [
                [
                  132.60000610351562,
                  109.658203125
                ],
                [
                  133.60000610351562,
                  109.658203125
                ],
                [
                  133.60000610351562,
                  110.658203125
                ],
                [
                  132.60000610351562,
                  110.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                109.658203125,
                133.60000610351562,
                110.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/444",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  110.658203125
                ],
                [
                  130.60000610351562,
                  110.658203125
                ],
                [
                  130.60000610351562,
                  111.658203125
                ],
                [
                  129.60000610351562,
                  111.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                110.658203125,
                130.60000610351562,
                111.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/445",
              "block_type": "TableCell",
              "html": "<td>C.4</td>",
              "polygon": [
                [
                  130.60000610351562,
                  110.658203125
                ],
                [
                  131.60000610351562,
                  110.658203125
                ],
                [
                  131.60000610351562,
                  111.658203125
                ],
                [
                  130.60000610351562,
                  111.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                110.658203125,
                131.60000610351562,
                111.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/446",
              "block_type": "TableCell",
              "html": "<td>Function and class objects</td>",
              "polygon": [
                [
                  131.60000610351562,
                  110.658203125
                ],
                [
                  132.60000610351562,
                  110.658203125
                ],
                [
                  132.60000610351562,
                  111.658203125
                ],
                [
                  131.60000610351562,
                  111.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                110.658203125,
                132.60000610351562,
                111.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/447",
              "block_type": "TableCell",
              "html": "<td>215</td>",
              "polygon": [
                [
                  132.60000610351562,
                  110.658203125
                ],
                [
                  133.60000610351562,
                  110.658203125
                ],
                [
                  133.60000610351562,
                  111.658203125
                ],
                [
                  132.60000610351562,
                  111.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                110.658203125,
                133.60000610351562,
                111.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/448",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  129.60000610351562,
                  111.658203125
                ],
                [
                  130.60000610351562,
                  111.658203125
                ],
                [
                  130.60000610351562,
                  112.658203125
                ],
                [
                  129.60000610351562,
                  112.658203125
                ]
              ],
              "bbox": [
                129.60000610351562,
                111.658203125,
                130.60000610351562,
                112.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/449",
              "block_type": "TableCell",
              "html": "<td>C.5</td>",
              "polygon": [
                [
                  130.60000610351562,
                  111.658203125
                ],
                [
                  131.60000610351562,
                  111.658203125
                ],
                [
                  131.60000610351562,
                  112.658203125
                ],
                [
                  130.60000610351562,
                  112.658203125
                ]
              ],
              "bbox": [
                130.60000610351562,
                111.658203125,
                131.60000610351562,
                112.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/450",
              "block_type": "TableCell",
              "html": "<td>Class Diagrams</td>",
              "polygon": [
                [
                  131.60000610351562,
                  111.658203125
                ],
                [
                  132.60000610351562,
                  111.658203125
                ],
                [
                  132.60000610351562,
                  112.658203125
                ],
                [
                  131.60000610351562,
                  112.658203125
                ]
              ],
              "bbox": [
                131.60000610351562,
                111.658203125,
                132.60000610351562,
                112.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            },
            {
              "id": "/page/20/TableCell/451",
              "block_type": "TableCell",
              "html": "<td>216</td>",
              "polygon": [
                [
                  132.60000610351562,
                  111.658203125
                ],
                [
                  133.60000610351562,
                  111.658203125
                ],
                [
                  133.60000610351562,
                  112.658203125
                ],
                [
                  132.60000610351562,
                  112.658203125
                ]
              ],
              "bbox": [
                132.60000610351562,
                111.658203125,
                133.60000610351562,
                112.658203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/12/SectionHeader/0"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/13/Page/493",
      "block_type": "Page",
      "html": "<content-ref src='/page/13/PageHeader/0'></content-ref><content-ref src='/page/13/PageHeader/2'></content-ref><content-ref src='/page/13/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/13/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.171142578125
            ],
            [
              482.4002685546875,
              61.171142578125
            ],
            [
              482.4002685546875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.171142578125,
            482.4002685546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/13/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.9130859375,
              61.1982421875
            ],
            [
              100.705078125,
              61.1982421875
            ],
            [
              100.705078125,
              70.4794921875
            ],
            [
              85.9130859375,
              70.4794921875
            ]
          ],
          "bbox": [
            85.9130859375,
            61.1982421875,
            100.705078125,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/13/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              86.39999389648438,
              85.271484375
            ],
            [
              483.50390625,
              85.271484375
            ],
            [
              483.50390625,
              700.8350067138672
            ],
            [
              86.39999389648438,
              700.8350067138672
            ]
          ],
          "bbox": [
            86.39999389648438,
            85.271484375,
            483.50390625,
            700.8350067138672
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/14/Page/434",
      "block_type": "Page",
      "html": "<content-ref src='/page/14/PageHeader/0'></content-ref><content-ref src='/page/14/PageHeader/2'></content-ref><content-ref src='/page/14/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/14/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.60000610351562,
              61.05322265625
            ],
            [
              525.6004638671875,
              61.05322265625
            ],
            [
              525.6004638671875,
              71.13372802734375
            ],
            [
              129.60000610351562,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.60000610351562,
            61.05322265625,
            525.6004638671875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/14/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              513.087890625,
              63.1318359375
            ],
            [
              524.443359375,
              63.1318359375
            ],
            [
              524.443359375,
              72.4130859375
            ],
            [
              513.087890625,
              72.4130859375
            ]
          ],
          "bbox": [
            513.087890625,
            63.1318359375,
            524.443359375,
            72.4130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/14/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              129.60000610351562,
              81.404296875
            ],
            [
              527.1328125,
              81.404296875
            ],
            [
              527.1328125,
              703.0546875
            ],
            [
              129.60000610351562,
              703.0546875
            ]
          ],
          "bbox": [
            129.60000610351562,
            81.404296875,
            527.1328125,
            703.0546875
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/15/Page/510",
      "block_type": "Page",
      "html": "<content-ref src='/page/15/PageHeader/0'></content-ref><content-ref src='/page/15/PageHeader/2'></content-ref><content-ref src='/page/15/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/15/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.171142578125
            ],
            [
              482.4002685546875,
              61.171142578125
            ],
            [
              482.4002685546875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.171142578125,
            482.4002685546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/15/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.85986328125
            ],
            [
              100.33154296875,
              60.85986328125
            ],
            [
              100.33154296875,
              70.33447265625
            ],
            [
              85.53955078125,
              70.33447265625
            ]
          ],
          "bbox": [
            85.53955078125,
            60.85986328125,
            100.33154296875,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/15/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              84.7177734375,
              84.111328125
            ],
            [
              482.40338134765625,
              84.111328125
            ],
            [
              482.40338134765625,
              700.8350219726562
            ],
            [
              84.7177734375,
              700.8350219726562
            ]
          ],
          "bbox": [
            84.7177734375,
            84.111328125,
            482.40338134765625,
            700.8350219726562
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/16/Page/457",
      "block_type": "Page",
      "html": "<content-ref src='/page/16/PageHeader/0'></content-ref><content-ref src='/page/16/PageHeader/2'></content-ref><content-ref src='/page/16/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/16/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.60000610351562,
              60.76318359375
            ],
            [
              525.599609375,
              60.76318359375
            ],
            [
              525.599609375,
              71.13372802734375
            ],
            [
              129.60000610351562,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.60000610351562,
            60.76318359375,
            525.599609375,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/16/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              506.8125,
              61.681640625
            ],
            [
              524.7421875,
              61.681640625
            ],
            [
              524.7421875,
              71.15625
            ],
            [
              506.8125,
              71.15625
            ]
          ],
          "bbox": [
            506.8125,
            61.681640625,
            524.7421875,
            71.15625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/16/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              129.5999755859375,
              83.53125
            ],
            [
              526.833984375,
              83.53125
            ],
            [
              526.833984375,
              700.8349533081055
            ],
            [
              129.5999755859375,
              700.8349533081055
            ]
          ],
          "bbox": [
            129.5999755859375,
            83.53125,
            526.833984375,
            700.8349533081055
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/17/Page/506",
      "block_type": "Page",
      "html": "<content-ref src='/page/17/PageHeader/0'></content-ref><content-ref src='/page/17/PageHeader/2'></content-ref><content-ref src='/page/17/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/17/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.171142578125
            ],
            [
              482.4002685546875,
              61.171142578125
            ],
            [
              482.4002685546875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.171142578125,
            482.4002685546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/17/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.8095703125,
              60.76318359375
            ],
            [
              106.681640625,
              60.76318359375
            ],
            [
              106.681640625,
              70.43115234375
            ],
            [
              86.8095703125,
              70.43115234375
            ]
          ],
          "bbox": [
            86.8095703125,
            60.76318359375,
            106.681640625,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/17/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              85.166015625,
              85.271484375
            ],
            [
              482.4033508300781,
              85.271484375
            ],
            [
              482.4033508300781,
              700.8348846435547
            ],
            [
              85.166015625,
              700.8348846435547
            ]
          ],
          "bbox": [
            85.166015625,
            85.271484375,
            482.4033508300781,
            700.8348846435547
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/18/Page/412",
      "block_type": "Page",
      "html": "<content-ref src='/page/18/PageHeader/0'></content-ref><content-ref src='/page/18/PageHeader/2'></content-ref><content-ref src='/page/18/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/18/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.60000610351562,
              61.05322265625
            ],
            [
              525.6001586914062,
              61.05322265625
            ],
            [
              525.6001586914062,
              71.13372802734375
            ],
            [
              129.60000610351562,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.60000610351562,
            61.05322265625,
            525.6001586914062,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/18/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              61.294921875
            ],
            [
              525.041015625,
              61.294921875
            ],
            [
              525.041015625,
              70.8662109375
            ],
            [
              510.099609375,
              70.8662109375
            ]
          ],
          "bbox": [
            510.099609375,
            61.294921875,
            525.041015625,
            70.8662109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/18/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              129.59999084472656,
              78.697265625
            ],
            [
              527.73046875,
              78.697265625
            ],
            [
              527.73046875,
              703.0546875
            ],
            [
              129.59999084472656,
              703.0546875
            ]
          ],
          "bbox": [
            129.59999084472656,
            78.697265625,
            527.73046875,
            703.0546875
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/19/Page/437",
      "block_type": "Page",
      "html": "<content-ref src='/page/19/PageHeader/0'></content-ref><content-ref src='/page/19/PageHeader/2'></content-ref><content-ref src='/page/19/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/19/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.171142578125
            ],
            [
              482.4002685546875,
              61.171142578125
            ],
            [
              482.4002685546875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.171142578125,
            482.4002685546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/19/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.98779296875,
              62.02001953125
            ],
            [
              97.49267578125,
              62.02001953125
            ],
            [
              97.49267578125,
              71.10791015625
            ],
            [
              85.98779296875,
              71.10791015625
            ]
          ],
          "bbox": [
            85.98779296875,
            62.02001953125,
            97.49267578125,
            71.10791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/19/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              86.39998626708984,
              87.591796875
            ],
            [
              485.89453125,
              87.591796875
            ],
            [
              485.89453125,
              700.8349533081055
            ],
            [
              86.39998626708984,
              700.8349533081055
            ]
          ],
          "bbox": [
            86.39998626708984,
            87.591796875,
            485.89453125,
            700.8349533081055
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/20/Page/451",
      "block_type": "Page",
      "html": "<content-ref src='/page/20/PageHeader/0'></content-ref><content-ref src='/page/20/PageHeader/2'></content-ref><content-ref src='/page/20/TableOfContents/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/20/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.60000610351562,
              60.37646484375
            ],
            [
              525.6001586914062,
              60.37646484375
            ],
            [
              525.6001586914062,
              71.13372802734375
            ],
            [
              129.60000610351562,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.60000610351562,
            60.37646484375,
            525.6001586914062,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/20/PageHeader/2",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.697265625,
              61.7783203125
            ],
            [
              525.041015625,
              61.7783203125
            ],
            [
              525.041015625,
              71.54296875
            ],
            [
              510.697265625,
              71.54296875
            ]
          ],
          "bbox": [
            510.697265625,
            61.7783203125,
            525.041015625,
            71.54296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/20/TableOfContents/1",
          "block_type": "TableOfContents",
          "html": "<p></p>",
          "polygon": [
            [
              129.60000610351562,
              85.658203125
            ],
            [
              525.9375,
              85.658203125
            ],
            [
              525.9375,
              655.875
            ],
            [
              129.60000610351562,
              655.875
            ]
          ],
          "bbox": [
            129.60000610351562,
            85.658203125,
            525.9375,
            655.875
          ],
          "children": [],
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/21/Page/5",
      "block_type": "Page",
      "html": "<content-ref src='/page/21/PageHeader/0'></content-ref><content-ref src='/page/21/PageHeader/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/21/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.4248046875
            ],
            [
              482.4002685546875,
              60.4248046875
            ],
            [
              482.4002685546875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.4248046875,
            482.4002685546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/21/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.56982421875
            ],
            [
              102.57275390625,
              60.56982421875
            ],
            [
              102.57275390625,
              70.91455078125
            ],
            [
              85.53955078125,
              70.91455078125
            ]
          ],
          "bbox": [
            85.53955078125,
            60.56982421875,
            102.57275390625,
            70.91455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/12/SectionHeader/0"
      },
      "images": null
    },
    {
      "id": "/page/22/Page/97",
      "block_type": "Page",
      "html": "<content-ref src='/page/22/SectionHeader/0'></content-ref><content-ref src='/page/22/SectionHeader/1'></content-ref><content-ref src='/page/22/Text/2'></content-ref><content-ref src='/page/22/Text/3'></content-ref><content-ref src='/page/22/Text/4'></content-ref><content-ref src='/page/22/SectionHeader/5'></content-ref><content-ref src='/page/22/Text/6'></content-ref><content-ref src='/page/22/Text/7'></content-ref><content-ref src='/page/22/Text/8'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/22/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-22-0\"></span><b>Chapter 1</b></h2>",
          "polygon": [
            [
              128.197265625,
              164.801513671875
            ],
            [
              220.84561157226562,
              164.801513671875
            ],
            [
              220.84561157226562,
              185.4639892578125
            ],
            [
              128.197265625,
              185.4639892578125
            ]
          ],
          "bbox": [
            128.197265625,
            164.801513671875,
            220.84561157226562,
            185.4639892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/12/SectionHeader/0",
            "2": "/page/22/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/22/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>The way of the program</b></h1>",
          "polygon": [
            [
              127.97314453125,
              220.236328125
            ],
            [
              400.91961669921875,
              220.236328125
            ],
            [
              400.91961669921875,
              245.6234130859375
            ],
            [
              127.97314453125,
              245.6234130859375
            ]
          ],
          "bbox": [
            127.97314453125,
            220.236328125,
            400.91961669921875,
            245.6234130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/22/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The goal of this book is to teach you to think like a computer scientist. This way of thinking combines some of the best features of mathematics, engineering, and natural science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions.</p>",
          "polygon": [
            [
              128.49609375,
              294.6796875
            ],
            [
              525.9375,
              294.6796875
            ],
            [
              525.9375,
              365.6669921875
            ],
            [
              128.49609375,
              365.6669921875
            ]
          ],
          "bbox": [
            128.49609375,
            294.6796875,
            525.9375,
            365.6669921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/22/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The single most important skill for a computer scientist is <b>problem solving</b>. Problem solving means the ability to formulate problems, think creatively about solutions, and express a solution clearly and accurately. As it turns out, the process of learning to program is an excellent opportunity to practice problem-solving skills. That's why this chapter is called, \"The way of the program.\"</p>",
          "polygon": [
            [
              129.09375,
              375.697265625
            ],
            [
              526.53515625,
              375.697265625
            ],
            [
              526.53515625,
              435.260986328125
            ],
            [
              129.09375,
              435.260986328125
            ]
          ],
          "bbox": [
            129.09375,
            375.697265625,
            526.53515625,
            435.260986328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/22/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">On one level, you will be learning to program, a useful skill by itself. On another level, you will use programming as a means to an end. As we go along, that end will become clearer.</p>",
          "polygon": [
            [
              129.2431640625,
              445.11328125
            ],
            [
              526.53515625,
              445.11328125
            ],
            [
              526.53515625,
              468.31640625
            ],
            [
              129.2431640625,
              468.31640625
            ]
          ],
          "bbox": [
            129.2431640625,
            445.11328125,
            526.53515625,
            468.31640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/22/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-22-1\"></span><b>1.1 The Python programming language</b></h3>",
          "polygon": [
            [
              128.9443359375,
              498.8671875
            ],
            [
              395.05078125,
              498.8671875
            ],
            [
              395.05078125,
              513.9990234375
            ],
            [
              128.9443359375,
              513.9990234375
            ]
          ],
          "bbox": [
            128.9443359375,
            498.8671875,
            395.05078125,
            513.9990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/22/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The programming language you will learn is Python. Python is an example of a <b>high-level</b> <b>language</b>; other high-level languages you might have heard of are C, C++, Perl, and Java.</p>",
          "polygon": [
            [
              128.794921875,
              526.32421875
            ],
            [
              526.236328125,
              526.32421875
            ],
            [
              526.236328125,
              549.52734375
            ],
            [
              128.794921875,
              549.52734375
            ]
          ],
          "bbox": [
            128.794921875,
            526.32421875,
            526.236328125,
            549.52734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/22/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are also <b>low-level languages</b>, sometimes referred to as \"machine languages\" or \"assembly languages.\" Loosely speaking, computers can only run programs written in lowlevel languages. So programs written in a high-level language have to be processed before they can run. This extra processing takes some time, which is a small disadvantage of high-level languages.</p>",
          "polygon": [
            [
              128.3466796875,
              559.96875
            ],
            [
              526.53515625,
              559.96875
            ],
            [
              526.53515625,
              619.0469818115234
            ],
            [
              128.3466796875,
              619.0469818115234
            ]
          ],
          "bbox": [
            128.3466796875,
            559.96875,
            526.53515625,
            619.0469818115234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/22/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The advantages are enormous. First, it is much easier to program in a high-level language. Programs written in a high-level language take less time to write, they are shorter and easier to read, and they are more likely to be correct. Second, high-level languages are <b>portable</b>, meaning that they can run on different kinds of computers with few or no modifications. Low-level programs can run on only one kind of computer and have to be rewritten to run on another.</p>",
          "polygon": [
            [
              128.0478515625,
              629.578125
            ],
            [
              526.53515625,
              629.578125
            ],
            [
              526.53515625,
              700.8349914550781
            ],
            [
              128.0478515625,
              700.8349914550781
            ]
          ],
          "bbox": [
            128.0478515625,
            629.578125,
            526.53515625,
            700.8349914550781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/22/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/23/Page/195",
      "block_type": "Page",
      "html": "<content-ref src='/page/23/PageHeader/0'></content-ref><content-ref src='/page/23/PageHeader/15'></content-ref><content-ref src='/page/23/Figure/1'></content-ref><content-ref src='/page/23/Text/2'></content-ref><content-ref src='/page/23/Figure/3'></content-ref><content-ref src='/page/23/Text/4'></content-ref><content-ref src='/page/23/Text/5'></content-ref><content-ref src='/page/23/Text/6'></content-ref><content-ref src='/page/23/Text/7'></content-ref><content-ref src='/page/23/Text/8'></content-ref><content-ref src='/page/23/TextInlineMath/9'></content-ref><content-ref src='/page/23/Text/10'></content-ref><content-ref src='/page/23/Text/11'></content-ref><content-ref src='/page/23/Text/12'></content-ref><content-ref src='/page/23/Text/13'></content-ref><content-ref src='/page/23/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/23/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              483.50390625,
              60.76318359375
            ],
            [
              483.50390625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            483.50390625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.8671875,
              61.14990234375
            ],
            [
              91.142578125,
              61.14990234375
            ],
            [
              91.142578125,
              70.33447265625
            ],
            [
              84.8671875,
              70.33447265625
            ]
          ],
          "bbox": [
            84.8671875,
            61.14990234375,
            91.142578125,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Figure/1",
          "block_type": "Figure",
          "html": "",
          "polygon": [
            [
              162.861328125,
              85.9482421875
            ],
            [
              402.22265625,
              85.9482421875
            ],
            [
              402.22265625,
              139.7021484375
            ],
            [
              162.861328125,
              139.7021484375
            ]
          ],
          "bbox": [
            162.861328125,
            85.9482421875,
            402.22265625,
            139.7021484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {
            "/page/23/Figure/1": "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"
          }
        },
        {
          "id": "/page/23/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure 1.1: An interpreter processes the program a little at a time, alternately reading lines and performing computations.</p>",
          "polygon": [
            [
              86.2119140625,
              155.267578125
            ],
            [
              482.40325927734375,
              155.267578125
            ],
            [
              482.40325927734375,
              177.60797119140625
            ],
            [
              86.2119140625,
              177.60797119140625
            ]
          ],
          "bbox": [
            86.2119140625,
            155.267578125,
            482.40325927734375,
            177.60797119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Figure/3",
          "block_type": "Figure",
          "html": "<span id=\"page-23-0\"></span>",
          "polygon": [
            [
              107.4287109375,
              188.912109375
            ],
            [
              460.1953125,
              188.912109375
            ],
            [
              460.1953125,
              241.119140625
            ],
            [
              107.4287109375,
              241.119140625
            ]
          ],
          "bbox": [
            107.4287109375,
            188.912109375,
            460.1953125,
            241.119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {
            "/page/23/Figure/3": "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"
          }
        },
        {
          "id": "/page/23/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-23-1\"></span>Figure 1.2: A compiler translates source code into object code, which is run by a hardware executor.</p>",
          "polygon": [
            [
              85.9130859375,
              258.134765625
            ],
            [
              482.90625,
              258.134765625
            ],
            [
              482.90625,
              280.5428771972656
            ],
            [
              85.9130859375,
              280.5428771972656
            ]
          ],
          "bbox": [
            85.9130859375,
            258.134765625,
            482.90625,
            280.5428771972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Due to these advantages, almost all programs are written in high-level languages. Lowlevel languages are used only for a few specialized applications.</p>",
          "polygon": [
            [
              85.6142578125,
              298.93359375
            ],
            [
              482.40338134765625,
              298.93359375
            ],
            [
              482.40338134765625,
              321.6348876953125
            ],
            [
              85.6142578125,
              321.6348876953125
            ]
          ],
          "bbox": [
            85.6142578125,
            298.93359375,
            482.40338134765625,
            321.6348876953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Two kinds of programs process high-level languages into low-level languages: <b>interpreters</b> and <b>compilers</b>. An interpreter reads a high-level program and executes it, meaning that it does what the program says. It processes the program a little at a time, alternately reading lines and performing computations. Figure <a href=\"#page-23-0\">1.1</a> shows the structure of an interpreter.</p>",
          "polygon": [
            [
              85.6142578125,
              330.64453125
            ],
            [
              482.90625,
              330.64453125
            ],
            [
              482.90625,
              377.82421875
            ],
            [
              85.6142578125,
              377.82421875
            ]
          ],
          "bbox": [
            85.6142578125,
            330.64453125,
            482.90625,
            377.82421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A compiler reads the program and translates it completely before the program starts running. In this context, the high-level program is called the <b>source code</b>, and the translated program is called the <b>object code</b> or the <b>executable</b>. Once a program is compiled, you can execute it repeatedly without further translation. Figure <a href=\"#page-23-1\">1.2</a> shows the structure of a compiler.</p>",
          "polygon": [
            [
              85.46484375,
              386.912109375
            ],
            [
              482.607421875,
              386.912109375
            ],
            [
              482.607421875,
              445.85791015625
            ],
            [
              85.46484375,
              445.85791015625
            ]
          ],
          "bbox": [
            85.46484375,
            386.912109375,
            482.607421875,
            445.85791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python is considered an interpreted language because Python programs are executed by an interpreter. There are two ways to use the interpreter: <b>interactive mode</b> and <b>script mode</b>. In interactive mode, you type Python programs and the interpreter displays the result:</p>",
          "polygon": [
            [
              85.3154296875,
              455.16796875
            ],
            [
              483.50390625,
              455.16796875
            ],
            [
              483.50390625,
              489.67791748046875
            ],
            [
              85.3154296875,
              489.67791748046875
            ]
          ],
          "bbox": [
            85.3154296875,
            455.16796875,
            483.50390625,
            489.67791748046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/TextInlineMath/9",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; 1 + 1</p>",
          "polygon": [
            [
              85.83837890625,
              495.0257568359375
            ],
            [
              133.4733123779297,
              495.0257568359375
            ],
            [
              133.4733123779297,
              509.30859375
            ],
            [
              85.83837890625,
              509.30859375
            ]
          ],
          "bbox": [
            85.83837890625,
            495.0257568359375,
            133.4733123779297,
            509.30859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">2</p>",
          "polygon": [
            [
              85.3154296875,
              507.2197570800781
            ],
            [
              92.0390625,
              507.2197570800781
            ],
            [
              92.0390625,
              518.9765625
            ],
            [
              85.3154296875,
              518.9765625
            ]
          ],
          "bbox": [
            85.3154296875,
            507.2197570800781,
            92.0390625,
            518.9765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The chevron, &gt;&gt;&gt;, is the <b>prompt</b> the interpreter uses to indicate that it is ready. If you type 1 + 1, the interpreter replies 2.</p>",
          "polygon": [
            [
              86.2119140625,
              522.45703125
            ],
            [
              482.3962097167969,
              522.45703125
            ],
            [
              482.3962097167969,
              544.9859008789062
            ],
            [
              86.2119140625,
              544.9859008789062
            ]
          ],
          "bbox": [
            86.2119140625,
            522.45703125,
            482.3962097167969,
            544.9859008789062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Alternatively, you can store code in a file and use the interpreter to execute the contents of the file, which is called a <b>script</b>. By convention, Python scripts have names that end with .py.</p>",
          "polygon": [
            [
              85.9130859375,
              553.78125
            ],
            [
              483.50390625,
              553.78125
            ],
            [
              483.50390625,
              589.359375
            ],
            [
              85.9130859375,
              589.359375
            ]
          ],
          "bbox": [
            85.9130859375,
            553.78125,
            483.50390625,
            589.359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To execute the script, you have to tell the interpreter the name of the file. If you have a script named dinsdale.py and you are working in a UNIX command window, you type python dinsdale.py. In other development environments, the details of executing scripts are different. You can find instructions for your environment at the Python website <a href=\"http://python.org\">http:</a> <a href=\"http://python.org\">//python.org</a>.</p>",
          "polygon": [
            [
              85.9130859375,
              597.48046875
            ],
            [
              482.90625,
              597.48046875
            ],
            [
              482.90625,
              657.0149230957031
            ],
            [
              85.9130859375,
              657.0149230957031
            ]
          ],
          "bbox": [
            85.9130859375,
            597.48046875,
            482.90625,
            657.0149230957031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/23/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Working in interactive mode is convenient for testing small pieces of code because you can type and execute them immediately. But for anything more than a few lines, you should save your code as a script so you can modify and execute it in the future.</p>",
          "polygon": [
            [
              85.763671875,
              665.54296875
            ],
            [
              482.607421875,
              665.54296875
            ],
            [
              482.607421875,
              700.8349304199219
            ],
            [
              85.763671875,
              700.8349304199219
            ]
          ],
          "bbox": [
            85.763671875,
            665.54296875,
            482.607421875,
            700.8349304199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/22/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/24/Page/160",
      "block_type": "Page",
      "html": "<content-ref src='/page/24/PageHeader/0'></content-ref><content-ref src='/page/24/PageHeader/17'></content-ref><content-ref src='/page/24/SectionHeader/1'></content-ref><content-ref src='/page/24/Text/2'></content-ref><content-ref src='/page/24/Text/3'></content-ref><content-ref src='/page/24/Text/4'></content-ref><content-ref src='/page/24/Text/5'></content-ref><content-ref src='/page/24/Text/6'></content-ref><content-ref src='/page/24/Text/7'></content-ref><content-ref src='/page/24/Text/8'></content-ref><content-ref src='/page/24/Text/9'></content-ref><content-ref src='/page/24/Text/10'></content-ref><content-ref src='/page/24/SectionHeader/11'></content-ref><content-ref src='/page/24/Text/12'></content-ref><content-ref src='/page/24/Text/13'></content-ref><content-ref src='/page/24/SectionHeader/14'></content-ref><content-ref src='/page/24/Text/15'></content-ref><content-ref src='/page/24/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/24/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.0478515625,
              61.1015625
            ],
            [
              525.6033935546875,
              61.1015625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.0478515625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.0478515625,
            61.1015625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/24/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              519.36328125,
              60.908203125
            ],
            [
              526.53515625,
              60.908203125
            ],
            [
              526.53515625,
              70.0927734375
            ],
            [
              519.36328125,
              70.0927734375
            ]
          ],
          "bbox": [
            519.36328125,
            60.908203125,
            526.53515625,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/24/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-24-0\"></span><b>1.2 What is a program?</b></h4>",
          "polygon": [
            [
              128.3466796875,
              85.95379638671875
            ],
            [
              288.8173828125,
              85.95379638671875
            ],
            [
              288.8173828125,
              100.29998779296875
            ],
            [
              128.3466796875,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.3466796875,
            85.95379638671875,
            288.8173828125,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>program</b> is a sequence of instructions that specifies how to perform a computation. The computation might be something mathematical, such as solving a system of equations or finding the roots of a polynomial, but it can also be a symbolic computation, such as searching and replacing text in a document or (strangely enough) compiling a program.</p>",
          "polygon": [
            [
              128.9443359375,
              112.53515625
            ],
            [
              526.53515625,
              112.53515625
            ],
            [
              526.53515625,
              159.87994384765625
            ],
            [
              128.9443359375,
              159.87994384765625
            ]
          ],
          "bbox": [
            128.9443359375,
            112.53515625,
            526.53515625,
            159.87994384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The details look different in different languages, but a few basic instructions appear in just about every language:</p>",
          "polygon": [
            [
              128.9443359375,
              170.0595703125
            ],
            [
              526.53515625,
              170.0595703125
            ],
            [
              526.53515625,
              192.7039794921875
            ],
            [
              128.9443359375,
              192.7039794921875
            ]
          ],
          "bbox": [
            128.9443359375,
            170.0595703125,
            526.53515625,
            192.7039794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>input:</b> Get data from the keyboard, a file, or some other device.</p>",
          "polygon": [
            [
              129.16845703125,
              207.66796875
            ],
            [
              409.693359375,
              207.66796875
            ],
            [
              409.693359375,
              217.7509765625
            ],
            [
              129.16845703125,
              217.7509765625
            ]
          ],
          "bbox": [
            129.16845703125,
            207.66796875,
            409.693359375,
            217.7509765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>output:</b> Display data on the screen or send data to a file or other device.</p>",
          "polygon": [
            [
              129.392578125,
              228.357421875
            ],
            [
              446.78948974609375,
              228.357421875
            ],
            [
              446.78948974609375,
              238.7550048828125
            ],
            [
              129.392578125,
              238.7550048828125
            ]
          ],
          "bbox": [
            129.392578125,
            228.357421875,
            446.78948974609375,
            238.7550048828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>math:</b> Perform basic mathematical operations like addition and multiplication.</p>",
          "polygon": [
            [
              128.794921875,
              249.43359375
            ],
            [
              477.8826904296875,
              249.43359375
            ],
            [
              477.8826904296875,
              259.75799560546875
            ],
            [
              128.794921875,
              259.75799560546875
            ]
          ],
          "bbox": [
            128.794921875,
            249.43359375,
            477.8826904296875,
            259.75799560546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>conditional execution:</b> Check for certain conditions and execute the appropriate code.</p>",
          "polygon": [
            [
              129.5419921875,
              270.7022705078125
            ],
            [
              510.99609375,
              270.7022705078125
            ],
            [
              510.99609375,
              280.7619934082031
            ],
            [
              129.5419921875,
              280.7619934082031
            ]
          ],
          "bbox": [
            129.5419921875,
            270.7022705078125,
            510.99609375,
            280.7619934082031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>repetition:</b> Perform some action repeatedly, usually with some variation.</p>",
          "polygon": [
            [
              128.9443359375,
              291.70526123046875
            ],
            [
              452.42578125,
              291.70526123046875
            ],
            [
              452.42578125,
              301.7649841308594
            ],
            [
              128.9443359375,
              301.7649841308594
            ]
          ],
          "bbox": [
            128.9443359375,
            291.70526123046875,
            452.42578125,
            301.7649841308594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Believe it or not, that's pretty much all there is to it. Every program you've ever used, no matter how complicated, is made up of instructions that look pretty much like these. So you can think of programming as the process of breaking a large, complex task into smaller and smaller subtasks until the subtasks are simple enough to be performed with one of these basic instructions.</p>",
          "polygon": [
            [
              128.49609375,
              316.142578125
            ],
            [
              525.9375,
              316.142578125
            ],
            [
              525.9375,
              375.5899963378906
            ],
            [
              128.49609375,
              375.5899963378906
            ]
          ],
          "bbox": [
            128.49609375,
            316.142578125,
            525.9375,
            375.5899963378906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">That may be a little vague, but we will come back to this topic when we talk about <b>algo</b><b>rithms</b>.</p>",
          "polygon": [
            [
              128.49609375,
              386.138671875
            ],
            [
              525.5997924804688,
              386.138671875
            ],
            [
              525.5997924804688,
              408.41400146484375
            ],
            [
              128.49609375,
              408.41400146484375
            ]
          ],
          "bbox": [
            128.49609375,
            386.138671875,
            525.5997924804688,
            408.41400146484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/24/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-24-1\"></span><b>1.3 What is debugging?</b></h4>",
          "polygon": [
            [
              128.0478515625,
              439.2318420410156
            ],
            [
              292.5728454589844,
              439.2318420410156
            ],
            [
              292.5728454589844,
              453.57806396484375
            ],
            [
              128.0478515625,
              453.57806396484375
            ]
          ],
          "bbox": [
            128.0478515625,
            439.2318420410156,
            292.5728454589844,
            453.57806396484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Programming is error-prone. For whimsical reasons, programming errors are called <b>bugs</b> and the process of tracking them down is called <b>debugging</b>.</p>",
          "polygon": [
            [
              128.9443359375,
              466.3828125
            ],
            [
              525.5999145507812,
              466.3828125
            ],
            [
              525.5999145507812,
              488.8125
            ],
            [
              128.9443359375,
              488.8125
            ]
          ],
          "bbox": [
            128.9443359375,
            466.3828125,
            525.5999145507812,
            488.8125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Three kinds of errors can occur in a program: syntax errors, runtime errors, and semantic errors. It is useful to distinguish between them in order to track them down more quickly.</p>",
          "polygon": [
            [
              128.9443359375,
              499.25390625
            ],
            [
              525.6033935546875,
              499.25390625
            ],
            [
              525.6033935546875,
              521.68359375
            ],
            [
              128.9443359375,
              521.68359375
            ]
          ],
          "bbox": [
            128.9443359375,
            499.25390625,
            525.6033935546875,
            521.68359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/24/SectionHeader/14",
          "block_type": "SectionHeader",
          "html": "<h4><b>1.3.1 Syntax errors</b></h4>",
          "polygon": [
            [
              129.01904296875,
              548.9158477783203
            ],
            [
              237.53152465820312,
              548.9158477783203
            ],
            [
              237.53152465820312,
              560.8710479736328
            ],
            [
              129.01904296875,
              560.8710479736328
            ]
          ],
          "bbox": [
            129.01904296875,
            548.9158477783203,
            237.53152465820312,
            560.8710479736328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python can only execute a program if the syntax is correct; otherwise, the interpreter displays an error message. <b>Syntax</b> refers to the structure of a program and the rules about that structure. For example, parentheses have to come in matching pairs, so (1 + 2) is legal, but 8) is a <b>syntax error</b>.</p>",
          "polygon": [
            [
              129.392578125,
              572.34375
            ],
            [
              525.638671875,
              572.34375
            ],
            [
              525.638671875,
              619.2339935302734
            ],
            [
              129.392578125,
              619.2339935302734
            ]
          ],
          "bbox": [
            129.392578125,
            572.34375,
            525.638671875,
            619.2339935302734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/24/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In English, readers can tolerate most syntax errors, which is why we can read the poetry of e. e. cummings without spewing error messages. Python is not so forgiving. If there is a single syntax error anywhere in your program, Python will display an error message and quit, and you will not be able to run your program. During the first few weeks of your programming career, you will probably spend a lot of time tracking down syntax errors. As you gain experience, you will make fewer errors and find them faster.</p>",
          "polygon": [
            [
              128.9443359375,
              629.578125
            ],
            [
              525.9375,
              629.578125
            ],
            [
              525.9375,
              700.8350067138672
            ],
            [
              128.9443359375,
              700.8350067138672
            ]
          ],
          "bbox": [
            128.9443359375,
            629.578125,
            525.9375,
            700.8350067138672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/14"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/22/SectionHeader/5",
        "4": "/page/24/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/25/Page/144",
      "block_type": "Page",
      "html": "<content-ref src='/page/25/PageHeader/0'></content-ref><content-ref src='/page/25/PageHeader/14'></content-ref><content-ref src='/page/25/SectionHeader/1'></content-ref><content-ref src='/page/25/Text/2'></content-ref><content-ref src='/page/25/Text/3'></content-ref><content-ref src='/page/25/SectionHeader/4'></content-ref><content-ref src='/page/25/Text/5'></content-ref><content-ref src='/page/25/Text/6'></content-ref><content-ref src='/page/25/SectionHeader/7'></content-ref><content-ref src='/page/25/Text/8'></content-ref><content-ref src='/page/25/Text/9'></content-ref><content-ref src='/page/25/Text/10'></content-ref><content-ref src='/page/25/Text/11'></content-ref><content-ref src='/page/25/Text/12'></content-ref><content-ref src='/page/25/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/25/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.69970703125
            ],
            [
              483.205078125,
              59.69970703125
            ],
            [
              483.205078125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.69970703125,
            483.205078125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/25/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              59.8447265625
            ],
            [
              93.0849609375,
              59.8447265625
            ],
            [
              93.0849609375,
              69.99609375
            ],
            [
              85.3154296875,
              69.99609375
            ]
          ],
          "bbox": [
            85.3154296875,
            59.8447265625,
            93.0849609375,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/24/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/25/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><b>1.3.2 Runtime errors</b></h4>",
          "polygon": [
            [
              85.6142578125,
              86.3349609375
            ],
            [
              207.5361328125,
              86.3349609375
            ],
            [
              207.5361328125,
              99.24493408203125
            ],
            [
              85.6142578125,
              99.24493408203125
            ]
          ],
          "bbox": [
            85.6142578125,
            86.3349609375,
            207.5361328125,
            99.24493408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second type of error is a runtime error, so called because the error does not appear until after the program has started running. These errors are also called <b>exceptions</b> because they usually indicate that something exceptional (and bad) has happened.</p>",
          "polygon": [
            [
              85.9130859375,
              109.7314453125
            ],
            [
              484.1015625,
              109.7314453125
            ],
            [
              484.1015625,
              146.09991455078125
            ],
            [
              85.9130859375,
              146.09991455078125
            ]
          ],
          "bbox": [
            85.9130859375,
            109.7314453125,
            484.1015625,
            146.09991455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Runtime errors are rare in the simple programs you will see in the first few chapters, so it might be a while before you encounter one.</p>",
          "polygon": [
            [
              86.0625,
              155.4609375
            ],
            [
              483.50390625,
              155.4609375
            ],
            [
              483.50390625,
              179.41387939453125
            ],
            [
              86.0625,
              179.41387939453125
            ]
          ],
          "bbox": [
            86.0625,
            155.4609375,
            483.50390625,
            179.41387939453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/25/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><b>1.3.3 Semantic errors</b></h4>",
          "polygon": [
            [
              85.9130859375,
              206.12109375
            ],
            [
              208.1337890625,
              206.12109375
            ],
            [
              208.1337890625,
              220.16192626953125
            ],
            [
              85.9130859375,
              220.16192626953125
            ]
          ],
          "bbox": [
            85.9130859375,
            206.12109375,
            208.1337890625,
            220.16192626953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The third type of error is the <b>semantic error</b>. If there is a semantic error in your program, it will run successfully in the sense that the computer will not generate any error messages, but it will not do the right thing. It will do something else. Specifically, it will do what you told it to do.</p>",
          "polygon": [
            [
              85.9130859375,
              231.064453125
            ],
            [
              484.69921875,
              231.064453125
            ],
            [
              484.69921875,
              279.21197509765625
            ],
            [
              85.9130859375,
              279.21197509765625
            ]
          ],
          "bbox": [
            85.9130859375,
            231.064453125,
            484.69921875,
            279.21197509765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The problem is that the program you wrote is not the program you wanted to write. The meaning of the program (its semantics) is wrong. Identifying semantic errors can be tricky because it requires you to work backward by looking at the output of the program and trying to figure out what it is doing.</p>",
          "polygon": [
            [
              85.9130859375,
              288.685546875
            ],
            [
              484.1015625,
              288.685546875
            ],
            [
              484.1015625,
              336.9139404296875
            ],
            [
              85.9130859375,
              336.9139404296875
            ]
          ],
          "bbox": [
            85.9130859375,
            288.685546875,
            484.1015625,
            336.9139404296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/25/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><b>1.3.4 Experimental debugging</b></h4>",
          "polygon": [
            [
              85.83837890625,
              364.095703125
            ],
            [
              258.78515625,
              364.095703125
            ],
            [
              258.78515625,
              377.6620178222656
            ],
            [
              85.83837890625,
              377.6620178222656
            ]
          ],
          "bbox": [
            85.83837890625,
            364.095703125,
            258.78515625,
            377.6620178222656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the most important skills you will acquire is debugging. Although it can be frustrating, debugging is one of the most intellectually rich, challenging, and interesting parts of programming.</p>",
          "polygon": [
            [
              85.763671875,
              388.458984375
            ],
            [
              483.802734375,
              388.458984375
            ],
            [
              483.802734375,
              424.5179443359375
            ],
            [
              85.763671875,
              424.5179443359375
            ]
          ],
          "bbox": [
            85.763671875,
            388.458984375,
            483.802734375,
            424.5179443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In some ways, debugging is like detective work. You are confronted with clues, and you have to infer the processes and events that led to the results you see.</p>",
          "polygon": [
            [
              85.763671875,
              433.8984375
            ],
            [
              483.802734375,
              433.8984375
            ],
            [
              483.802734375,
              457.8319396972656
            ],
            [
              85.763671875,
              457.8319396972656
            ]
          ],
          "bbox": [
            85.763671875,
            433.8984375,
            483.802734375,
            457.8319396972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Debugging is also like an experimental science. Once you have an idea about what is going wrong, you modify your program and try again. If your hypothesis was correct, then you can predict the result of the modification, and you take a step closer to a working program. If your hypothesis was wrong, you have to come up with a new one. As Sherlock Holmes pointed out, \"When you have eliminated the impossible, whatever remains, however improbable, must be the truth.\" (A. Conan Doyle, <i>The Sign of Four</i>)</p>",
          "polygon": [
            [
              85.763671875,
              467.15625
            ],
            [
              484.1015625,
              467.15625
            ],
            [
              484.1015625,
              539.9229431152344
            ],
            [
              85.763671875,
              539.9229431152344
            ]
          ],
          "bbox": [
            85.763671875,
            467.15625,
            484.1015625,
            539.9229431152344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For some people, programming and debugging are the same thing. That is, programming is the process of gradually debugging a program until it does what you want. The idea is that you should start with a program that does <i>something</i> and make small modifications, debugging them as you go, so that you always have a working program.</p>",
          "polygon": [
            [
              85.763671875,
              549.52734375
            ],
            [
              483.802734375,
              549.52734375
            ],
            [
              483.802734375,
              597.6249542236328
            ],
            [
              85.763671875,
              597.6249542236328
            ]
          ],
          "bbox": [
            85.763671875,
            549.52734375,
            483.802734375,
            597.6249542236328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, Linux is an operating system that contains thousands of lines of code, but it started out as a simple program Linus Torvalds used to explore the Intel 80386 chip. According to Larry Greenfield, \"One of Linus's earlier projects was a program that would switch between printing AAAA and BBBB. This later evolved to Linux.\" (<i>The Linux Users'</i> <i>Guide</i> Beta Version 1).</p>",
          "polygon": [
            [
              85.763671875,
              607.1484375
            ],
            [
              484.1015625,
              607.1484375
            ],
            [
              484.1015625,
              667.52197265625
            ],
            [
              85.763671875,
              667.52197265625
            ]
          ],
          "bbox": [
            85.763671875,
            607.1484375,
            484.1015625,
            667.52197265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/25/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Later chapters will make more suggestions about debugging and other programming practices.</p>",
          "polygon": [
            [
              86.0625,
              677.14453125
            ],
            [
              483.50390625,
              677.14453125
            ],
            [
              483.50390625,
              700.8349761962891
            ],
            [
              86.0625,
              700.8349761962891
            ]
          ],
          "bbox": [
            86.0625,
            677.14453125,
            483.50390625,
            700.8349761962891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/22/SectionHeader/5",
        "4": "/page/25/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/26/Page/194",
      "block_type": "Page",
      "html": "<content-ref src='/page/26/PageHeader/0'></content-ref><content-ref src='/page/26/PageHeader/14'></content-ref><content-ref src='/page/26/SectionHeader/1'></content-ref><content-ref src='/page/26/Text/2'></content-ref><content-ref src='/page/26/Text/3'></content-ref><content-ref src='/page/26/SectionHeader/4'></content-ref><content-ref src='/page/26/Text/5'></content-ref><content-ref src='/page/26/Text/6'></content-ref><content-ref src='/page/26/Text/7'></content-ref><content-ref src='/page/26/Text/8'></content-ref><content-ref src='/page/26/Text/9'></content-ref><content-ref src='/page/26/Text/10'></content-ref><content-ref src='/page/26/Text/11'></content-ref><content-ref src='/page/26/ListGroup/193'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/26/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.0478515625,
              61.0048828125
            ],
            [
              525.6033935546875,
              61.0048828125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.0478515625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.0478515625,
            61.0048828125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/26/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              519.9609375,
              61.0048828125
            ],
            [
              526.53515625,
              61.0048828125
            ],
            [
              526.53515625,
              70.189453125
            ],
            [
              519.9609375,
              70.189453125
            ]
          ],
          "bbox": [
            519.9609375,
            61.0048828125,
            526.53515625,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/25/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/26/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-26-0\"></span><b>1.4 Formal and natural languages</b></h4>",
          "polygon": [
            [
              127.8984375,
              85.95379638671875
            ],
            [
              357.099609375,
              85.95379638671875
            ],
            [
              357.099609375,
              100.353515625
            ],
            [
              127.8984375,
              100.353515625
            ]
          ],
          "bbox": [
            127.8984375,
            85.95379638671875,
            357.099609375,
            100.353515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Natural languages</b> are the languages people speak, such as English, Spanish, and French. They were not designed by people (although people try to impose some order on them); they evolved naturally.</p>",
          "polygon": [
            [
              128.794921875,
              114.7587890625
            ],
            [
              526.236328125,
              114.7587890625
            ],
            [
              526.236328125,
              149.22991943359375
            ],
            [
              128.794921875,
              149.22991943359375
            ]
          ],
          "bbox": [
            128.794921875,
            114.7587890625,
            526.236328125,
            149.22991943359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Formal languages</b> are languages that are designed by people for specific applications. For example, the notation that mathematicians use is a formal language that is particularly good at denoting relationships among numbers and symbols. Chemists use a formal language to represent the chemical structure of molecules. And most importantly:</p>",
          "polygon": [
            [
              128.3466796875,
              160.48828125
            ],
            [
              525.6034545898438,
              160.48828125
            ],
            [
              525.6034545898438,
              207.54486083984375
            ],
            [
              128.3466796875,
              207.54486083984375
            ]
          ],
          "bbox": [
            128.3466796875,
            160.48828125,
            525.6034545898438,
            207.54486083984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/26/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><b>Programming languages are formal languages that have been designed to</b> <b>express computations.</b></h4>",
          "polygon": [
            [
              153.59765625,
              224.296875
            ],
            [
              500.8359375,
              224.296875
            ],
            [
              500.8359375,
              246.73370361328125
            ],
            [
              153.59765625,
              246.73370361328125
            ]
          ],
          "bbox": [
            153.59765625,
            224.296875,
            500.8359375,
            246.73370361328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Formal languages tend to have strict rules about syntax. For example, 3 + 3 = 6 is a syntactically correct mathematical statement, but 3+ = 3$6 is not. <i>H</i>2<i>O</i> is a syntactically correct chemical formula, but 2<i>Zz</i> is not.</p>",
          "polygon": [
            [
              128.49609375,
              262.99078369140625
            ],
            [
              526.53515625,
              262.99078369140625
            ],
            [
              526.53515625,
              299.3785400390625
            ],
            [
              128.49609375,
              299.3785400390625
            ]
          ],
          "bbox": [
            128.49609375,
            262.99078369140625,
            526.53515625,
            299.3785400390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Syntax rules come in two flavors, pertaining to <b>tokens</b> and structure. Tokens are the basic elements of the language, such as words, numbers, and chemical elements. One of the problems with 3+ = 3$6 is that $ is not a legal token in mathematics (at least as far as I know). Similarly, 2<i>Zz</i> is not legal because there is no element with the abbreviation <i>Zz</i>.</p>",
          "polygon": [
            [
              128.794921875,
              309.955078125
            ],
            [
              526.833984375,
              309.955078125
            ],
            [
              526.833984375,
              357.69354248046875
            ],
            [
              128.794921875,
              357.69354248046875
            ]
          ],
          "bbox": [
            128.794921875,
            309.955078125,
            526.833984375,
            357.69354248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second type of syntax rule pertains to the structure of a statement; that is, the way the tokens are arranged. The statement 3+ = 3 is illegal because even though + and = are legal tokens, you can't have one right after the other. Similarly, in a chemical formula the subscript comes after the element name, not before.</p>",
          "polygon": [
            [
              128.794921875,
              368.349609375
            ],
            [
              526.236328125,
              368.349609375
            ],
            [
              526.236328125,
              414.94085693359375
            ],
            [
              128.794921875,
              414.94085693359375
            ]
          ],
          "bbox": [
            128.794921875,
            368.349609375,
            526.236328125,
            414.94085693359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 1.1.</b> <i>Write a well-structured English sentence with invalid tokens in it. Then write an</i><i>other sentence with all valid tokens but with invalid structure.</i></p>",
          "polygon": [
            [
              129.392578125,
              416.8828125
            ],
            [
              525.638671875,
              416.8828125
            ],
            [
              525.638671875,
              439.15716552734375
            ],
            [
              129.392578125,
              439.15716552734375
            ]
          ],
          "bbox": [
            129.392578125,
            416.8828125,
            525.638671875,
            439.15716552734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you read a sentence in English or a statement in a formal language, you have to figure out what the structure of the sentence is (although in a natural language you do this subconsciously). This process is called <b>parsing</b>.</p>",
          "polygon": [
            [
              128.9443359375,
              450.9140625
            ],
            [
              525.9375,
              450.9140625
            ],
            [
              525.9375,
              485.45086669921875
            ],
            [
              128.9443359375,
              485.45086669921875
            ]
          ],
          "bbox": [
            128.9443359375,
            450.9140625,
            525.9375,
            485.45086669921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, when you hear the sentence, \"The penny dropped,\" you understand that \"the penny\" is the subject and \"dropped\" is the predicate. Once you have parsed a sentence, you can figure out what it means, or the semantics of the sentence. Assuming that you know what a penny is and what it means to drop, you will understand the general implication of this sentence.</p>",
          "polygon": [
            [
              128.6455078125,
              496.546875
            ],
            [
              526.53515625,
              496.546875
            ],
            [
              526.53515625,
              555.9608764648438
            ],
            [
              128.6455078125,
              555.9608764648438
            ]
          ],
          "bbox": [
            128.6455078125,
            496.546875,
            526.53515625,
            555.9608764648438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although formal and natural languages have many features in common—tokens, structure, syntax, and semantics—there are some differences:</p>",
          "polygon": [
            [
              128.3466796875,
              567.31640625
            ],
            [
              525.603515625,
              567.31640625
            ],
            [
              525.603515625,
              589.8868713378906
            ],
            [
              128.3466796875,
              589.8868713378906
            ]
          ],
          "bbox": [
            128.3466796875,
            567.31640625,
            525.603515625,
            589.8868713378906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/26/ListGroup/193",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/26/ListItem/12'></content-ref><content-ref src='/page/26/ListItem/13'></content-ref></ul></p>",
          "polygon": [
            [
              129.09375,
              606.375
            ],
            [
              525.9375,
              606.375
            ],
            [
              525.9375,
              700.8348770141602
            ],
            [
              129.09375,
              700.8348770141602
            ]
          ],
          "bbox": [
            129.09375,
            606.375,
            525.9375,
            700.8348770141602
          ],
          "children": [
            {
              "id": "/page/26/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>ambiguity:</b> Natural languages are full of ambiguity, which people deal with by using contextual clues and other information. Formal languages are designed to be nearly or completely unambiguous, which means that any statement has exactly one meaning, regardless of context.</li>",
              "polygon": [
                [
                  129.09375,
                  606.375
                ],
                [
                  525.9375,
                  606.375
                ],
                [
                  525.9375,
                  653.5618743896484
                ],
                [
                  129.09375,
                  653.5618743896484
                ]
              ],
              "bbox": [
                129.09375,
                606.375,
                525.9375,
                653.5618743896484
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/22/SectionHeader/5",
                "4": "/page/26/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/26/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>redundancy:</b> In order to make up for ambiguity and reduce misunderstandings, natural languages employ lots of redundancy. As a result, they are often verbose. Formal languages are less redundant and more concise.</li>",
              "polygon": [
                [
                  129.09375,
                  665.9296875
                ],
                [
                  525.9375,
                  665.9296875
                ],
                [
                  525.9375,
                  700.8348770141602
                ],
                [
                  129.09375,
                  700.8348770141602
                ]
              ],
              "bbox": [
                129.09375,
                665.9296875,
                525.9375,
                700.8348770141602
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/22/SectionHeader/5",
                "4": "/page/26/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/22/SectionHeader/5",
        "4": "/page/26/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/27/Page/143",
      "block_type": "Page",
      "html": "<content-ref src='/page/27/PageHeader/0'></content-ref><content-ref src='/page/27/PageHeader/17'></content-ref><content-ref src='/page/27/ListItem/1'></content-ref><content-ref src='/page/27/Text/2'></content-ref><content-ref src='/page/27/ListGroup/142'></content-ref><content-ref src='/page/27/Text/6'></content-ref><content-ref src='/page/27/SectionHeader/7'></content-ref><content-ref src='/page/27/Text/8'></content-ref><content-ref src='/page/27/Code/141'></content-ref><content-ref src='/page/27/Text/10'></content-ref><content-ref src='/page/27/Text/11'></content-ref><content-ref src='/page/27/Text/12'></content-ref><content-ref src='/page/27/Text/13'></content-ref><content-ref src='/page/27/Code/14'></content-ref><content-ref src='/page/27/Text/15'></content-ref><content-ref src='/page/27/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/27/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.4248046875
            ],
            [
              482.607421875,
              60.4248046875
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.4248046875,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/27/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              61.34326171875
            ],
            [
              92.56201171875,
              61.34326171875
            ],
            [
              92.56201171875,
              70.33447265625
            ],
            [
              85.68896484375,
              70.33447265625
            ]
          ],
          "bbox": [
            85.68896484375,
            61.34326171875,
            92.56201171875,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/27/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>literalness:</b> Natural languages are full of idiom and metaphor. If I say, \"The penny dropped,\" there is probably no penny and nothing dropping (this idiom means that someone realized something after a period of confusion). Formal languages mean exactly what they say.</li>",
          "polygon": [
            [
              85.3154296875,
              88.22021484375
            ],
            [
              483.50390625,
              88.22021484375
            ],
            [
              483.50390625,
              135.38092041015625
            ],
            [
              85.3154296875,
              135.38092041015625
            ]
          ],
          "bbox": [
            85.3154296875,
            88.22021484375,
            483.50390625,
            135.38092041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">People who grow up speaking a natural language—everyone—often have a hard time adjusting to formal languages. In some ways, the difference between formal and natural language is like the difference between poetry and prose, but more so:</p>",
          "polygon": [
            [
              85.763671875,
              152.4638671875
            ],
            [
              482.607421875,
              152.4638671875
            ],
            [
              482.607421875,
              187.55987548828125
            ],
            [
              85.763671875,
              187.55987548828125
            ]
          ],
          "bbox": [
            85.763671875,
            152.4638671875,
            482.607421875,
            187.55987548828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/27/ListGroup/142",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/27/ListItem/3'></content-ref><content-ref src='/page/27/ListItem/4'></content-ref><content-ref src='/page/27/ListItem/5'></content-ref></ul></p>",
          "polygon": [
            [
              85.9130859375,
              204.57421875
            ],
            [
              482.90625,
              204.57421875
            ],
            [
              482.90625,
              311.184814453125
            ],
            [
              85.9130859375,
              311.184814453125
            ]
          ],
          "bbox": [
            85.9130859375,
            204.57421875,
            482.90625,
            311.184814453125
          ],
          "children": [
            {
              "id": "/page/27/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>Poetry:</b> Words are used for their sounds as well as for their meaning, and the whole poem together creates an effect or emotional response. Ambiguity is not only common but often deliberate.</li>",
              "polygon": [
                [
                  85.9130859375,
                  204.57421875
                ],
                [
                  482.4037780761719,
                  204.57421875
                ],
                [
                  482.4037780761719,
                  239.73883056640625
                ],
                [
                  85.9130859375,
                  239.73883056640625
                ]
              ],
              "bbox": [
                85.9130859375,
                204.57421875,
                482.4037780761719,
                239.73883056640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/22/SectionHeader/5",
                "4": "/page/26/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/27/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>Prose:</b> The literal meaning of words is more important, and the structure contributes more meaning. Prose is more amenable to analysis than poetry but still often ambiguous.</li>",
              "polygon": [
                [
                  86.2119140625,
                  252.720703125
                ],
                [
                  482.90625,
                  252.720703125
                ],
                [
                  482.90625,
                  275.537109375
                ],
                [
                  86.2119140625,
                  275.537109375
                ]
              ],
              "bbox": [
                86.2119140625,
                252.720703125,
                482.90625,
                275.537109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/22/SectionHeader/5",
                "4": "/page/26/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/27/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>Programs:</b> The meaning of a computer program is unambiguous and literal, and can be understood entirely by analysis of the tokens and structure.</li>",
              "polygon": [
                [
                  86.0625,
                  288.685546875
                ],
                [
                  482.90625,
                  288.685546875
                ],
                [
                  482.90625,
                  311.184814453125
                ],
                [
                  86.0625,
                  311.184814453125
                ]
              ],
              "bbox": [
                86.0625,
                288.685546875,
                482.90625,
                311.184814453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/22/SectionHeader/5",
                "4": "/page/26/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/27/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here are some suggestions for reading programs (and other formal languages). First, remember that formal languages are much more dense than natural languages, so it takes longer to read them. Also, the structure is very important, so it is usually not a good idea to read from top to bottom, left to right. Instead, learn to parse the program in your head, identifying the tokens and interpreting the structure. Finally, the details matter. Small errors in spelling and punctuation, which you can get away with in natural languages, can make a big difference in a formal language.</p>",
          "polygon": [
            [
              86.2119140625,
              328.517578125
            ],
            [
              482.90625,
              328.517578125
            ],
            [
              482.90625,
              412.2421875
            ],
            [
              86.2119140625,
              412.2421875
            ]
          ],
          "bbox": [
            86.2119140625,
            328.517578125,
            482.90625,
            412.2421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/26/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/27/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-27-0\"></span><b>1.5 The first program</b></h4>",
          "polygon": [
            [
              85.9130859375,
              447.3996887207031
            ],
            [
              232.6595001220703,
              447.3996887207031
            ],
            [
              232.6595001220703,
              461.74591064453125
            ],
            [
              85.9130859375,
              461.74591064453125
            ]
          ],
          "bbox": [
            85.9130859375,
            447.3996887207031,
            232.6595001220703,
            461.74591064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Traditionally, the first program you write in a new language is called \"Hello, World!\" because all it does is display the words \"Hello, World!\". In Python, it looks like this:</p>",
          "polygon": [
            [
              85.9130859375,
              476.05078125
            ],
            [
              482.4033508300781,
              476.05078125
            ],
            [
              482.4033508300781,
              499.0098571777344
            ],
            [
              85.9130859375,
              499.0098571777344
            ]
          ],
          "bbox": [
            85.9130859375,
            476.05078125,
            482.4033508300781,
            499.0098571777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Code/141",
          "block_type": "Code",
          "html": "<pre>print 'Hello, World!'</pre>",
          "polygon": [
            [
              85.39013671875,
              507.03570556640625
            ],
            [
              196.2123565673828,
              507.03570556640625
            ],
            [
              196.2123565673828,
              517.04296875
            ],
            [
              85.39013671875,
              517.04296875
            ]
          ],
          "bbox": [
            85.39013671875,
            507.03570556640625,
            196.2123565673828,
            517.04296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This is an example of a <b>print statement</b>, which doesn't actually print anything on paper. It displays a value on the screen. In this case, the result is the words</p>",
          "polygon": [
            [
              85.763671875,
              525.1640625
            ],
            [
              483.205078125,
              525.1640625
            ],
            [
              483.205078125,
              547.4798583984375
            ],
            [
              85.763671875,
              547.4798583984375
            ]
          ],
          "bbox": [
            85.763671875,
            525.1640625,
            483.205078125,
            547.4798583984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Hello, World!</p>",
          "polygon": [
            [
              85.46484375,
              555.5067138671875
            ],
            [
              154.39474487304688,
              555.5067138671875
            ],
            [
              154.39474487304688,
              565.4693145751953
            ],
            [
              85.46484375,
              565.4693145751953
            ]
          ],
          "bbox": [
            85.46484375,
            555.5067138671875,
            154.39474487304688,
            565.4693145751953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The quotation marks in the program mark the beginning and end of the text to be displayed; they don't appear in the result.</p>",
          "polygon": [
            [
              85.6142578125,
              573.50390625
            ],
            [
              482.4033508300781,
              573.50390625
            ],
            [
              482.4033508300781,
              595.9508666992188
            ],
            [
              85.6142578125,
              595.9508666992188
            ]
          ],
          "bbox": [
            85.6142578125,
            573.50390625,
            482.4033508300781,
            595.9508666992188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Python 3, the syntax for printing is slightly different:</p>",
          "polygon": [
            [
              85.763671875,
              606.76171875
            ],
            [
              329.30859375,
              606.76171875
            ],
            [
              329.30859375,
              618.0608673095703
            ],
            [
              85.763671875,
              618.0608673095703
            ]
          ],
          "bbox": [
            85.763671875,
            606.76171875,
            329.30859375,
            618.0608673095703
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Code/14",
          "block_type": "Code",
          "html": "<pre>print('Hello, World!')</pre>",
          "polygon": [
            [
              85.46484375,
              626.0867156982422
            ],
            [
              201.4413604736328,
              626.0867156982422
            ],
            [
              201.4413604736328,
              636.15234375
            ],
            [
              85.46484375,
              636.15234375
            ]
          ],
          "bbox": [
            85.46484375,
            626.0867156982422,
            201.4413604736328,
            636.15234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The parentheses indicate that print is a function. We'll get to functions in Chapter <a href=\"#page-40-0\">3.</a></p>",
          "polygon": [
            [
              85.763671875,
              644.2247161865234
            ],
            [
              458.6750183105469,
              644.2247161865234
            ],
            [
              458.6750183105469,
              654.3368682861328
            ],
            [
              85.763671875,
              654.3368682861328
            ]
          ],
          "bbox": [
            85.763671875,
            644.2247161865234,
            458.6750183105469,
            654.3368682861328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/27/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For the rest of this book, I'll use the print statement. If you are using Python 3, you will have to translate. But other than that, there are very few differences we have to worry about.</p>",
          "polygon": [
            [
              85.166015625,
              666.31640625
            ],
            [
              482.607421875,
              666.31640625
            ],
            [
              482.607421875,
              700.8348770141602
            ],
            [
              85.166015625,
              700.8348770141602
            ]
          ],
          "bbox": [
            85.166015625,
            666.31640625,
            482.607421875,
            700.8348770141602
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/22/SectionHeader/5",
        "4": "/page/27/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/28/Page/147",
      "block_type": "Page",
      "html": "<content-ref src='/page/28/PageHeader/0'></content-ref><content-ref src='/page/28/PageHeader/17'></content-ref><content-ref src='/page/28/SectionHeader/1'></content-ref><content-ref src='/page/28/Text/2'></content-ref><content-ref src='/page/28/Text/3'></content-ref><content-ref src='/page/28/Text/4'></content-ref><content-ref src='/page/28/Text/5'></content-ref><content-ref src='/page/28/Text/6'></content-ref><content-ref src='/page/28/Text/7'></content-ref><content-ref src='/page/28/Text/8'></content-ref><content-ref src='/page/28/Text/9'></content-ref><content-ref src='/page/28/SectionHeader/10'></content-ref><content-ref src='/page/28/Text/11'></content-ref><content-ref src='/page/28/ListGroup/145'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/28/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.72021484375,
              60.95654296875
            ],
            [
              525.6033935546875,
              60.95654296875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.72021484375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.72021484375,
            60.95654296875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/28/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              519.662109375,
              60.908203125
            ],
            [
              526.236328125,
              60.908203125
            ],
            [
              526.236328125,
              70.76953125
            ],
            [
              519.662109375,
              70.76953125
            ]
          ],
          "bbox": [
            519.662109375,
            60.908203125,
            526.236328125,
            70.76953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/22/SectionHeader/5",
            "4": "/page/27/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/28/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-28-0\"></span><b>1.6 Debugging</b></h3>",
          "polygon": [
            [
              128.42138671875,
              85.95379638671875
            ],
            [
              236.00576782226562,
              85.95379638671875
            ],
            [
              236.00576782226562,
              101.2236328125
            ],
            [
              128.42138671875,
              101.2236328125
            ]
          ],
          "bbox": [
            128.42138671875,
            85.95379638671875,
            236.00576782226562,
            101.2236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is a good idea to read this book in front of a computer so you can try out the examples as you go. You can run most of the examples in interactive mode, but if you put the code in a script, it is easier to try out variations.</p>",
          "polygon": [
            [
              128.3466796875,
              111.76171875
            ],
            [
              525.9375,
              111.76171875
            ],
            [
              525.9375,
              147.36090087890625
            ],
            [
              128.3466796875,
              147.36090087890625
            ]
          ],
          "bbox": [
            128.3466796875,
            111.76171875,
            525.9375,
            147.36090087890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Whenever you are experimenting with a new feature, you should try to make mistakes. For example, in the \"Hello, world!\" program, what happens if you leave out one of the quotation marks? What if you leave out both? What if you spell print wrong?</p>",
          "polygon": [
            [
              128.3466796875,
              156.3310546875
            ],
            [
              526.53515625,
              156.3310546875
            ],
            [
              526.53515625,
              192.14691162109375
            ],
            [
              128.3466796875,
              192.14691162109375
            ]
          ],
          "bbox": [
            128.3466796875,
            156.3310546875,
            526.53515625,
            192.14691162109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This kind of experiment helps you remember what you read; it also helps with debugging, because you get to know what the error messages mean. It is better to make mistakes now and on purpose than later and accidentally.</p>",
          "polygon": [
            [
              128.49609375,
              201.48046875
            ],
            [
              526.53515625,
              201.48046875
            ],
            [
              526.53515625,
              236.93292236328125
            ],
            [
              128.49609375,
              236.93292236328125
            ]
          ],
          "bbox": [
            128.49609375,
            201.48046875,
            526.53515625,
            236.93292236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Programming, and especially debugging, sometimes brings out strong emotions. If you are struggling with a difficult bug, you might feel angry, despondent or embarrassed.</p>",
          "polygon": [
            [
              128.794921875,
              245.953125
            ],
            [
              526.236328125,
              245.953125
            ],
            [
              526.236328125,
              269.54296875
            ],
            [
              128.794921875,
              269.54296875
            ]
          ],
          "bbox": [
            128.794921875,
            245.953125,
            526.236328125,
            269.54296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There is evidence that people naturally respond to computers as if they were people. When they work well, we think of them as teammates, and when they are obstinate or rude, we respond to them the same way we respond to rude, obstinate people (Reeves and Nass, <i>The Media Equation: How People Treat Computers, Television, and New Media Like Real People</i> <i>and Places</i>).</p>",
          "polygon": [
            [
              128.9443359375,
              279.2109375
            ],
            [
              526.53515625,
              279.2109375
            ],
            [
              526.53515625,
              338.699951171875
            ],
            [
              128.9443359375,
              338.699951171875
            ]
          ],
          "bbox": [
            128.9443359375,
            279.2109375,
            526.53515625,
            338.699951171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Preparing for these reactions might help you deal with them. One approach is to think of the computer as an employee with certain strengths, like speed and precision, and particular weaknesses, like lack of empathy and inability to grasp the big picture.</p>",
          "polygon": [
            [
              128.6455078125,
              348.046875
            ],
            [
              526.53515625,
              348.046875
            ],
            [
              526.53515625,
              383.4859619140625
            ],
            [
              128.6455078125,
              383.4859619140625
            ]
          ],
          "bbox": [
            128.6455078125,
            348.046875,
            526.53515625,
            383.4859619140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Your job is to be a good manager: find ways to take advantage of the strengths and mitigate the weaknesses. And find ways to use your emotions to engage with the problem, without letting your reactions interfere with your ability to work effectively.</p>",
          "polygon": [
            [
              129.392578125,
              392.90625
            ],
            [
              526.236328125,
              392.90625
            ],
            [
              526.236328125,
              428.27197265625
            ],
            [
              129.392578125,
              428.27197265625
            ]
          ],
          "bbox": [
            129.392578125,
            392.90625,
            526.236328125,
            428.27197265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Learning to debug can be frustrating, but it is a valuable skill that is useful for many activities beyond programming. At the end of each chapter there is a debugging section, like this one, with my thoughts about debugging. I hope they help!</p>",
          "polygon": [
            [
              129.09375,
              437.37890625
            ],
            [
              526.53515625,
              437.37890625
            ],
            [
              526.53515625,
              473.0579833984375
            ],
            [
              129.09375,
              473.0579833984375
            ]
          ],
          "bbox": [
            129.09375,
            437.37890625,
            526.53515625,
            473.0579833984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/28/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-28-1\"></span><b>1.7 Glossary</b></h4>",
          "polygon": [
            [
              128.0478515625,
              503.12109375
            ],
            [
              220.0527801513672,
              503.12109375
            ],
            [
              220.0527801513672,
              517.5260620117188
            ],
            [
              128.0478515625,
              517.5260620117188
            ]
          ],
          "bbox": [
            128.0478515625,
            503.12109375,
            220.0527801513672,
            517.5260620117188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/28/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>problem solving:</b> The process of formulating a problem, finding a solution, and expressing the solution.</p>",
          "polygon": [
            [
              128.794921875,
              525.9375
            ],
            [
              525.638671875,
              525.9375
            ],
            [
              525.638671875,
              549.0180053710938
            ],
            [
              128.794921875,
              549.0180053710938
            ]
          ],
          "bbox": [
            128.794921875,
            525.9375,
            525.638671875,
            549.0180053710938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/28/ListGroup/145",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/28/ListItem/12'></content-ref><content-ref src='/page/28/ListItem/13'></content-ref><content-ref src='/page/28/ListItem/14'></content-ref><content-ref src='/page/28/ListItem/15'></content-ref><content-ref src='/page/28/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              128.6455078125,
              558.421875
            ],
            [
              526.53515625,
              558.421875
            ],
            [
              526.53515625,
              700.8350296020508
            ],
            [
              128.6455078125,
              700.8350296020508
            ]
          ],
          "bbox": [
            128.6455078125,
            558.421875,
            526.53515625,
            700.8350296020508
          ],
          "children": [
            {
              "id": "/page/28/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>high-level language:</b> A programming language like Python that is designed to be easy for humans to read and write.</li>",
              "polygon": [
                [
                  128.9443359375,
                  558.421875
                ],
                [
                  525.9375,
                  558.421875
                ],
                [
                  525.9375,
                  581.8200073242188
                ],
                [
                  128.9443359375,
                  581.8200073242188
                ]
              ],
              "bbox": [
                128.9443359375,
                558.421875,
                525.9375,
                581.8200073242188
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/28/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>low-level language:</b> A programming language that is designed to be easy for a computer to execute; also called \"machine language\" or \"assembly language.\"</li>",
              "polygon": [
                [
                  128.9443359375,
                  590.90625
                ],
                [
                  525.9375,
                  590.90625
                ],
                [
                  525.9375,
                  614.6230163574219
                ],
                [
                  128.9443359375,
                  614.6230163574219
                ]
              ],
              "bbox": [
                128.9443359375,
                590.90625,
                525.9375,
                614.6230163574219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/28/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>portability:</b> A property of a program that can run on more than one kind of computer.</li>",
              "polygon": [
                [
                  128.9443359375,
                  623.77734375
                ],
                [
                  510.6493225097656,
                  623.77734375
                ],
                [
                  510.6493225097656,
                  635.2310180664062
                ],
                [
                  128.9443359375,
                  635.2310180664062
                ]
              ],
              "bbox": [
                128.9443359375,
                623.77734375,
                510.6493225097656,
                635.2310180664062
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/28/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>interpret:</b> To execute a program in a high-level language by translating it one line at a time.</li>",
              "polygon": [
                [
                  128.6455078125,
                  645.7793121337891
                ],
                [
                  525.9375,
                  645.7793121337891
                ],
                [
                  525.9375,
                  655.875
                ],
                [
                  128.6455078125,
                  655.875
                ]
              ],
              "bbox": [
                128.6455078125,
                645.7793121337891,
                525.9375,
                655.875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/28/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>compile:</b> To translate a program written in a high-level language into a low-level language all at once, in preparation for later execution.</li>",
              "polygon": [
                [
                  129.2431640625,
                  677.53125
                ],
                [
                  526.53515625,
                  677.53125
                ],
                [
                  526.53515625,
                  700.8350296020508
                ],
                [
                  129.2431640625,
                  700.8350296020508
                ]
              ],
              "bbox": [
                129.2431640625,
                677.53125,
                526.53515625,
                700.8350296020508
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/28/SectionHeader/1",
        "4": "/page/28/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/29/Page/158",
      "block_type": "Page",
      "html": "<content-ref src='/page/29/PageHeader/0'></content-ref><content-ref src='/page/29/PageHeader/22'></content-ref><content-ref src='/page/29/Text/1'></content-ref><content-ref src='/page/29/Text/156'></content-ref><content-ref src='/page/29/ListGroup/157'></content-ref><content-ref src='/page/29/Text/10'></content-ref><content-ref src='/page/29/ListGroup/158'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/29/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.171142578125
            ],
            [
              482.90625,
              61.171142578125
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.171142578125,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/29/PageHeader/22",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.83837890625,
              61.875
            ],
            [
              91.96435546875,
              61.875
            ],
            [
              91.96435546875,
              70.2861328125
            ],
            [
              85.83837890625,
              70.2861328125
            ]
          ],
          "bbox": [
            85.83837890625,
            61.875,
            91.96435546875,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/29/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>source code:</b> A program in a high-level language before being compiled.</p>",
          "polygon": [
            [
              85.763671875,
              88.7381591796875
            ],
            [
              407.2349548339844,
              88.7381591796875
            ],
            [
              407.2349548339844,
              98.79791259765625
            ],
            [
              85.763671875,
              98.79791259765625
            ]
          ],
          "bbox": [
            85.763671875,
            88.7381591796875,
            407.2349548339844,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/29/Text/156",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>object code:</b> The output of the compiler after it translates the program.</p>",
          "polygon": [
            [
              86.0625,
              112.341796875
            ],
            [
              399.27557373046875,
              112.341796875
            ],
            [
              399.27557373046875,
              122.79193115234375
            ],
            [
              86.0625,
              122.79193115234375
            ]
          ],
          "bbox": [
            86.0625,
            112.341796875,
            399.27557373046875,
            122.79193115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/29/ListGroup/157",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/29/ListItem/3'></content-ref><content-ref src='/page/29/ListItem/4'></content-ref><content-ref src='/page/29/ListItem/5'></content-ref><content-ref src='/page/29/ListItem/6'></content-ref><content-ref src='/page/29/ListItem/7'></content-ref><content-ref src='/page/29/ListItem/8'></content-ref><content-ref src='/page/29/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              85.3154296875,
              136.51171875
            ],
            [
              482.607421875,
              136.51171875
            ],
            [
              482.607421875,
              327.3329772949219
            ],
            [
              85.3154296875,
              327.3329772949219
            ]
          ],
          "bbox": [
            85.3154296875,
            136.51171875,
            482.607421875,
            327.3329772949219
          ],
          "children": [
            {
              "id": "/page/29/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>executable:</b> Another name for object code that is ready to be executed.</li>",
              "polygon": [
                [
                  85.6142578125,
                  136.51171875
                ],
                [
                  398.0390625,
                  136.51171875
                ],
                [
                  398.0390625,
                  146.78594970703125
                ],
                [
                  85.6142578125,
                  146.78594970703125
                ]
              ],
              "bbox": [
                85.6142578125,
                136.51171875,
                398.0390625,
                146.78594970703125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>prompt:</b> Characters displayed by the interpreter to indicate that it is ready to take input from the user.</li>",
              "polygon": [
                [
                  85.3154296875,
                  160.48828125
                ],
                [
                  482.40313720703125,
                  160.48828125
                ],
                [
                  482.40313720703125,
                  182.97393798828125
                ],
                [
                  85.3154296875,
                  182.97393798828125
                ]
              ],
              "bbox": [
                85.3154296875,
                160.48828125,
                482.40313720703125,
                182.97393798828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>script:</b> A program stored in a file (usually one that will be interpreted).</li>",
              "polygon": [
                [
                  85.763671875,
                  196.83984375
                ],
                [
                  399.533203125,
                  196.83984375
                ],
                [
                  399.533203125,
                  206.96795654296875
                ],
                [
                  85.763671875,
                  206.96795654296875
                ]
              ],
              "bbox": [
                85.763671875,
                196.83984375,
                399.533203125,
                206.96795654296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>interactive mode:</b> A way of using the Python interpreter by typing commands and expressions at the prompt.</li>",
              "polygon": [
                [
                  85.3154296875,
                  220.4296875
                ],
                [
                  482.4031066894531,
                  220.4296875
                ],
                [
                  482.4031066894531,
                  243.156982421875
                ],
                [
                  85.3154296875,
                  243.156982421875
                ]
              ],
              "bbox": [
                85.3154296875,
                220.4296875,
                482.4031066894531,
                243.156982421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>script mode:</b> A way of using the Python interpreter to read and execute statements in a script.</li>",
              "polygon": [
                [
                  85.46484375,
                  256.974609375
                ],
                [
                  482.607421875,
                  256.974609375
                ],
                [
                  482.607421875,
                  279.34503173828125
                ],
                [
                  85.46484375,
                  279.34503173828125
                ]
              ],
              "bbox": [
                85.46484375,
                256.974609375,
                482.607421875,
                279.34503173828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>program:</b> A set of instructions that specifies a computation.</li>",
              "polygon": [
                [
                  85.6142578125,
                  293.2792663574219
                ],
                [
                  349.2228698730469,
                  293.2792663574219
                ],
                [
                  349.2228698730469,
                  303.3389892578125
                ],
                [
                  85.6142578125,
                  303.3389892578125
                ]
              ],
              "bbox": [
                85.6142578125,
                293.2792663574219,
                349.2228698730469,
                303.3389892578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>algorithm:</b> A general process for solving a category of problems.</li>",
              "polygon": [
                [
                  85.53955078125,
                  317.27325439453125
                ],
                [
                  372.51519775390625,
                  317.27325439453125
                ],
                [
                  372.51519775390625,
                  327.3329772949219
                ],
                [
                  85.53955078125,
                  327.3329772949219
                ]
              ],
              "bbox": [
                85.53955078125,
                317.27325439453125,
                372.51519775390625,
                327.3329772949219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": null
        },
        {
          "id": "/page/29/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>bug:</b> An error in a program.</p>",
          "polygon": [
            [
              86.0625,
              341.2672424316406
            ],
            [
              211.5397491455078,
              341.2672424316406
            ],
            [
              211.5397491455078,
              351.32696533203125
            ],
            [
              86.0625,
              351.32696533203125
            ]
          ],
          "bbox": [
            86.0625,
            341.2672424316406,
            211.5397491455078,
            351.32696533203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/29/ListGroup/158",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/29/ListItem/11'></content-ref><content-ref src='/page/29/ListItem/12'></content-ref><content-ref src='/page/29/ListItem/13'></content-ref><content-ref src='/page/29/ListItem/14'></content-ref><content-ref src='/page/29/ListItem/15'></content-ref><content-ref src='/page/29/ListItem/16'></content-ref><content-ref src='/page/29/ListItem/17'></content-ref><content-ref src='/page/29/ListItem/18'></content-ref><content-ref src='/page/29/ListItem/19'></content-ref><content-ref src='/page/29/ListItem/20'></content-ref><content-ref src='/page/29/ListItem/21'></content-ref></ul></p>",
          "polygon": [
            [
              85.166015625,
              365.26123046875
            ],
            [
              483.205078125,
              365.26123046875
            ],
            [
              483.205078125,
              700.6209335327148
            ],
            [
              85.166015625,
              700.6209335327148
            ]
          ],
          "bbox": [
            85.166015625,
            365.26123046875,
            483.205078125,
            700.6209335327148
          ],
          "children": [
            {
              "id": "/page/29/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>debugging:</b> The process of finding and removing any of the three kinds of programming errors.</li>",
              "polygon": [
                [
                  85.6142578125,
                  365.26123046875
                ],
                [
                  482.90625,
                  365.26123046875
                ],
                [
                  482.90625,
                  387.51495361328125
                ],
                [
                  85.6142578125,
                  387.51495361328125
                ]
              ],
              "bbox": [
                85.6142578125,
                365.26123046875,
                482.90625,
                387.51495361328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>syntax:</b> The structure of a program.</li>",
              "polygon": [
                [
                  85.6142578125,
                  401.4140625
                ],
                [
                  244.04832458496094,
                  401.4140625
                ],
                [
                  244.04832458496094,
                  411.5089416503906
                ],
                [
                  85.6142578125,
                  411.5089416503906
                ]
              ],
              "bbox": [
                85.6142578125,
                401.4140625,
                244.04832458496094,
                411.5089416503906
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>syntax error:</b> An error in a program that makes it impossible to parse (and therefore impossible to interpret).</li>",
              "polygon": [
                [
                  85.46484375,
                  425.4432067871094
                ],
                [
                  482.607421875,
                  425.4432067871094
                ],
                [
                  482.607421875,
                  447.69793701171875
                ],
                [
                  85.46484375,
                  447.69793701171875
                ]
              ],
              "bbox": [
                85.46484375,
                425.4432067871094,
                482.607421875,
                447.69793701171875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>exception:</b> An error that is detected while the program is running.</li>",
              "polygon": [
                [
                  85.166015625,
                  461.6322021484375
                ],
                [
                  379.44000244140625,
                  461.6322021484375
                ],
                [
                  379.44000244140625,
                  471.6919250488281
                ],
                [
                  85.166015625,
                  471.6919250488281
                ]
              ],
              "bbox": [
                85.166015625,
                461.6322021484375,
                379.44000244140625,
                471.6919250488281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>semantics:</b> The meaning of a program.</li>",
              "polygon": [
                [
                  85.68896484375,
                  485.6261901855469
                ],
                [
                  258.78515625,
                  485.6261901855469
                ],
                [
                  258.78515625,
                  495.6859130859375
                ],
                [
                  85.68896484375,
                  495.6859130859375
                ]
              ],
              "bbox": [
                85.68896484375,
                485.6261901855469,
                258.78515625,
                495.6859130859375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>semantic error:</b> An error in a program that makes it do something other than what the programmer intended.</li>",
              "polygon": [
                [
                  85.46484375,
                  509.30859375
                ],
                [
                  483.205078125,
                  509.30859375
                ],
                [
                  483.205078125,
                  531.8739013671875
                ],
                [
                  85.46484375,
                  531.8739013671875
                ]
              ],
              "bbox": [
                85.46484375,
                509.30859375,
                483.205078125,
                531.8739013671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>natural language:</b> Any one of the languages that people speak that evolved naturally.</li>",
              "polygon": [
                [
                  85.6142578125,
                  545.8081970214844
                ],
                [
                  464.6596984863281,
                  545.8081970214844
                ],
                [
                  464.6596984863281,
                  555.8679046630859
                ],
                [
                  85.6142578125,
                  555.8679046630859
                ]
              ],
              "bbox": [
                85.6142578125,
                545.8081970214844,
                464.6596984863281,
                555.8679046630859
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>formal language:</b> Any one of the languages that people have designed for specific purposes, such as representing mathematical ideas or computer programs; all programming languages are formal languages.</li>",
              "polygon": [
                [
                  85.6142578125,
                  569.63671875
                ],
                [
                  482.4039001464844,
                  569.63671875
                ],
                [
                  482.4039001464844,
                  604.2509155273438
                ],
                [
                  85.6142578125,
                  604.2509155273438
                ]
              ],
              "bbox": [
                85.6142578125,
                569.63671875,
                482.4039001464844,
                604.2509155273438
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>token:</b> One of the basic elements of the syntactic structure of a program, analogous to a word in a natural language.</li>",
              "polygon": [
                [
                  85.6142578125,
                  618.1852111816406
                ],
                [
                  482.40301513671875,
                  618.1852111816406
                ],
                [
                  482.40301513671875,
                  640.4389190673828
                ],
                [
                  85.6142578125,
                  640.4389190673828
                ]
              ],
              "bbox": [
                85.6142578125,
                618.1852111816406,
                482.40301513671875,
                640.4389190673828
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>parse:</b> To examine a program and analyze the syntactic structure.</li>",
              "polygon": [
                [
                  85.39013671875,
                  654.3732147216797
                ],
                [
                  374.80670166015625,
                  654.3732147216797
                ],
                [
                  374.80670166015625,
                  664.4329299926758
                ],
                [
                  85.39013671875,
                  664.4329299926758
                ]
              ],
              "bbox": [
                85.39013671875,
                654.3732147216797,
                374.80670166015625,
                664.4329299926758
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/29/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>print statement:</b> An instruction that causes the Python interpreter to display a value on the screen.</li>",
              "polygon": [
                [
                  85.3154296875,
                  678.3672180175781
                ],
                [
                  482.90625,
                  678.3672180175781
                ],
                [
                  482.90625,
                  700.6209335327148
                ],
                [
                  85.3154296875,
                  700.6209335327148
                ]
              ],
              "bbox": [
                85.3154296875,
                678.3672180175781,
                482.90625,
                700.6209335327148
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/22/SectionHeader/1",
                "3": "/page/28/SectionHeader/1",
                "4": "/page/28/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/28/SectionHeader/1",
        "4": "/page/28/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/30/Page/109",
      "block_type": "Page",
      "html": "<content-ref src='/page/30/PageHeader/0'></content-ref><content-ref src='/page/30/PageHeader/8'></content-ref><content-ref src='/page/30/SectionHeader/1'></content-ref><content-ref src='/page/30/Text/2'></content-ref><content-ref src='/page/30/Text/3'></content-ref><content-ref src='/page/30/Text/4'></content-ref><content-ref src='/page/30/Text/5'></content-ref><content-ref src='/page/30/Text/6'></content-ref><content-ref src='/page/30/Text/7'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/30/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.09375,
              61.171142578125
            ],
            [
              525.600341796875,
              61.171142578125
            ],
            [
              525.600341796875,
              71.13372802734375
            ],
            [
              129.09375,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.09375,
            61.171142578125,
            525.600341796875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/30/PageHeader/8",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              519.662109375,
              60.521484375
            ],
            [
              526.236328125,
              60.521484375
            ],
            [
              526.236328125,
              69.99609375
            ],
            [
              519.662109375,
              69.99609375
            ]
          ],
          "bbox": [
            519.662109375,
            60.521484375,
            526.236328125,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/28/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/30/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-30-0\"></span><b>1.8 Exercises</b></h4>",
          "polygon": [
            [
              128.49609375,
              85.63177490234375
            ],
            [
              221.63088989257812,
              85.63177490234375
            ],
            [
              221.63088989257812,
              99.97796630859375
            ],
            [
              128.49609375,
              99.97796630859375
            ]
          ],
          "bbox": [
            128.49609375,
            85.63177490234375,
            221.63088989257812,
            99.97796630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/30/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 1.2.</b> <i>Use a web browser to go to the Python website</i> <a href=\"http://python.org\">http:</a> <a href=\"http://python.org\">//</a> <a href=\"http://python.org\">python.</a> <a href=\"http://python.org\">org</a> <i>. This page</i> <i>contains information about Python and links to Python-related pages, and it gives you the ability to</i> <i>search the Python documentation.</i></p>",
          "polygon": [
            [
              128.49609375,
              112.0699462890625
            ],
            [
              525.604248046875,
              112.0699462890625
            ],
            [
              525.604248046875,
              146.50115966796875
            ],
            [
              128.49609375,
              146.50115966796875
            ]
          ],
          "bbox": [
            128.49609375,
            112.0699462890625,
            525.604248046875,
            146.50115966796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/30/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>For example, if you enter</i> print <i>in the search window, the first link that appears is the documenta</i><i>tion of the</i> print <i>statement. At this point, not all of it will make sense to you, but it is good to know</i> <i>where it is.</i></p>",
          "polygon": [
            [
              128.3466796875,
              156.427734375
            ],
            [
              525.9375,
              156.427734375
            ],
            [
              525.9375,
              191.02716064453125
            ],
            [
              128.3466796875,
              191.02716064453125
            ]
          ],
          "bbox": [
            128.3466796875,
            156.427734375,
            525.9375,
            191.02716064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/30/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 1.3.</b> <i>Start the Python interpreter and type</i> help() <i>to start the online help utility. Or you</i> <i>can type</i> help('print') <i>to get information about the</i> print <i>statement.</i></p>",
          "polygon": [
            [
              128.9443359375,
              192.97265625
            ],
            [
              525.599365234375,
              192.97265625
            ],
            [
              525.599365234375,
              215.4393310546875
            ],
            [
              128.9443359375,
              215.4393310546875
            ]
          ],
          "bbox": [
            128.9443359375,
            192.97265625,
            525.599365234375,
            215.4393310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/30/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If this example doesn't work, you may need to install additional Python documentation or set an</i> <i>environment variable; the details depend on your operating system and version of Python.</i></p>",
          "polygon": [
            [
              127.4501953125,
              225.45703125
            ],
            [
              525.9375,
              225.45703125
            ],
            [
              525.9375,
              247.88671875
            ],
            [
              127.4501953125,
              247.88671875
            ]
          ],
          "bbox": [
            127.4501953125,
            225.45703125,
            525.9375,
            247.88671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/30/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 1.4.</b> <i>Start the Python interpreter and use it as a calculator. Python's syntax for math</i> <i>operations is almost the same as standard mathematical notation. For example, the symbols</i> +<i>,</i> - <i>and</i> / <i>denote addition, subtraction and division, as you would expect. The symbol for multiplication is</i> *<i>.</i></p>",
          "polygon": [
            [
              128.49609375,
              249.9796142578125
            ],
            [
              525.9375,
              249.9796142578125
            ],
            [
              525.9375,
              296.5483093261719
            ],
            [
              128.49609375,
              296.5483093261719
            ]
          ],
          "bbox": [
            128.49609375,
            249.9796142578125,
            525.9375,
            296.5483093261719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/30/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If you run a 10 kilometer race in 43 minutes 30 seconds, what is your average time per mile? What</i> <i>is your average speed in miles per hour? (Hint: there are 1.61 kilometers in a mile).</i></p>",
          "polygon": [
            [
              128.197265625,
              306.474609375
            ],
            [
              525.638671875,
              306.474609375
            ],
            [
              525.638671875,
              328.904296875
            ],
            [
              128.197265625,
              328.904296875
            ]
          ],
          "bbox": [
            128.197265625,
            306.474609375,
            525.638671875,
            328.904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/28/SectionHeader/1",
        "4": "/page/30/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/31/Page/3",
      "block_type": "Page",
      "html": "<content-ref src='/page/31/PageHeader/1'></content-ref><content-ref src='/page/31/Text/0'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/31/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.39013671875,
              60.8115234375
            ],
            [
              95.69970703125,
              60.8115234375
            ],
            [
              95.69970703125,
              69.8994140625
            ],
            [
              85.39013671875,
              69.8994140625
            ]
          ],
          "bbox": [
            85.39013671875,
            60.8115234375,
            95.69970703125,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/31/Text/0",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>10 Chapter 1. The way of the program</b></p>",
          "polygon": [
            [
              86.4000015258789,
              60.328125
            ],
            [
              482.4034729003906,
              60.328125
            ],
            [
              482.4034729003906,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.328125,
            482.4034729003906,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "3": "/page/28/SectionHeader/1",
            "4": "/page/30/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/22/SectionHeader/1",
        "3": "/page/28/SectionHeader/1",
        "4": "/page/30/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/32/Page/156",
      "block_type": "Page",
      "html": "<content-ref src='/page/32/SectionHeader/0'></content-ref><content-ref src='/page/32/SectionHeader/1'></content-ref><content-ref src='/page/32/SectionHeader/2'></content-ref><content-ref src='/page/32/Text/3'></content-ref><content-ref src='/page/32/Text/4'></content-ref><content-ref src='/page/32/Text/5'></content-ref><content-ref src='/page/32/Code/6'></content-ref><content-ref src='/page/32/Text/7'></content-ref><content-ref src='/page/32/Code/8'></content-ref><content-ref src='/page/32/Text/9'></content-ref><content-ref src='/page/32/Code/10'></content-ref><content-ref src='/page/32/Text/11'></content-ref><content-ref src='/page/32/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/32/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-32-0\"></span><b>Chapter 2</b></h2>",
          "polygon": [
            [
              128.9443359375,
              164.935546875
            ],
            [
              220.9833984375,
              164.935546875
            ],
            [
              220.9833984375,
              185.71087646484375
            ],
            [
              128.9443359375,
              185.71087646484375
            ]
          ],
          "bbox": [
            128.9443359375,
            164.935546875,
            220.9833984375,
            185.71087646484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/22/SectionHeader/1",
            "2": "/page/32/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/32/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Variables, expressions and</b> <b>statements</b></h1>",
          "polygon": [
            [
              128.9443359375,
              219.462890625
            ],
            [
              430.3125,
              219.462890625
            ],
            [
              430.3125,
              276.60333251953125
            ],
            [
              128.9443359375,
              276.60333251953125
            ]
          ],
          "bbox": [
            128.9443359375,
            219.462890625,
            430.3125,
            276.60333251953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/32/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-32-1\"></span><b>2.1 Values and types</b></h4>",
          "polygon": [
            [
              128.794921875,
              326.390625
            ],
            [
              273.427734375,
              326.390625
            ],
            [
              273.427734375,
              340.7639465332031
            ],
            [
              128.794921875,
              340.7639465332031
            ]
          ],
          "bbox": [
            128.794921875,
            326.390625,
            273.427734375,
            340.7639465332031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>value</b> is one of the basic things a program works with, like a letter or a number. The values we have seen so far are 1, 2, and 'Hello, World!'.</p>",
          "polygon": [
            [
              129.09375,
              353.654296875
            ],
            [
              525.9375,
              353.654296875
            ],
            [
              525.9375,
              376.5628662109375
            ],
            [
              129.09375,
              376.5628662109375
            ]
          ],
          "bbox": [
            129.09375,
            353.654296875,
            525.9375,
            376.5628662109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">These values belong to different <b>types</b>: 2 is an integer, and 'Hello, World!' is a <b>string</b>, so-called because it contains a \"string\" of letters. You (and the interpreter) can identify strings because they are enclosed in quotation marks.</p>",
          "polygon": [
            [
              129.09375,
              387.10546875
            ],
            [
              525.9375,
              387.10546875
            ],
            [
              525.9375,
              422.015869140625
            ],
            [
              129.09375,
              422.015869140625
            ]
          ],
          "bbox": [
            129.09375,
            387.10546875,
            525.9375,
            422.015869140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not sure what type a value has, the interpreter can tell you.</p>",
          "polygon": [
            [
              128.49609375,
              432.73828125
            ],
            [
              432.9710693359375,
              432.73828125
            ],
            [
              432.9710693359375,
              443.0798645019531
            ],
            [
              128.49609375,
              443.0798645019531
            ]
          ],
          "bbox": [
            128.49609375,
            432.73828125,
            432.9710693359375,
            443.0798645019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; type('Hello, World!')\n&lt;type 'str'&gt;\n&gt;&gt;&gt; type(17)\n&lt;type 'int'&gt;</pre>",
          "polygon": [
            [
              129.392578125,
              449.75390625
            ],
            [
              260.3293762207031,
              449.75390625
            ],
            [
              260.3293762207031,
              499.25390625
            ],
            [
              129.392578125,
              499.25390625
            ]
          ],
          "bbox": [
            129.392578125,
            449.75390625,
            260.3293762207031,
            499.25390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Not surprisingly, strings belong to the type str and integers belong to the type int. Less obviously, numbers with a decimal point belong to a type called float, because these numbers are represented in a format called <b>floating-point</b>.</p>",
          "polygon": [
            [
              129.09375,
              503.7347412109375
            ],
            [
              525.9375,
              503.7347412109375
            ],
            [
              525.9375,
              538.2359008789062
            ],
            [
              129.09375,
              538.2359008789062
            ]
          ],
          "bbox": [
            129.09375,
            503.7347412109375,
            525.9375,
            538.2359008789062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; type(3.2)\n&lt;type 'float'&gt;</pre>",
          "polygon": [
            [
              128.42138671875,
              545.2157440185547
            ],
            [
              202.80833435058594,
              545.2157440185547
            ],
            [
              202.80833435058594,
              567.3733520507812
            ],
            [
              128.42138671875,
              567.3733520507812
            ]
          ],
          "bbox": [
            128.42138671875,
            545.2157440185547,
            202.80833435058594,
            567.3733520507812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">What about values like '17' and '3.2'? They look like numbers, but they are in quotation marks like strings.</p>",
          "polygon": [
            [
              129.2431640625,
              574.27734375
            ],
            [
              525.9375,
              574.27734375
            ],
            [
              525.9375,
              596.8088989257812
            ],
            [
              129.2431640625,
              596.8088989257812
            ]
          ],
          "bbox": [
            129.2431640625,
            574.27734375,
            525.9375,
            596.8088989257812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; type('17')\n&lt;type 'str'&gt;\n&gt;&gt;&gt; type('3.2')\n&lt;type 'str'&gt;</pre>",
          "polygon": [
            [
              128.72021484375,
              603.66796875
            ],
            [
              208.03836059570312,
              603.66796875
            ],
            [
              208.03836059570312,
              653.16796875
            ],
            [
              128.72021484375,
              653.16796875
            ]
          ],
          "bbox": [
            128.72021484375,
            603.66796875,
            208.03836059570312,
            653.16796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">They're strings.</p>",
          "polygon": [
            [
              128.9443359375,
              657.6143188476562
            ],
            [
              197.96336364746094,
              657.6143188476562
            ],
            [
              197.96336364746094,
              667.86328125
            ],
            [
              128.9443359375,
              667.86328125
            ]
          ],
          "bbox": [
            128.9443359375,
            657.6143188476562,
            197.96336364746094,
            667.86328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/32/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you type a large integer, you might be tempted to use commas between groups of three digits, as in 1,000,000. This is not a legal integer in Python, but it is legal:</p>",
          "polygon": [
            [
              128.197265625,
              678.3046875
            ],
            [
              526.236328125,
              678.3046875
            ],
            [
              526.236328125,
              700.8349227905273
            ],
            [
              128.197265625,
              700.8349227905273
            ]
          ],
          "bbox": [
            128.197265625,
            678.3046875,
            526.236328125,
            700.8349227905273
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "4": "/page/32/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/33/Page/174",
      "block_type": "Page",
      "html": "<content-ref src='/page/33/PageHeader/0'></content-ref><content-ref src='/page/33/PageHeader/16'></content-ref><content-ref src='/page/33/TextInlineMath/1'></content-ref><content-ref src='/page/33/Text/2'></content-ref><content-ref src='/page/33/TextInlineMath/3'></content-ref><content-ref src='/page/33/Text/4'></content-ref><content-ref src='/page/33/SectionHeader/5'></content-ref><content-ref src='/page/33/Text/6'></content-ref><content-ref src='/page/33/Text/7'></content-ref><content-ref src='/page/33/Code/8'></content-ref><content-ref src='/page/33/Text/9'></content-ref><content-ref src='/page/33/Text/10'></content-ref><content-ref src='/page/33/Text/11'></content-ref><content-ref src='/page/33/Code/12'></content-ref><content-ref src='/page/33/SectionHeader/13'></content-ref><content-ref src='/page/33/Text/14'></content-ref><content-ref src='/page/33/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/33/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.90625,
              60.85986328125
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/33/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              60.71484375
            ],
            [
              96.3720703125,
              60.71484375
            ],
            [
              96.3720703125,
              70.4794921875
            ],
            [
              85.3154296875,
              70.4794921875
            ]
          ],
          "bbox": [
            85.3154296875,
            60.71484375,
            96.3720703125,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/33/TextInlineMath/1",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">message n pi 17 'And now for something completely different' 3.1415926535897932</p>",
          "polygon": [
            [
              159.275390625,
              88.4619140625
            ],
            [
              403.716796875,
              88.4619140625
            ],
            [
              403.716796875,
              133.1279296875
            ],
            [
              159.275390625,
              133.1279296875
            ]
          ],
          "bbox": [
            159.275390625,
            88.4619140625,
            403.716796875,
            133.1279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-33-2\"></span>Figure 2.1: State diagram.</p>",
          "polygon": [
            [
              227.2587890625,
              148.0166015625
            ],
            [
              340.75885009765625,
              148.0166015625
            ],
            [
              340.75885009765625,
              158.7529296875
            ],
            [
              227.2587890625,
              158.7529296875
            ]
          ],
          "bbox": [
            227.2587890625,
            148.0166015625,
            340.75885009765625,
            158.7529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/33/TextInlineMath/3",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; 1,000,000 (1, 0, 0)</p>",
          "polygon": [
            [
              85.39013671875,
              179.9208984375
            ],
            [
              156.4365234375,
              179.9208984375
            ],
            [
              156.4365234375,
              206.314453125
            ],
            [
              85.39013671875,
              206.314453125
            ]
          ],
          "bbox": [
            85.39013671875,
            179.9208984375,
            156.4365234375,
            206.314453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Well, that's not what we expected at all! Python interprets 1,000,000 as a commaseparated sequence of integers. This is the first example we have seen of a semantic error: the code runs without producing an error message, but it doesn't do the \"right\" thing.</p>",
          "polygon": [
            [
              85.9130859375,
              209.21484375
            ],
            [
              482.4034118652344,
              209.21484375
            ],
            [
              482.4034118652344,
              244.24981689453125
            ],
            [
              85.9130859375,
              244.24981689453125
            ]
          ],
          "bbox": [
            85.9130859375,
            209.21484375,
            482.4034118652344,
            244.24981689453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "4": "/page/32/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/33/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-33-0\"></span><b>2.2 Variables</b></h3>",
          "polygon": [
            [
              85.9130859375,
              272.830078125
            ],
            [
              180.03765869140625,
              272.830078125
            ],
            [
              180.03765869140625,
              288.0208435058594
            ],
            [
              85.9130859375,
              288.0208435058594
            ]
          ],
          "bbox": [
            85.9130859375,
            272.830078125,
            180.03765869140625,
            288.0208435058594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the most powerful features of a programming language is the ability to manipulate <b>variables</b>. A variable is a name that refers to a value.</p>",
          "polygon": [
            [
              85.763671875,
              299.513671875
            ],
            [
              482.4032287597656,
              299.513671875
            ],
            [
              482.4032287597656,
              322.561767578125
            ],
            [
              85.763671875,
              322.561767578125
            ]
          ],
          "bbox": [
            85.763671875,
            299.513671875,
            482.4032287597656,
            322.561767578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An <b>assignment statement</b> creates new variables and gives them values:</p>",
          "polygon": [
            [
              86.2119140625,
              331.8046875
            ],
            [
              401.0780029296875,
              331.8046875
            ],
            [
              401.0780029296875,
              342.7267761230469
            ],
            [
              86.2119140625,
              342.7267761230469
            ]
          ],
          "bbox": [
            86.2119140625,
            331.8046875,
            401.0780029296875,
            342.7267761230469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; message = 'And now for something completely different'\n&gt;&gt;&gt; n = 17\n&gt;&gt;&gt; pi = 3.1415926535897932</pre>",
          "polygon": [
            [
              85.6142578125,
              348.8086242675781
            ],
            [
              389.68939208984375,
              348.8086242675781
            ],
            [
              389.68939208984375,
              383.1592102050781
            ],
            [
              85.6142578125,
              383.1592102050781
            ]
          ],
          "bbox": [
            85.6142578125,
            348.8086242675781,
            389.68939208984375,
            383.1592102050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example makes three assignments. The first assigns a string to a new variable named message; the second gives the integer 17 to n; the third assigns the (approximate) value of <i>π</i> to pi.</p>",
          "polygon": [
            [
              85.9130859375,
              388.65234375
            ],
            [
              482.90625,
              388.65234375
            ],
            [
              482.90625,
              424.701416015625
            ],
            [
              85.9130859375,
              424.701416015625
            ]
          ],
          "bbox": [
            85.9130859375,
            388.65234375,
            482.90625,
            424.701416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A common way to represent variables on paper is to write the name with an arrow pointing to the variable's value. This kind of figure is called a <b>state diagram</b> because it shows what state each of the variables is in (think of it as the variable's state of mind). Figure <a href=\"#page-33-2\">2.1</a> shows the result of the previous example.</p>",
          "polygon": [
            [
              85.46484375,
              433.125
            ],
            [
              482.40338134765625,
              433.125
            ],
            [
              482.40338134765625,
              480.6398010253906
            ],
            [
              85.46484375,
              480.6398010253906
            ]
          ],
          "bbox": [
            85.46484375,
            433.125,
            482.40338134765625,
            480.6398010253906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The type of a variable is the type of the value it refers to.</p>",
          "polygon": [
            [
              85.763671875,
              490.359375
            ],
            [
              333.80120849609375,
              490.359375
            ],
            [
              333.80120849609375,
              500.8048095703125
            ],
            [
              85.763671875,
              500.8048095703125
            ]
          ],
          "bbox": [
            85.763671875,
            490.359375,
            333.80120849609375,
            500.8048095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; type(message)\n&lt;type 'str'&gt;\n&gt;&gt;&gt; type(n)\n&lt;type 'int'&gt;\n&gt;&gt;&gt; type(pi)\n&lt;type 'float'&gt;</pre>",
          "polygon": [
            [
              85.3154296875,
              506.8856506347656
            ],
            [
              175.32618713378906,
              506.8856506347656
            ],
            [
              175.32618713378906,
              577.8202667236328
            ],
            [
              85.3154296875,
              577.8202667236328
            ]
          ],
          "bbox": [
            85.3154296875,
            506.8856506347656,
            175.32618713378906,
            577.8202667236328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/33/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-33-1\"></span><b>2.3 Variable names and keywords</b></h4>",
          "polygon": [
            [
              86.0625,
              607.3946685791016
            ],
            [
              315.92486572265625,
              607.3946685791016
            ],
            [
              315.92486572265625,
              621.7408599853516
            ],
            [
              86.0625,
              621.7408599853516
            ]
          ],
          "bbox": [
            86.0625,
            607.3946685791016,
            315.92486572265625,
            621.7408599853516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Programmers generally choose names for their variables that are meaningful—they document what the variable is used for.</p>",
          "polygon": [
            [
              85.9130859375,
              633.83203125
            ],
            [
              482.4033203125,
              633.83203125
            ],
            [
              482.4033203125,
              656.2818145751953
            ],
            [
              85.9130859375,
              656.2818145751953
            ]
          ],
          "bbox": [
            85.9130859375,
            633.83203125,
            482.4033203125,
            656.2818145751953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/33/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Variable names can be arbitrarily long. They can contain both letters and numbers, but they have to begin with a letter. It is legal to use uppercase letters, but it is a good idea to begin variable names with a lowercase letter (you'll see why later).</p>",
          "polygon": [
            [
              85.9130859375,
              665.15625
            ],
            [
              482.40338134765625,
              665.15625
            ],
            [
              482.40338134765625,
              700.8348236083984
            ],
            [
              85.9130859375,
              700.8348236083984
            ]
          ],
          "bbox": [
            85.9130859375,
            665.15625,
            482.40338134765625,
            700.8348236083984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "3": "/page/33/SectionHeader/5",
        "4": "/page/33/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/34/Page/293",
      "block_type": "Page",
      "html": "<content-ref src='/page/34/PageHeader/0'></content-ref><content-ref src='/page/34/PageHeader/18'></content-ref><content-ref src='/page/34/Text/1'></content-ref><content-ref src='/page/34/Text/2'></content-ref><content-ref src='/page/34/Code/3'></content-ref><content-ref src='/page/34/Text/4'></content-ref><content-ref src='/page/34/Text/5'></content-ref><content-ref src='/page/34/Text/6'></content-ref><content-ref src='/page/34/Table/7'></content-ref><content-ref src='/page/34/Text/8'></content-ref><content-ref src='/page/34/Text/9'></content-ref><content-ref src='/page/34/SectionHeader/10'></content-ref><content-ref src='/page/34/Text/11'></content-ref><content-ref src='/page/34/Text/12'></content-ref><content-ref src='/page/34/Text/13'></content-ref><content-ref src='/page/34/Text/14'></content-ref><content-ref src='/page/34/Text/15'></content-ref><content-ref src='/page/34/Code/16'></content-ref><content-ref src='/page/34/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/34/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.7490234375,
              60.66650390625
            ],
            [
              525.6033935546875,
              60.66650390625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              127.7490234375,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.7490234375,
            60.66650390625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.1796875,
              60.85986328125
            ],
            [
              525.9375,
              60.85986328125
            ],
            [
              525.9375,
              70.14111328125
            ],
            [
              515.1796875,
              70.14111328125
            ]
          ],
          "bbox": [
            515.1796875,
            60.85986328125,
            525.9375,
            70.14111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The underscore character, _, can appear in a name. It is often used in names with multiple words, such as my_name or airspeed_of_unladen_swallow.</p>",
          "polygon": [
            [
              128.3466796875,
              88.68572998046875
            ],
            [
              525.9375,
              88.68572998046875
            ],
            [
              525.9375,
              110.99188232421875
            ],
            [
              128.3466796875,
              110.99188232421875
            ]
          ],
          "bbox": [
            128.3466796875,
            88.68572998046875,
            525.9375,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you give a variable an illegal name, you get a syntax error:</p>",
          "polygon": [
            [
              129.01904296875,
              120.75421142578125
            ],
            [
              395.8703308105469,
              120.75421142578125
            ],
            [
              395.8703308105469,
              130.71685791015625
            ],
            [
              129.01904296875,
              130.71685791015625
            ]
          ],
          "bbox": [
            129.01904296875,
            120.75421142578125,
            395.8703308105469,
            130.71685791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; 76trombones = 'big parade'\nSyntaxError: invalid syntax\n&gt;&gt;&gt; more@ = 1000000\nSyntaxError: invalid syntax\n&gt;&gt;&gt; class = 'Advanced Theoretical Zymurgy'\nSyntaxError: invalid syntax</pre>",
          "polygon": [
            [
              129.01904296875,
              136.356689453125
            ],
            [
              349.2234191894531,
              136.356689453125
            ],
            [
              349.2234191894531,
              209.98828125
            ],
            [
              129.01904296875,
              209.98828125
            ]
          ],
          "bbox": [
            129.01904296875,
            136.356689453125,
            349.2234191894531,
            209.98828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">76trombones is illegal because it does not begin with a letter. more@ is illegal because it contains an illegal character, @. But what's wrong with class?</p>",
          "polygon": [
            [
              129.60003662109375,
              213.0816650390625
            ],
            [
              526.53515625,
              213.0816650390625
            ],
            [
              526.53515625,
              235.38787841796875
            ],
            [
              129.60003662109375,
              235.38787841796875
            ]
          ],
          "bbox": [
            129.60003662109375,
            213.0816650390625,
            526.53515625,
            235.38787841796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It turns out that class is one of Python's <b>keywords</b>. The interpreter uses keywords to recognize the structure of the program, and they cannot be used as variable names.</p>",
          "polygon": [
            [
              128.6455078125,
              244.986328125
            ],
            [
              525.6009521484375,
              244.986328125
            ],
            [
              525.6009521484375,
              267.30682373046875
            ],
            [
              128.6455078125,
              267.30682373046875
            ]
          ],
          "bbox": [
            128.6455078125,
            244.986328125,
            525.6009521484375,
            267.30682373046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python 2 has 31 keywords:</p>",
          "polygon": [
            [
              127.599609375,
              276.50390625
            ],
            [
              247.50743103027344,
              276.50390625
            ],
            [
              247.50743103027344,
              287.0307922363281
            ],
            [
              127.599609375,
              287.0307922363281
            ]
          ],
          "bbox": [
            127.599609375,
            276.50390625,
            247.50743103027344,
            287.0307922363281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Table/7",
          "block_type": "Table",
          "html": "<table><tbody><tr><th>and</th><th>del</th><th>from</th><th>not</th><th>while</th></tr><tr><td>as</td><td>elif</td><td>global</td><td>or</td><td>with</td></tr><tr><td>assert</td><td>else</td><td>if</td><td>pass</td><td>yield</td></tr><tr><td>break</td><td>except</td><td>import</td><td>print</td><td></td></tr><tr><td>class</td><td>exec</td><td>in</td><td>raise</td><td></td></tr><tr><td>continue</td><td>finally</td><td>is</td><td>return</td><td></td></tr><tr><td>def</td><td>for</td><td>lambda</td><td>try</td><td></td></tr></tbody></table>",
          "polygon": [
            [
              128.0478515625,
              291.392578125
            ],
            [
              364.946533203125,
              291.392578125
            ],
            [
              364.946533203125,
              378.404296875
            ],
            [
              128.0478515625,
              378.404296875
            ]
          ],
          "bbox": [
            128.0478515625,
            291.392578125,
            364.946533203125,
            378.404296875
          ],
          "children": [
            {
              "id": "/page/34/TableCell/258",
              "block_type": "TableCell",
              "html": "<th>and</th>",
              "polygon": [
                [
                  128.0478515625,
                  291.392578125
                ],
                [
                  129.0478515625,
                  291.392578125
                ],
                [
                  129.0478515625,
                  292.392578125
                ],
                [
                  128.0478515625,
                  292.392578125
                ]
              ],
              "bbox": [
                128.0478515625,
                291.392578125,
                129.0478515625,
                292.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/259",
              "block_type": "TableCell",
              "html": "<th>del</th>",
              "polygon": [
                [
                  129.0478515625,
                  291.392578125
                ],
                [
                  130.0478515625,
                  291.392578125
                ],
                [
                  130.0478515625,
                  292.392578125
                ],
                [
                  129.0478515625,
                  292.392578125
                ]
              ],
              "bbox": [
                129.0478515625,
                291.392578125,
                130.0478515625,
                292.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/260",
              "block_type": "TableCell",
              "html": "<th>from</th>",
              "polygon": [
                [
                  130.0478515625,
                  291.392578125
                ],
                [
                  131.0478515625,
                  291.392578125
                ],
                [
                  131.0478515625,
                  292.392578125
                ],
                [
                  130.0478515625,
                  292.392578125
                ]
              ],
              "bbox": [
                130.0478515625,
                291.392578125,
                131.0478515625,
                292.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/261",
              "block_type": "TableCell",
              "html": "<th>not</th>",
              "polygon": [
                [
                  131.0478515625,
                  291.392578125
                ],
                [
                  132.0478515625,
                  291.392578125
                ],
                [
                  132.0478515625,
                  292.392578125
                ],
                [
                  131.0478515625,
                  292.392578125
                ]
              ],
              "bbox": [
                131.0478515625,
                291.392578125,
                132.0478515625,
                292.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/262",
              "block_type": "TableCell",
              "html": "<th>while</th>",
              "polygon": [
                [
                  132.0478515625,
                  291.392578125
                ],
                [
                  133.0478515625,
                  291.392578125
                ],
                [
                  133.0478515625,
                  292.392578125
                ],
                [
                  132.0478515625,
                  292.392578125
                ]
              ],
              "bbox": [
                132.0478515625,
                291.392578125,
                133.0478515625,
                292.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/263",
              "block_type": "TableCell",
              "html": "<td>as</td>",
              "polygon": [
                [
                  128.0478515625,
                  292.392578125
                ],
                [
                  129.0478515625,
                  292.392578125
                ],
                [
                  129.0478515625,
                  293.392578125
                ],
                [
                  128.0478515625,
                  293.392578125
                ]
              ],
              "bbox": [
                128.0478515625,
                292.392578125,
                129.0478515625,
                293.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/264",
              "block_type": "TableCell",
              "html": "<td>elif</td>",
              "polygon": [
                [
                  129.0478515625,
                  292.392578125
                ],
                [
                  130.0478515625,
                  292.392578125
                ],
                [
                  130.0478515625,
                  293.392578125
                ],
                [
                  129.0478515625,
                  293.392578125
                ]
              ],
              "bbox": [
                129.0478515625,
                292.392578125,
                130.0478515625,
                293.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/265",
              "block_type": "TableCell",
              "html": "<td>global</td>",
              "polygon": [
                [
                  130.0478515625,
                  292.392578125
                ],
                [
                  131.0478515625,
                  292.392578125
                ],
                [
                  131.0478515625,
                  293.392578125
                ],
                [
                  130.0478515625,
                  293.392578125
                ]
              ],
              "bbox": [
                130.0478515625,
                292.392578125,
                131.0478515625,
                293.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/266",
              "block_type": "TableCell",
              "html": "<td>or</td>",
              "polygon": [
                [
                  131.0478515625,
                  292.392578125
                ],
                [
                  132.0478515625,
                  292.392578125
                ],
                [
                  132.0478515625,
                  293.392578125
                ],
                [
                  131.0478515625,
                  293.392578125
                ]
              ],
              "bbox": [
                131.0478515625,
                292.392578125,
                132.0478515625,
                293.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/267",
              "block_type": "TableCell",
              "html": "<td>with</td>",
              "polygon": [
                [
                  132.0478515625,
                  292.392578125
                ],
                [
                  133.0478515625,
                  292.392578125
                ],
                [
                  133.0478515625,
                  293.392578125
                ],
                [
                  132.0478515625,
                  293.392578125
                ]
              ],
              "bbox": [
                132.0478515625,
                292.392578125,
                133.0478515625,
                293.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/268",
              "block_type": "TableCell",
              "html": "<td>assert</td>",
              "polygon": [
                [
                  128.0478515625,
                  293.392578125
                ],
                [
                  129.0478515625,
                  293.392578125
                ],
                [
                  129.0478515625,
                  294.392578125
                ],
                [
                  128.0478515625,
                  294.392578125
                ]
              ],
              "bbox": [
                128.0478515625,
                293.392578125,
                129.0478515625,
                294.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/269",
              "block_type": "TableCell",
              "html": "<td>else</td>",
              "polygon": [
                [
                  129.0478515625,
                  293.392578125
                ],
                [
                  130.0478515625,
                  293.392578125
                ],
                [
                  130.0478515625,
                  294.392578125
                ],
                [
                  129.0478515625,
                  294.392578125
                ]
              ],
              "bbox": [
                129.0478515625,
                293.392578125,
                130.0478515625,
                294.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/270",
              "block_type": "TableCell",
              "html": "<td>if</td>",
              "polygon": [
                [
                  130.0478515625,
                  293.392578125
                ],
                [
                  131.0478515625,
                  293.392578125
                ],
                [
                  131.0478515625,
                  294.392578125
                ],
                [
                  130.0478515625,
                  294.392578125
                ]
              ],
              "bbox": [
                130.0478515625,
                293.392578125,
                131.0478515625,
                294.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/271",
              "block_type": "TableCell",
              "html": "<td>pass</td>",
              "polygon": [
                [
                  131.0478515625,
                  293.392578125
                ],
                [
                  132.0478515625,
                  293.392578125
                ],
                [
                  132.0478515625,
                  294.392578125
                ],
                [
                  131.0478515625,
                  294.392578125
                ]
              ],
              "bbox": [
                131.0478515625,
                293.392578125,
                132.0478515625,
                294.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/272",
              "block_type": "TableCell",
              "html": "<td>yield</td>",
              "polygon": [
                [
                  132.0478515625,
                  293.392578125
                ],
                [
                  133.0478515625,
                  293.392578125
                ],
                [
                  133.0478515625,
                  294.392578125
                ],
                [
                  132.0478515625,
                  294.392578125
                ]
              ],
              "bbox": [
                132.0478515625,
                293.392578125,
                133.0478515625,
                294.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/273",
              "block_type": "TableCell",
              "html": "<td>break</td>",
              "polygon": [
                [
                  128.0478515625,
                  294.392578125
                ],
                [
                  129.0478515625,
                  294.392578125
                ],
                [
                  129.0478515625,
                  295.392578125
                ],
                [
                  128.0478515625,
                  295.392578125
                ]
              ],
              "bbox": [
                128.0478515625,
                294.392578125,
                129.0478515625,
                295.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/274",
              "block_type": "TableCell",
              "html": "<td>except</td>",
              "polygon": [
                [
                  129.0478515625,
                  294.392578125
                ],
                [
                  130.0478515625,
                  294.392578125
                ],
                [
                  130.0478515625,
                  295.392578125
                ],
                [
                  129.0478515625,
                  295.392578125
                ]
              ],
              "bbox": [
                129.0478515625,
                294.392578125,
                130.0478515625,
                295.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/275",
              "block_type": "TableCell",
              "html": "<td>import</td>",
              "polygon": [
                [
                  130.0478515625,
                  294.392578125
                ],
                [
                  131.0478515625,
                  294.392578125
                ],
                [
                  131.0478515625,
                  295.392578125
                ],
                [
                  130.0478515625,
                  295.392578125
                ]
              ],
              "bbox": [
                130.0478515625,
                294.392578125,
                131.0478515625,
                295.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/276",
              "block_type": "TableCell",
              "html": "<td>print</td>",
              "polygon": [
                [
                  131.0478515625,
                  294.392578125
                ],
                [
                  132.0478515625,
                  294.392578125
                ],
                [
                  132.0478515625,
                  295.392578125
                ],
                [
                  131.0478515625,
                  295.392578125
                ]
              ],
              "bbox": [
                131.0478515625,
                294.392578125,
                132.0478515625,
                295.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/277",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  132.0478515625,
                  294.392578125
                ],
                [
                  133.0478515625,
                  294.392578125
                ],
                [
                  133.0478515625,
                  295.392578125
                ],
                [
                  132.0478515625,
                  295.392578125
                ]
              ],
              "bbox": [
                132.0478515625,
                294.392578125,
                133.0478515625,
                295.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/278",
              "block_type": "TableCell",
              "html": "<td>class</td>",
              "polygon": [
                [
                  128.0478515625,
                  295.392578125
                ],
                [
                  129.0478515625,
                  295.392578125
                ],
                [
                  129.0478515625,
                  296.392578125
                ],
                [
                  128.0478515625,
                  296.392578125
                ]
              ],
              "bbox": [
                128.0478515625,
                295.392578125,
                129.0478515625,
                296.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/279",
              "block_type": "TableCell",
              "html": "<td>exec</td>",
              "polygon": [
                [
                  129.0478515625,
                  295.392578125
                ],
                [
                  130.0478515625,
                  295.392578125
                ],
                [
                  130.0478515625,
                  296.392578125
                ],
                [
                  129.0478515625,
                  296.392578125
                ]
              ],
              "bbox": [
                129.0478515625,
                295.392578125,
                130.0478515625,
                296.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/280",
              "block_type": "TableCell",
              "html": "<td>in</td>",
              "polygon": [
                [
                  130.0478515625,
                  295.392578125
                ],
                [
                  131.0478515625,
                  295.392578125
                ],
                [
                  131.0478515625,
                  296.392578125
                ],
                [
                  130.0478515625,
                  296.392578125
                ]
              ],
              "bbox": [
                130.0478515625,
                295.392578125,
                131.0478515625,
                296.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/281",
              "block_type": "TableCell",
              "html": "<td>raise</td>",
              "polygon": [
                [
                  131.0478515625,
                  295.392578125
                ],
                [
                  132.0478515625,
                  295.392578125
                ],
                [
                  132.0478515625,
                  296.392578125
                ],
                [
                  131.0478515625,
                  296.392578125
                ]
              ],
              "bbox": [
                131.0478515625,
                295.392578125,
                132.0478515625,
                296.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/282",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  132.0478515625,
                  295.392578125
                ],
                [
                  133.0478515625,
                  295.392578125
                ],
                [
                  133.0478515625,
                  296.392578125
                ],
                [
                  132.0478515625,
                  296.392578125
                ]
              ],
              "bbox": [
                132.0478515625,
                295.392578125,
                133.0478515625,
                296.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/283",
              "block_type": "TableCell",
              "html": "<td>continue</td>",
              "polygon": [
                [
                  128.0478515625,
                  296.392578125
                ],
                [
                  129.0478515625,
                  296.392578125
                ],
                [
                  129.0478515625,
                  297.392578125
                ],
                [
                  128.0478515625,
                  297.392578125
                ]
              ],
              "bbox": [
                128.0478515625,
                296.392578125,
                129.0478515625,
                297.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/284",
              "block_type": "TableCell",
              "html": "<td>finally</td>",
              "polygon": [
                [
                  129.0478515625,
                  296.392578125
                ],
                [
                  130.0478515625,
                  296.392578125
                ],
                [
                  130.0478515625,
                  297.392578125
                ],
                [
                  129.0478515625,
                  297.392578125
                ]
              ],
              "bbox": [
                129.0478515625,
                296.392578125,
                130.0478515625,
                297.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/285",
              "block_type": "TableCell",
              "html": "<td>is</td>",
              "polygon": [
                [
                  130.0478515625,
                  296.392578125
                ],
                [
                  131.0478515625,
                  296.392578125
                ],
                [
                  131.0478515625,
                  297.392578125
                ],
                [
                  130.0478515625,
                  297.392578125
                ]
              ],
              "bbox": [
                130.0478515625,
                296.392578125,
                131.0478515625,
                297.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/286",
              "block_type": "TableCell",
              "html": "<td>return</td>",
              "polygon": [
                [
                  131.0478515625,
                  296.392578125
                ],
                [
                  132.0478515625,
                  296.392578125
                ],
                [
                  132.0478515625,
                  297.392578125
                ],
                [
                  131.0478515625,
                  297.392578125
                ]
              ],
              "bbox": [
                131.0478515625,
                296.392578125,
                132.0478515625,
                297.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/287",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  132.0478515625,
                  296.392578125
                ],
                [
                  133.0478515625,
                  296.392578125
                ],
                [
                  133.0478515625,
                  297.392578125
                ],
                [
                  132.0478515625,
                  297.392578125
                ]
              ],
              "bbox": [
                132.0478515625,
                296.392578125,
                133.0478515625,
                297.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/288",
              "block_type": "TableCell",
              "html": "<td>def</td>",
              "polygon": [
                [
                  128.0478515625,
                  297.392578125
                ],
                [
                  129.0478515625,
                  297.392578125
                ],
                [
                  129.0478515625,
                  298.392578125
                ],
                [
                  128.0478515625,
                  298.392578125
                ]
              ],
              "bbox": [
                128.0478515625,
                297.392578125,
                129.0478515625,
                298.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/289",
              "block_type": "TableCell",
              "html": "<td>for</td>",
              "polygon": [
                [
                  129.0478515625,
                  297.392578125
                ],
                [
                  130.0478515625,
                  297.392578125
                ],
                [
                  130.0478515625,
                  298.392578125
                ],
                [
                  129.0478515625,
                  298.392578125
                ]
              ],
              "bbox": [
                129.0478515625,
                297.392578125,
                130.0478515625,
                298.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/290",
              "block_type": "TableCell",
              "html": "<td>lambda</td>",
              "polygon": [
                [
                  130.0478515625,
                  297.392578125
                ],
                [
                  131.0478515625,
                  297.392578125
                ],
                [
                  131.0478515625,
                  298.392578125
                ],
                [
                  130.0478515625,
                  298.392578125
                ]
              ],
              "bbox": [
                130.0478515625,
                297.392578125,
                131.0478515625,
                298.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/291",
              "block_type": "TableCell",
              "html": "<td>try</td>",
              "polygon": [
                [
                  131.0478515625,
                  297.392578125
                ],
                [
                  132.0478515625,
                  297.392578125
                ],
                [
                  132.0478515625,
                  298.392578125
                ],
                [
                  131.0478515625,
                  298.392578125
                ]
              ],
              "bbox": [
                131.0478515625,
                297.392578125,
                132.0478515625,
                298.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/34/TableCell/292",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  132.0478515625,
                  297.392578125
                ],
                [
                  133.0478515625,
                  297.392578125
                ],
                [
                  133.0478515625,
                  298.392578125
                ],
                [
                  132.0478515625,
                  298.392578125
                ]
              ],
              "bbox": [
                132.0478515625,
                297.392578125,
                133.0478515625,
                298.392578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "3": "/page/33/SectionHeader/5",
                "4": "/page/33/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": null
        },
        {
          "id": "/page/34/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Python 3, exec is no longer a keyword, but nonlocal is.</p>",
          "polygon": [
            [
              128.57080078125,
              381.59063720703125
            ],
            [
              386.2499694824219,
              381.59063720703125
            ],
            [
              386.2499694824219,
              391.7027893066406
            ],
            [
              128.57080078125,
              391.7027893066406
            ]
          ],
          "bbox": [
            128.57080078125,
            381.59063720703125,
            386.2499694824219,
            391.7027893066406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You might want to keep this list handy. If the interpreter complains about one of your variable names and you don't know why, see if it is on this list.</p>",
          "polygon": [
            [
              128.794921875,
              401.4140625
            ],
            [
              525.6033325195312,
              401.4140625
            ],
            [
              525.6033325195312,
              423.6217956542969
            ],
            [
              128.794921875,
              423.6217956542969
            ]
          ],
          "bbox": [
            128.794921875,
            401.4140625,
            525.6033325195312,
            423.6217956542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/33/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/34/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-34-0\"></span><b>2.4 Operators and operands</b></h4>",
          "polygon": [
            [
              128.42138671875,
              452.3846435546875
            ],
            [
              319.6728820800781,
              452.3846435546875
            ],
            [
              319.6728820800781,
              466.7308654785156
            ],
            [
              128.42138671875,
              466.7308654785156
            ]
          ],
          "bbox": [
            128.42138671875,
            452.3846435546875,
            319.6728820800781,
            466.7308654785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Operators</b> are special symbols that represent computations like addition and multiplication. The values the operator is applied to are called <b>operands</b>.</p>",
          "polygon": [
            [
              128.49609375,
              478.37109375
            ],
            [
              525.6018676757812,
              478.37109375
            ],
            [
              525.6018676757812,
              500.82080078125
            ],
            [
              128.49609375,
              500.82080078125
            ]
          ],
          "bbox": [
            128.49609375,
            478.37109375,
            525.6018676757812,
            500.82080078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The operators +, -, *, / and ** perform addition, subtraction, multiplication, division and exponentiation, as in the following examples:</p>",
          "polygon": [
            [
              128.197265625,
              510.08203125
            ],
            [
              525.638671875,
              510.08203125
            ],
            [
              525.638671875,
              532.7388000488281
            ],
            [
              128.197265625,
              532.7388000488281
            ]
          ],
          "bbox": [
            128.197265625,
            510.08203125,
            525.638671875,
            532.7388000488281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">20+32 hour-1 hour*60+minute minute/60 5**2 (5+9)*(15-7)</p>",
          "polygon": [
            [
              126.703125,
              538.3796539306641
            ],
            [
              469.5838317871094,
              538.3796539306641
            ],
            [
              469.5838317871094,
              548.3671875
            ],
            [
              126.703125,
              548.3671875
            ]
          ],
          "bbox": [
            126.703125,
            538.3796539306641,
            469.5838317871094,
            548.3671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In some other languages, ^ is used for exponentiation, but in Python it is a bitwise operator called XOR. I won't cover bitwise operators in this book, but you can read about them at <a href=\"http://wiki.python.org/moin/BitwiseOperators\">http://wiki.python.org/moin/BitwiseOperators</a>.</p>",
          "polygon": [
            [
              128.0478515625,
              554.1326599121094
            ],
            [
              525.6033325195312,
              554.1326599121094
            ],
            [
              525.6033325195312,
              588.6338195800781
            ],
            [
              128.0478515625,
              588.6338195800781
            ]
          ],
          "bbox": [
            128.0478515625,
            554.1326599121094,
            525.6033325195312,
            588.6338195800781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Python 2, the division operator might not do what you expect:</p>",
          "polygon": [
            [
              128.3466796875,
              598.25390625
            ],
            [
              415.34735107421875,
              598.25390625
            ],
            [
              415.34735107421875,
              608.3578186035156
            ],
            [
              128.3466796875,
              608.3578186035156
            ]
          ],
          "bbox": [
            128.3466796875,
            598.25390625,
            415.34735107421875,
            608.3578186035156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/34/Code/16",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; minute = 59\n&gt;&gt;&gt; minute/60\n0</pre>",
          "polygon": [
            [
              128.49609375,
              613.9986724853516
            ],
            [
              208.05555725097656,
              613.9986724853516
            ],
            [
              208.05555725097656,
              648.3492736816406
            ],
            [
              128.49609375,
              648.3492736816406
            ]
          ],
          "bbox": [
            128.49609375,
            613.9986724853516,
            208.05555725097656,
            648.3492736816406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/34/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The value of minute is 59, and in conventional arithmetic 59 divided by 60 is 0.98333, not 0. The reason for the discrepancy is that Python is performing <b>floor division</b>. When both of the operands are integers, the result is also an integer; floor division chops off the fraction part, so in this example it rounds down to zero.</p>",
          "polygon": [
            [
              128.6455078125,
              653.94140625
            ],
            [
              525.9375,
              653.94140625
            ],
            [
              525.9375,
              700.8348388671875
            ],
            [
              128.6455078125,
              700.8348388671875
            ]
          ],
          "bbox": [
            128.6455078125,
            653.94140625,
            525.9375,
            700.8348388671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "3": "/page/33/SectionHeader/5",
        "4": "/page/34/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/35/Page/160",
      "block_type": "Page",
      "html": "<content-ref src='/page/35/PageHeader/0'></content-ref><content-ref src='/page/35/PageHeader/19'></content-ref><content-ref src='/page/35/Text/1'></content-ref><content-ref src='/page/35/Text/2'></content-ref><content-ref src='/page/35/Text/3'></content-ref><content-ref src='/page/35/SectionHeader/4'></content-ref><content-ref src='/page/35/Text/5'></content-ref><content-ref src='/page/35/Text/6'></content-ref><content-ref src='/page/35/Text/7'></content-ref><content-ref src='/page/35/Text/8'></content-ref><content-ref src='/page/35/SectionHeader/9'></content-ref><content-ref src='/page/35/Text/10'></content-ref><content-ref src='/page/35/Text/11'></content-ref><content-ref src='/page/35/Code/12'></content-ref><content-ref src='/page/35/Text/13'></content-ref><content-ref src='/page/35/Text/14'></content-ref><content-ref src='/page/35/Code/158'></content-ref><content-ref src='/page/35/Text/16'></content-ref><content-ref src='/page/35/Text/17'></content-ref><content-ref src='/page/35/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/35/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              483.50390625,
              60.76318359375
            ],
            [
              483.50390625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            483.50390625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/35/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.6142578125,
              60.47314453125
            ],
            [
              97.2685546875,
              60.47314453125
            ],
            [
              97.2685546875,
              70.23779296875
            ],
            [
              85.6142578125,
              70.23779296875
            ]
          ],
          "bbox": [
            85.6142578125,
            60.47314453125,
            97.2685546875,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Python 3, the result of this division is a float. The new operator // performs floor division.</p>",
          "polygon": [
            [
              85.9130859375,
              88.171875
            ],
            [
              484.1015625,
              88.171875
            ],
            [
              484.1015625,
              110.99188232421875
            ],
            [
              85.9130859375,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.9130859375,
            88.171875,
            484.1015625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If either of the operands is a floating-point number, Python performs floating-point division, and the result is a float:</p>",
          "polygon": [
            [
              85.9130859375,
              119.49609375
            ],
            [
              482.4033203125,
              119.49609375
            ],
            [
              482.4033203125,
              142.88385009765625
            ],
            [
              85.9130859375,
              142.88385009765625
            ]
          ],
          "bbox": [
            85.9130859375,
            119.49609375,
            482.4033203125,
            142.88385009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; minute/60.0 0.98333333333333328</p>",
          "polygon": [
            [
              86.13720703125,
              148.4976806640625
            ],
            [
              186.169921875,
              148.4976806640625
            ],
            [
              186.169921875,
              170.6552734375
            ],
            [
              86.13720703125,
              170.6552734375
            ]
          ],
          "bbox": [
            86.13720703125,
            148.4976806640625,
            186.169921875,
            170.6552734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/34/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/35/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-35-0\"></span><b>2.5 Expressions and statements</b></h4>",
          "polygon": [
            [
              85.6142578125,
              198.966796875
            ],
            [
              298.7524108886719,
              198.966796875
            ],
            [
              298.7524108886719,
              213.87689208984375
            ],
            [
              85.6142578125,
              213.87689208984375
            ]
          ],
          "bbox": [
            85.6142578125,
            198.966796875,
            298.7524108886719,
            213.87689208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An <b>expression</b> is a combination of values, variables, and operators. A value all by itself is considered an expression, and so is a variable, so the following are all legal expressions (assuming that the variable x has been assigned a value):</p>",
          "polygon": [
            [
              85.9130859375,
              225.0703125
            ],
            [
              482.90625,
              225.0703125
            ],
            [
              482.90625,
              260.13385009765625
            ],
            [
              85.9130859375,
              260.13385009765625
            ]
          ],
          "bbox": [
            85.9130859375,
            225.0703125,
            482.90625,
            260.13385009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">17 x x + 17</p>",
          "polygon": [
            [
              86.39997863769531,
              265.2890625
            ],
            [
              117.78216552734375,
              265.2890625
            ],
            [
              117.78216552734375,
              300.0992736816406
            ],
            [
              86.39997863769531,
              300.0992736816406
            ]
          ],
          "bbox": [
            86.39997863769531,
            265.2890625,
            117.78216552734375,
            300.0992736816406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>statement</b> is a unit of code that the Python interpreter can execute. We have seen two kinds of statement: print and assignment.</p>",
          "polygon": [
            [
              86.2119140625,
              305.5078125
            ],
            [
              482.90625,
              305.5078125
            ],
            [
              482.90625,
              328.1688537597656
            ],
            [
              86.2119140625,
              328.1688537597656
            ]
          ],
          "bbox": [
            86.2119140625,
            305.5078125,
            482.90625,
            328.1688537597656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Technically an expression is also a statement, but it is probably simpler to think of them as different things. The important difference is that an expression has a value; a statement does not.</p>",
          "polygon": [
            [
              86.0625,
              337.412109375
            ],
            [
              482.4034118652344,
              337.412109375
            ],
            [
              482.4034118652344,
              372.255859375
            ],
            [
              86.0625,
              372.255859375
            ]
          ],
          "bbox": [
            86.0625,
            337.412109375,
            482.4034118652344,
            372.255859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/35/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-35-1\"></span><b>2.6 Interactive mode and script mode</b></h4>",
          "polygon": [
            [
              85.39013671875,
              400.640625
            ],
            [
              337.83148193359375,
              400.640625
            ],
            [
              337.83148193359375,
              415.3359375
            ],
            [
              85.39013671875,
              415.3359375
            ]
          ],
          "bbox": [
            85.39013671875,
            400.640625,
            337.83148193359375,
            415.3359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the benefits of working with an interpreted language is that you can test bits of code in interactive mode before you put them in a script. But there are differences between interactive mode and script mode that can be confusing.</p>",
          "polygon": [
            [
              86.0625,
              426.1640625
            ],
            [
              482.40350341796875,
              426.1640625
            ],
            [
              482.40350341796875,
              461.5848693847656
            ],
            [
              86.0625,
              461.5848693847656
            ]
          ],
          "bbox": [
            86.0625,
            426.1640625,
            482.40350341796875,
            461.5848693847656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, if you are using Python as a calculator, you might type</p>",
          "polygon": [
            [
              85.83837890625,
              470.25
            ],
            [
              386.0549621582031,
              470.25
            ],
            [
              386.0549621582031,
              481.2828674316406
            ],
            [
              85.83837890625,
              481.2828674316406
            ]
          ],
          "bbox": [
            85.83837890625,
            470.25,
            386.0549621582031,
            481.2828674316406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; miles = 26.2\n&gt;&gt;&gt; miles * 1.61\n42.182</pre>",
          "polygon": [
            [
              85.6142578125,
              486.896728515625
            ],
            [
              173.1708984375,
              486.896728515625
            ],
            [
              173.1708984375,
              521.2483215332031
            ],
            [
              85.6142578125,
              521.2483215332031
            ]
          ],
          "bbox": [
            85.6142578125,
            486.896728515625,
            173.1708984375,
            521.2483215332031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line assigns a value to miles, but it has no visible effect. The second line is an expression, so the interpreter evaluates it and displays the result. So we learn that a marathon is about 42 kilometers.</p>",
          "polygon": [
            [
              86.0625,
              526.32421875
            ],
            [
              482.607421875,
              526.32421875
            ],
            [
              482.607421875,
              561.5129089355469
            ],
            [
              86.0625,
              561.5129089355469
            ]
          ],
          "bbox": [
            86.0625,
            526.32421875,
            482.607421875,
            561.5129089355469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you type the same code into a script and run it, you get no output at all. In script mode an expression, all by itself, has no visible effect. Python actually evaluates the expression, but it doesn't display the value unless you tell it to:</p>",
          "polygon": [
            [
              85.6142578125,
              570.41015625
            ],
            [
              482.90625,
              570.41015625
            ],
            [
              482.90625,
              605.5989227294922
            ],
            [
              85.6142578125,
              605.5989227294922
            ]
          ],
          "bbox": [
            85.6142578125,
            570.41015625,
            482.90625,
            605.5989227294922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Code/158",
          "block_type": "Code",
          "html": "<pre>miles = 26.2\nprint miles * 1.61</pre>",
          "polygon": [
            [
              85.68896484375,
              609.85546875
            ],
            [
              184.078125,
              609.85546875
            ],
            [
              184.078125,
              633.83203125
            ],
            [
              85.68896484375,
              633.83203125
            ]
          ],
          "bbox": [
            85.68896484375,
            609.85546875,
            184.078125,
            633.83203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This behavior can be confusing at first.</p>",
          "polygon": [
            [
              85.83837890625,
              638.859375
            ],
            [
              256.4216613769531,
              638.859375
            ],
            [
              256.4216613769531,
              649.2459259033203
            ],
            [
              85.83837890625,
              649.2459259033203
            ]
          ],
          "bbox": [
            85.83837890625,
            638.859375,
            256.4216613769531,
            649.2459259033203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A script usually contains a sequence of statements. If there is more than one statement, the results appear one at a time as the statements execute.</p>",
          "polygon": [
            [
              86.0625,
              658.1953125
            ],
            [
              483.205078125,
              658.1953125
            ],
            [
              483.205078125,
              681.1379318237305
            ],
            [
              86.0625,
              681.1379318237305
            ]
          ],
          "bbox": [
            86.0625,
            658.1953125,
            483.205078125,
            681.1379318237305
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/35/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, the script</p>",
          "polygon": [
            [
              85.83837890625,
              690.29296875
            ],
            [
              187.962890625,
              690.29296875
            ],
            [
              187.962890625,
              700.8349304199219
            ],
            [
              85.83837890625,
              700.8349304199219
            ]
          ],
          "bbox": [
            85.83837890625,
            690.29296875,
            187.962890625,
            700.8349304199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "3": "/page/33/SectionHeader/5",
        "4": "/page/35/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/36/Page/192",
      "block_type": "Page",
      "html": "<content-ref src='/page/36/PageHeader/0'></content-ref><content-ref src='/page/36/PageHeader/14'></content-ref><content-ref src='/page/36/Text/1'></content-ref><content-ref src='/page/36/TextInlineMath/2'></content-ref><content-ref src='/page/36/Text/3'></content-ref><content-ref src='/page/36/SectionHeader/4'></content-ref><content-ref src='/page/36/Text/5'></content-ref><content-ref src='/page/36/ListGroup/188'></content-ref><content-ref src='/page/36/Text/10'></content-ref><content-ref src='/page/36/SectionHeader/11'></content-ref><content-ref src='/page/36/Text/12'></content-ref><content-ref src='/page/36/TextInlineMath/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/36/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.3466796875,
              60.4248046875
            ],
            [
              525.6033935546875,
              60.4248046875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.3466796875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.3466796875,
            60.4248046875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/36/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              60.134765625
            ],
            [
              526.53515625,
              60.134765625
            ],
            [
              526.53515625,
              70.189453125
            ],
            [
              514.58203125,
              70.189453125
            ]
          ],
          "bbox": [
            514.58203125,
            60.134765625,
            526.53515625,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/36/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">print 1 x = 2 print x produces the output 1 2 The assignment statement produces no output. <b>Exercise 2.1.</b> <i>Type the following statements in the Python interpreter to see what they do:</i> 5 x = 5</p>",
          "polygon": [
            [
              128.49609375,
              86.431640625
            ],
            [
              499.04296875,
              86.431640625
            ],
            [
              499.04296875,
              225.67236328125
            ],
            [
              128.49609375,
              225.67236328125
            ]
          ],
          "bbox": [
            128.49609375,
            86.431640625,
            499.04296875,
            225.67236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/36/TextInlineMath/2",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">x + 1</p>",
          "polygon": [
            [
              129.5419921875,
              226.23046875
            ],
            [
              155.7518310546875,
              226.23046875
            ],
            [
              155.7518310546875,
              237.8663330078125
            ],
            [
              129.5419921875,
              237.8663330078125
            ]
          ],
          "bbox": [
            129.5419921875,
            226.23046875,
            155.7518310546875,
            237.8663330078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/36/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Now put the same statements into a script and run it. What is the output? Modify the script by</i> <i>transforming each expression into a print statement and then run it again.</i></p>",
          "polygon": [
            [
              129.60000610351562,
              243.24609375
            ],
            [
              525.6033325195312,
              243.24609375
            ],
            [
              525.6033325195312,
              266.55120849609375
            ],
            [
              129.60000610351562,
              266.55120849609375
            ]
          ],
          "bbox": [
            129.60000610351562,
            243.24609375,
            525.6033325195312,
            266.55120849609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "3": "/page/33/SectionHeader/5",
            "4": "/page/35/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/36/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-36-0\"></span><b>2.7 Order of operations</b></h2>",
          "polygon": [
            [
              128.42138671875,
              295.453125
            ],
            [
              291.357421875,
              295.453125
            ],
            [
              291.357421875,
              311.4539794921875
            ],
            [
              128.42138671875,
              311.4539794921875
            ]
          ],
          "bbox": [
            128.42138671875,
            295.453125,
            291.357421875,
            311.4539794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/36/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When more than one operator appears in an expression, the order of evaluation depends on the <b>rules of precedence</b>. For mathematical operators, Python follows mathematical convention. The acronym <b>PEMDAS</b> is a useful way to remember the rules:</p>",
          "polygon": [
            [
              129.60000610351562,
              323.296875
            ],
            [
              527.1328125,
              323.296875
            ],
            [
              527.1328125,
              358.6369323730469
            ],
            [
              129.60000610351562,
              358.6369323730469
            ]
          ],
          "bbox": [
            129.60000610351562,
            323.296875,
            527.1328125,
            358.6369323730469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/36/ListGroup/188",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/36/ListItem/6'></content-ref><content-ref src='/page/36/ListItem/7'></content-ref><content-ref src='/page/36/ListItem/8'></content-ref><content-ref src='/page/36/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              142.83984375,
              371.443359375
            ],
            [
              526.833984375,
              371.443359375
            ],
            [
              526.833984375,
              567.6299743652344
            ],
            [
              142.83984375,
              567.6299743652344
            ]
          ],
          "bbox": [
            142.83984375,
            371.443359375,
            526.833984375,
            567.6299743652344
          ],
          "children": [
            {
              "id": "/page/36/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> <b>P</b>arentheses have the highest precedence and can be used to force an expression to evaluate in the order you want. Since expressions in parentheses are evaluated first, 2 * (3-1) is 4, and (1+1)**(5-2) is 8. You can also use parentheses to make an expression easier to read, as in (minute * 100) / 60, even if it doesn't change the result.</li>",
              "polygon": [
                [
                  143.2880859375,
                  371.443359375
                ],
                [
                  526.53515625,
                  371.443359375
                ],
                [
                  526.53515625,
                  432.3515625
                ],
                [
                  143.2880859375,
                  432.3515625
                ]
              ],
              "bbox": [
                143.2880859375,
                371.443359375,
                526.53515625,
                432.3515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/36/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> <b>E</b>xponentiation has the next highest precedence, so 2**1+1 is 3, not 4, and 3*1**3 is 3, not 27.</li>",
              "polygon": [
                [
                  142.83984375,
                  440.47265625
                ],
                [
                  526.53515625,
                  440.47265625
                ],
                [
                  526.53515625,
                  465.14495849609375
                ],
                [
                  142.83984375,
                  465.14495849609375
                ]
              ],
              "bbox": [
                142.83984375,
                440.47265625,
                526.53515625,
                465.14495849609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/36/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> <b>M</b>ultiplication and <b>D</b>ivision have the same precedence, which is higher than <b>A</b>ddition and <b>S</b>ubtraction, which also have the same precedence. So 2*3-1 is 5, not 4, and 6+4/2 is 8, not 5.</li>",
              "polygon": [
                [
                  142.9892578125,
                  474.1171875
                ],
                [
                  526.53515625,
                  474.1171875
                ],
                [
                  526.53515625,
                  510.46875
                ],
                [
                  142.9892578125,
                  510.46875
                ]
              ],
              "bbox": [
                142.9892578125,
                474.1171875,
                526.53515625,
                510.46875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/36/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Operators with the same precedence are evaluated from left to right (except exponentiation). So in the expression degrees / 2 * pi, the division happens first and the result is multiplied by pi. To divide by 2<i>π</i>, you can use parentheses or write degrees / 2 / pi.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  519.36328125
                ],
                [
                  526.833984375,
                  519.36328125
                ],
                [
                  526.833984375,
                  567.6299743652344
                ],
                [
                  143.48800659179688,
                  567.6299743652344
                ]
              ],
              "bbox": [
                143.48800659179688,
                519.36328125,
                526.833984375,
                567.6299743652344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/36/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I don't work very hard to remember rules of precedence for other operators. If I can't tell by looking at the expression, I use parentheses to make it obvious.</p>",
          "polygon": [
            [
              128.3466796875,
              580.8515625
            ],
            [
              526.53515625,
              580.8515625
            ],
            [
              526.53515625,
              604.6039886474609
            ],
            [
              128.3466796875,
              604.6039886474609
            ]
          ],
          "bbox": [
            128.3466796875,
            580.8515625,
            526.53515625,
            604.6039886474609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/36/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-36-1\"></span><b>2.8 String operations</b></h3>",
          "polygon": [
            [
              127.82373046875,
              633.83203125
            ],
            [
              275.4434814453125,
              633.83203125
            ],
            [
              275.4434814453125,
              649.3340301513672
            ],
            [
              127.82373046875,
              649.3340301513672
            ]
          ],
          "bbox": [
            127.82373046875,
            633.83203125,
            275.4434814453125,
            649.3340301513672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/36/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In general, you can't perform mathematical operations on strings, even if the strings look like numbers, so the following are illegal:</p>",
          "polygon": [
            [
              127.8984375,
              660.90234375
            ],
            [
              526.53515625,
              660.90234375
            ],
            [
              526.53515625,
              684.3219833374023
            ],
            [
              127.8984375,
              684.3219833374023
            ]
          ],
          "bbox": [
            127.8984375,
            660.90234375,
            526.53515625,
            684.3219833374023
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/36/TextInlineMath/13",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">'2' - '1' 'eggs' / 'easy' 'third' * 'a charm'</p>",
          "polygon": [
            [
              129.01904296875,
              677.2975158691406
            ],
            [
              362.91888427734375,
              677.2975158691406
            ],
            [
              362.91888427734375,
              700.685417175293
            ],
            [
              129.01904296875,
              700.685417175293
            ]
          ],
          "bbox": [
            129.01904296875,
            677.2975158691406,
            362.91888427734375,
            700.685417175293
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "2": "/page/36/SectionHeader/4",
        "3": "/page/36/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/37/Page/211",
      "block_type": "Page",
      "html": "<content-ref src='/page/37/PageHeader/0'></content-ref><content-ref src='/page/37/PageHeader/20'></content-ref><content-ref src='/page/37/Text/1'></content-ref><content-ref src='/page/37/Code/2'></content-ref><content-ref src='/page/37/Text/3'></content-ref><content-ref src='/page/37/Text/4'></content-ref><content-ref src='/page/37/SectionHeader/5'></content-ref><content-ref src='/page/37/Text/6'></content-ref><content-ref src='/page/37/Text/7'></content-ref><content-ref src='/page/37/Code/8'></content-ref><content-ref src='/page/37/Text/9'></content-ref><content-ref src='/page/37/Code/10'></content-ref><content-ref src='/page/37/Text/11'></content-ref><content-ref src='/page/37/Text/12'></content-ref><content-ref src='/page/37/Text/13'></content-ref><content-ref src='/page/37/TextInlineMath/14'></content-ref><content-ref src='/page/37/Text/15'></content-ref><content-ref src='/page/37/Text/208'></content-ref><content-ref src='/page/37/Text/17'></content-ref><content-ref src='/page/37/SectionHeader/18'></content-ref><content-ref src='/page/37/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/37/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              483.205078125,
              60.71484375
            ],
            [
              483.205078125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            483.205078125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/37/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.76318359375
            ],
            [
              96.89501953125,
              60.76318359375
            ],
            [
              96.89501953125,
              70.43115234375
            ],
            [
              85.53955078125,
              70.43115234375
            ]
          ],
          "bbox": [
            85.53955078125,
            60.76318359375,
            96.89501953125,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The + operator works with strings, but it might not do what you expect: it performs <b>con</b><b>catenation</b>, which means joining the strings by linking them end-to-end. For example:</p>",
          "polygon": [
            [
              85.46484375,
              88.31689453125
            ],
            [
              482.90625,
              88.31689453125
            ],
            [
              482.90625,
              111.2783203125
            ],
            [
              85.46484375,
              111.2783203125
            ]
          ],
          "bbox": [
            85.46484375,
            88.31689453125,
            482.90625,
            111.2783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/37/Code/2",
          "block_type": "Code",
          "html": "<pre>first = 'throat'\nsecond = 'warbler'\nprint first + second\nThe output of this program is throatwarbler.</pre>",
          "polygon": [
            [
              86.28662109375,
              115.83367919921875
            ],
            [
              288.91265869140625,
              115.83367919921875
            ],
            [
              288.91265869140625,
              165.28887939453125
            ],
            [
              86.28662109375,
              165.28887939453125
            ]
          ],
          "bbox": [
            86.28662109375,
            115.83367919921875,
            288.91265869140625,
            165.28887939453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The * operator also works on strings; it performs repetition. For example, 'Spam'*3 is 'SpamSpamSpam'. If one of the operands is a string, the other has to be an integer.</p>",
          "polygon": [
            [
              86.0625,
              172.86328125
            ],
            [
              482.607421875,
              172.86328125
            ],
            [
              482.607421875,
              196.40887451171875
            ],
            [
              86.0625,
              196.40887451171875
            ]
          ],
          "bbox": [
            86.0625,
            172.86328125,
            482.607421875,
            196.40887451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This use of + and * makes sense by analogy with addition and multiplication. Just as 4*3 is equivalent to 4+4+4, we expect 'Spam'*3 to be the same as 'Spam'+'Spam'+'Spam', and it is. On the other hand, there is a significant way in which string concatenation and repetition are different from integer addition and multiplication. Can you think of a property that addition has that string concatenation does not?</p>",
          "polygon": [
            [
              85.46484375,
              204.767578125
            ],
            [
              482.607421875,
              204.767578125
            ],
            [
              482.607421875,
              264.11187744140625
            ],
            [
              85.46484375,
              264.11187744140625
            ]
          ],
          "bbox": [
            85.46484375,
            204.767578125,
            482.607421875,
            264.11187744140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/36/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/37/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-37-0\"></span><b>2.9 Comments</b></h3>",
          "polygon": [
            [
              86.28662109375,
              291.005859375
            ],
            [
              189.60665893554688,
              291.005859375
            ],
            [
              189.60665893554688,
              306.1039123535156
            ],
            [
              86.28662109375,
              306.1039123535156
            ]
          ],
          "bbox": [
            86.28662109375,
            291.005859375,
            189.60665893554688,
            306.1039123535156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As programs get bigger and more complicated, they get more difficult to read. Formal languages are dense, and it is often difficult to look at a piece of code and figure out what it is doing, or why.</p>",
          "polygon": [
            [
              86.2119140625,
              317.109375
            ],
            [
              482.4034729003906,
              317.109375
            ],
            [
              482.4034729003906,
              351.5888671875
            ],
            [
              86.2119140625,
              351.5888671875
            ]
          ],
          "bbox": [
            86.2119140625,
            317.109375,
            482.4034729003906,
            351.5888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For this reason, it is a good idea to add notes to your programs to explain in natural language what the program is doing. These notes are called <b>comments</b>, and they start with the # symbol:</p>",
          "polygon": [
            [
              85.9130859375,
              360.228515625
            ],
            [
              482.4033508300781,
              360.228515625
            ],
            [
              482.4033508300781,
              394.9028625488281
            ],
            [
              85.9130859375,
              394.9028625488281
            ]
          ],
          "bbox": [
            85.9130859375,
            360.228515625,
            482.4033508300781,
            394.9028625488281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Code/8",
          "block_type": "Code",
          "html": "<pre># compute the percentage of the hour that has elapsed\npercentage = (minute * 100) / 60</pre>",
          "polygon": [
            [
              86.0625,
              399.09375
            ],
            [
              364.271484375,
              399.09375
            ],
            [
              364.271484375,
              421.90130615234375
            ],
            [
              86.0625,
              421.90130615234375
            ]
          ],
          "bbox": [
            86.0625,
            399.09375,
            364.271484375,
            421.90130615234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this case, the comment appears on a line by itself. You can also put comments at the end of a line:</p>",
          "polygon": [
            [
              85.9130859375,
              425.77734375
            ],
            [
              482.40338134765625,
              425.77734375
            ],
            [
              482.40338134765625,
              449.19989013671875
            ],
            [
              85.9130859375,
              449.19989013671875
            ]
          ],
          "bbox": [
            85.9130859375,
            425.77734375,
            482.40338134765625,
            449.19989013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Code/10",
          "block_type": "Code",
          "html": "<pre>percentage = (minute * 100) / 60 # percentage of an hour</pre>",
          "polygon": [
            [
              85.6142578125,
              453.234375
            ],
            [
              400.4296875,
              453.234375
            ],
            [
              400.4296875,
              464.00433349609375
            ],
            [
              85.6142578125,
              464.00433349609375
            ]
          ],
          "bbox": [
            85.6142578125,
            453.234375,
            400.4296875,
            464.00433349609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Everything from the # to the end of the line is ignored—it has no effect on the program.</p>",
          "polygon": [
            [
              85.763671875,
              468.31640625
            ],
            [
              470.056640625,
              468.31640625
            ],
            [
              470.056640625,
              479.10791015625
            ],
            [
              85.763671875,
              479.10791015625
            ]
          ],
          "bbox": [
            85.763671875,
            468.31640625,
            470.056640625,
            479.10791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Comments are most useful when they document non-obvious features of the code. It is reasonable to assume that the reader can figure out <i>what</i> the code does; it is much more useful to explain <i>why</i>.</p>",
          "polygon": [
            [
              85.46484375,
              487.265625
            ],
            [
              483.50390625,
              487.265625
            ],
            [
              483.50390625,
              522.4219055175781
            ],
            [
              85.46484375,
              522.4219055175781
            ]
          ],
          "bbox": [
            85.46484375,
            487.265625,
            483.50390625,
            522.4219055175781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This comment is redundant with the code and useless:</p>",
          "polygon": [
            [
              85.83837890625,
              530.578125
            ],
            [
              326.021484375,
              530.578125
            ],
            [
              326.021484375,
              541.347900390625
            ],
            [
              85.83837890625,
              541.347900390625
            ]
          ],
          "bbox": [
            85.83837890625,
            530.578125,
            326.021484375,
            541.347900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/TextInlineMath/14",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">v = 5  # assign 5 to v</p>",
          "polygon": [
            [
              86.40006256103516,
              546.046875
            ],
            [
              219.638671875,
              546.046875
            ],
            [
              219.638671875,
              556.15234375
            ],
            [
              86.40006256103516,
              556.15234375
            ]
          ],
          "bbox": [
            86.40006256103516,
            546.046875,
            219.638671875,
            556.15234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This comment contains useful information that is not in the code:</p>",
          "polygon": [
            [
              85.6142578125,
              560.35546875
            ],
            [
              373.53515625,
              560.35546875
            ],
            [
              373.53515625,
              571.2558898925781
            ],
            [
              85.6142578125,
              571.2558898925781
            ]
          ],
          "bbox": [
            85.6142578125,
            560.35546875,
            373.53515625,
            571.2558898925781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/208",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">v = 5 # velocity in meters/second.</p>",
          "polygon": [
            [
              85.3154296875,
              575.82421875
            ],
            [
              285.1539001464844,
              575.82421875
            ],
            [
              285.1539001464844,
              586.0603332519531
            ],
            [
              85.3154296875,
              586.0603332519531
            ]
          ],
          "bbox": [
            85.3154296875,
            575.82421875,
            285.1539001464844,
            586.0603332519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Good variable names can reduce the need for comments, but long names can make complex expressions hard to read, so there is a tradeoff.</p>",
          "polygon": [
            [
              85.46484375,
              590.90625
            ],
            [
              482.4033508300781,
              590.90625
            ],
            [
              482.4033508300781,
              613.35888671875
            ],
            [
              85.46484375,
              613.35888671875
            ]
          ],
          "bbox": [
            85.46484375,
            590.90625,
            482.4033508300781,
            613.35888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/37/SectionHeader/18",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-37-1\"></span><b>2.10 Debugging</b></h4>",
          "polygon": [
            [
              85.53955078125,
              640.79296875
            ],
            [
              201.41015625,
              640.79296875
            ],
            [
              201.41015625,
              655.48828125
            ],
            [
              85.53955078125,
              655.48828125
            ]
          ],
          "bbox": [
            85.53955078125,
            640.79296875,
            201.41015625,
            655.48828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/37/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">At this point the syntax error you are most likely to make is an illegal variable name, like class and yield, which are keywords, or odd~job and US$, which contain illegal characters.</p>",
          "polygon": [
            [
              86.0625,
              665.54296875
            ],
            [
              482.40338134765625,
              665.54296875
            ],
            [
              482.40338134765625,
              700.8348846435547
            ],
            [
              86.0625,
              700.8348846435547
            ]
          ],
          "bbox": [
            86.0625,
            665.54296875,
            482.40338134765625,
            700.8348846435547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "2": "/page/36/SectionHeader/4",
        "3": "/page/37/SectionHeader/5",
        "4": "/page/37/SectionHeader/18"
      },
      "images": null
    },
    {
      "id": "/page/38/Page/199",
      "block_type": "Page",
      "html": "<content-ref src='/page/38/PageHeader/0'></content-ref><content-ref src='/page/38/PageHeader/22'></content-ref><content-ref src='/page/38/Text/1'></content-ref><content-ref src='/page/38/Text/2'></content-ref><content-ref src='/page/38/Text/3'></content-ref><content-ref src='/page/38/Text/4'></content-ref><content-ref src='/page/38/Code/5'></content-ref><content-ref src='/page/38/Text/6'></content-ref><content-ref src='/page/38/Text/7'></content-ref><content-ref src='/page/38/TextInlineMath/8'></content-ref><content-ref src='/page/38/Text/9'></content-ref><content-ref src='/page/38/SectionHeader/10'></content-ref><content-ref src='/page/38/Text/11'></content-ref><content-ref src='/page/38/ListGroup/196'></content-ref><content-ref src='/page/38/Text/14'></content-ref><content-ref src='/page/38/Text/15'></content-ref><content-ref src='/page/38/Text/16'></content-ref><content-ref src='/page/38/ListItem/17'></content-ref><content-ref src='/page/38/Text/18'></content-ref><content-ref src='/page/38/Text/19'></content-ref><content-ref src='/page/38/ListGroup/197'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/38/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.49609375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.49609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.49609375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/PageHeader/22",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              60.95654296875
            ],
            [
              525.33984375,
              60.95654296875
            ],
            [
              525.33984375,
              70.04443359375
            ],
            [
              514.58203125,
              70.04443359375
            ]
          ],
          "bbox": [
            514.58203125,
            60.95654296875,
            525.33984375,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you put a space in a variable name, Python thinks it is two operands without an operator:</p>",
          "polygon": [
            [
              127.30078125,
              88.6552734375
            ],
            [
              525.6033325195312,
              88.6552734375
            ],
            [
              525.6033325195312,
              98.79791259765625
            ],
            [
              127.30078125,
              98.79791259765625
            ]
          ],
          "bbox": [
            127.30078125,
            88.6552734375,
            525.6033325195312,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; bad name = 5 SyntaxError: invalid syntax</p>",
          "polygon": [
            [
              127.52490234375,
              105.03375244140625
            ],
            [
              272.53125,
              105.03375244140625
            ],
            [
              272.53125,
              127.1903076171875
            ],
            [
              127.52490234375,
              127.1903076171875
            ]
          ],
          "bbox": [
            127.52490234375,
            105.03375244140625,
            272.53125,
            127.1903076171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For syntax errors, the error messages don't help much. The most common messages are SyntaxError: invalid syntax and SyntaxError: invalid token, neither of which is very informative.</p>",
          "polygon": [
            [
              128.49609375,
              133.7080078125
            ],
            [
              525.9375,
              133.7080078125
            ],
            [
              525.9375,
              168.076904296875
            ],
            [
              128.49609375,
              168.076904296875
            ]
          ],
          "bbox": [
            128.49609375,
            133.7080078125,
            525.9375,
            168.076904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The runtime error you are most likely to make is a \"use before def;\" that is, trying to use a variable before you have assigned a value. This can happen if you spell a variable name wrong:</p>",
          "polygon": [
            [
              128.49609375,
              177.890625
            ],
            [
              525.9375,
              177.890625
            ],
            [
              525.9375,
              212.784912109375
            ],
            [
              128.49609375,
              212.784912109375
            ]
          ],
          "bbox": [
            128.49609375,
            177.890625,
            525.9375,
            212.784912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; principal = 327.68\n&gt;&gt;&gt; interest = principle * rate\nNameError: name 'principle' is not defined</pre>",
          "polygon": [
            [
              127.67431640625,
              219.020751953125
            ],
            [
              354.111328125,
              219.020751953125
            ],
            [
              354.111328125,
              253.371337890625
            ],
            [
              127.67431640625,
              253.371337890625
            ]
          ],
          "bbox": [
            127.67431640625,
            219.020751953125,
            354.111328125,
            253.371337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Variables names are case sensitive, so LaTeX is not the same as latex.</p>",
          "polygon": [
            [
              128.27197265625,
              259.75677490234375
            ],
            [
              433.2556457519531,
              259.75677490234375
            ],
            [
              433.2556457519531,
              269.86895751953125
            ],
            [
              128.27197265625,
              269.86895751953125
            ]
          ],
          "bbox": [
            128.27197265625,
            259.75677490234375,
            433.2556457519531,
            269.86895751953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">At this point the most likely cause of a semantic error is the order of operations. For example, to evaluate 1 2<i>π</i> , you might be tempted to write</p>",
          "polygon": [
            [
              128.794921875,
              279.984375
            ],
            [
              525.6034545898438,
              279.984375
            ],
            [
              525.6034545898438,
              305.7589416503906
            ],
            [
              128.794921875,
              305.7589416503906
            ]
          ],
          "bbox": [
            128.794921875,
            279.984375,
            525.6034545898438,
            305.7589416503906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; 1.0 / 2.0 * pi</p>",
          "polygon": [
            [
              127.7490234375,
              308.6187438964844
            ],
            [
              223.9716796875,
              308.6187438964844
            ],
            [
              223.9716796875,
              318.5813293457031
            ],
            [
              127.7490234375,
              318.5813293457031
            ]
          ],
          "bbox": [
            127.7490234375,
            308.6187438964844,
            223.9716796875,
            318.5813293457031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But the division happens first, so you would get <i>π</i>/2, which is not the same thing! There is no way for Python to know what you meant to write, so in this case you don't get an error message; you just get the wrong answer.</p>",
          "polygon": [
            [
              128.794921875,
              324.45703125
            ],
            [
              525.638671875,
              324.45703125
            ],
            [
              525.638671875,
              359.6484375
            ],
            [
              128.794921875,
              359.6484375
            ]
          ],
          "bbox": [
            128.794921875,
            324.45703125,
            525.638671875,
            359.6484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/37/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/38/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-38-0\"></span><b>2.11 Glossary</b></h4>",
          "polygon": [
            [
              128.3466796875,
              389.354736328125
            ],
            [
              227.2259063720703,
              389.354736328125
            ],
            [
              227.2259063720703,
              403.7009582519531
            ],
            [
              128.3466796875,
              403.7009582519531
            ]
          ],
          "bbox": [
            128.3466796875,
            389.354736328125,
            227.2259063720703,
            403.7009582519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>value:</b> One of the basic units of data, like a number or string, that a program manipulates.</p>",
          "polygon": [
            [
              129.2431640625,
              412.8611755371094
            ],
            [
              525.6029052734375,
              412.8611755371094
            ],
            [
              525.6029052734375,
              422.9208984375
            ],
            [
              129.2431640625,
              422.9208984375
            ]
          ],
          "bbox": [
            129.2431640625,
            412.8611755371094,
            525.6029052734375,
            422.9208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/ListGroup/196",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/38/ListItem/12'></content-ref><content-ref src='/page/38/ListItem/13'></content-ref></ul></p>",
          "polygon": [
            [
              128.0478515625,
              445.11328125
            ],
            [
              525.6011962890625,
              445.11328125
            ],
            [
              525.6011962890625,
              488.2589111328125
            ],
            [
              128.0478515625,
              488.2589111328125
            ]
          ],
          "bbox": [
            128.0478515625,
            445.11328125,
            525.6011962890625,
            488.2589111328125
          ],
          "children": [
            {
              "id": "/page/38/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>type:</b> A category of values. The types we have seen so far are integers (type int), floatingpoint numbers (type float), and strings (type str).</li>",
              "polygon": [
                [
                  128.0478515625,
                  445.11328125
                ],
                [
                  525.6011962890625,
                  445.11328125
                ],
                [
                  525.6011962890625,
                  467.7839050292969
                ],
                [
                  128.0478515625,
                  467.7839050292969
                ]
              ],
              "bbox": [
                128.0478515625,
                445.11328125,
                525.6011962890625,
                467.7839050292969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/38/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/38/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>integer:</b> A type that represents whole numbers.</li>",
              "polygon": [
                [
                  129.09375,
                  478.1991882324219
                ],
                [
                  340.2587890625,
                  478.1991882324219
                ],
                [
                  340.2587890625,
                  488.2589111328125
                ],
                [
                  129.09375,
                  488.2589111328125
                ]
              ],
              "bbox": [
                129.09375,
                478.1991882324219,
                340.2587890625,
                488.2589111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/38/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": null
        },
        {
          "id": "/page/38/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>floating-point:</b> A type that represents numbers with fractional parts.</p>",
          "polygon": [
            [
              129.01904296875,
              498.6741943359375
            ],
            [
              433.0107727050781,
              498.6741943359375
            ],
            [
              433.0107727050781,
              508.7339172363281
            ],
            [
              129.01904296875,
              508.7339172363281
            ]
          ],
          "bbox": [
            129.01904296875,
            498.6741943359375,
            433.0107727050781,
            508.7339172363281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>string:</b> A type that represents sequences of characters.</p>",
          "polygon": [
            [
              129.09375,
              519.1492004394531
            ],
            [
              369.00103759765625,
              519.1492004394531
            ],
            [
              369.00103759765625,
              529.2089233398438
            ],
            [
              129.09375,
              529.2089233398438
            ]
          ],
          "bbox": [
            129.09375,
            519.1492004394531,
            369.00103759765625,
            529.2089233398438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>variable:</b> A name that refers to a value.</p>",
          "polygon": [
            [
              129.01904296875,
              539.6242218017578
            ],
            [
              303.69671630859375,
              539.6242218017578
            ],
            [
              303.69671630859375,
              549.6839294433594
            ],
            [
              129.01904296875,
              549.6839294433594
            ]
          ],
          "bbox": [
            129.01904296875,
            539.6242218017578,
            303.69671630859375,
            549.6839294433594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/ListItem/17",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>statement:</b> A section of code that represents a command or action. So far, the statements we have seen are assignments and print statements.</li>",
          "polygon": [
            [
              128.3466796875,
              559.96875
            ],
            [
              525.6036376953125,
              559.96875
            ],
            [
              525.6036376953125,
              582.3529357910156
            ],
            [
              128.3466796875,
              582.3529357910156
            ]
          ],
          "bbox": [
            128.3466796875,
            559.96875,
            525.6036376953125,
            582.3529357910156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>assignment:</b> A statement that assigns a value to a variable.</p>",
          "polygon": [
            [
              129.60003662109375,
              592.7682342529297
            ],
            [
              390.568359375,
              592.7682342529297
            ],
            [
              390.568359375,
              602.8279418945312
            ],
            [
              129.60003662109375,
              602.8279418945312
            ]
          ],
          "bbox": [
            129.60003662109375,
            592.7682342529297,
            390.568359375,
            602.8279418945312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>state diagram:</b> A graphical representation of a set of variables and the values they refer to.</p>",
          "polygon": [
            [
              128.3466796875,
              613.2432403564453
            ],
            [
              525.6030883789062,
              613.2432403564453
            ],
            [
              525.6030883789062,
              623.3029479980469
            ],
            [
              128.3466796875,
              623.3029479980469
            ]
          ],
          "bbox": [
            128.3466796875,
            613.2432403564453,
            525.6030883789062,
            623.3029479980469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/38/ListGroup/197",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/38/ListItem/20'></content-ref><content-ref src='/page/38/ListItem/21'></content-ref></ul></p>",
          "polygon": [
            [
              128.6455078125,
              645.9122467041016
            ],
            [
              525.9375,
              645.9122467041016
            ],
            [
              525.9375,
              700.8349609375
            ],
            [
              128.6455078125,
              700.8349609375
            ]
          ],
          "bbox": [
            128.6455078125,
            645.9122467041016,
            525.9375,
            700.8349609375
          ],
          "children": [
            {
              "id": "/page/38/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>keyword:</b> A reserved word that is used by the compiler to parse a program; you cannot use keywords like if, def, and while as variable names.</li>",
              "polygon": [
                [
                  128.6455078125,
                  645.9122467041016
                ],
                [
                  525.9375,
                  645.9122467041016
                ],
                [
                  525.9375,
                  668.1659622192383
                ],
                [
                  128.6455078125,
                  668.1659622192383
                ]
              ],
              "bbox": [
                128.6455078125,
                645.9122467041016,
                525.9375,
                668.1659622192383
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/38/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/38/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>operator:</b> A special symbol that represents a simple computation like addition, multiplication, or string concatenation.</li>",
              "polygon": [
                [
                  128.6455078125,
                  678.5812454223633
                ],
                [
                  525.6028442382812,
                  678.5812454223633
                ],
                [
                  525.6028442382812,
                  700.8349609375
                ],
                [
                  128.6455078125,
                  700.8349609375
                ]
              ],
              "bbox": [
                128.6455078125,
                678.5812454223633,
                525.6028442382812,
                700.8349609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/38/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "2": "/page/36/SectionHeader/4",
        "3": "/page/37/SectionHeader/5",
        "4": "/page/38/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/39/Page/161",
      "block_type": "Page",
      "html": "<content-ref src='/page/39/PageHeader/0'></content-ref><content-ref src='/page/39/PageHeader/17'></content-ref><content-ref src='/page/39/Text/1'></content-ref><content-ref src='/page/39/Text/2'></content-ref><content-ref src='/page/39/ListGroup/159'></content-ref><content-ref src='/page/39/Text/6'></content-ref><content-ref src='/page/39/ListItem/7'></content-ref><content-ref src='/page/39/SectionHeader/8'></content-ref><content-ref src='/page/39/Text/9'></content-ref><content-ref src='/page/39/Code/10'></content-ref><content-ref src='/page/39/Text/11'></content-ref><content-ref src='/page/39/Code/12'></content-ref><content-ref src='/page/39/Text/13'></content-ref><content-ref src='/page/39/ListGroup/160'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/39/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.908203125
            ],
            [
              483.205078125,
              60.908203125
            ],
            [
              483.205078125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.908203125,
            483.205078125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/39/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              61.24658203125
            ],
            [
              96.29736328125,
              61.24658203125
            ],
            [
              96.29736328125,
              69.94775390625
            ],
            [
              85.53955078125,
              69.94775390625
            ]
          ],
          "bbox": [
            85.53955078125,
            61.24658203125,
            96.29736328125,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/39/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>operand:</b> One of the values on which an operator operates.</p>",
          "polygon": [
            [
              85.3154296875,
              88.171875
            ],
            [
              349.03125,
              88.171875
            ],
            [
              349.03125,
              98.79791259765625
            ],
            [
              85.3154296875,
              98.79791259765625
            ]
          ],
          "bbox": [
            85.3154296875,
            88.171875,
            349.03125,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/39/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>floor division:</b> The operation that divides two numbers and chops off the fraction part.</p>",
          "polygon": [
            [
              85.46484375,
              108.66796875
            ],
            [
              470.6571350097656,
              108.66796875
            ],
            [
              470.6571350097656,
              118.9619140625
            ],
            [
              85.46484375,
              118.9619140625
            ]
          ],
          "bbox": [
            85.46484375,
            108.66796875,
            470.6571350097656,
            118.9619140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/39/ListGroup/159",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/39/ListItem/3'></content-ref><content-ref src='/page/39/ListItem/4'></content-ref><content-ref src='/page/39/ListItem/5'></content-ref></ul></p>",
          "polygon": [
            [
              85.6142578125,
              128.970703125
            ],
            [
              482.90625,
              128.970703125
            ],
            [
              482.90625,
              216.03887939453125
            ],
            [
              85.6142578125,
              216.03887939453125
            ]
          ],
          "bbox": [
            85.6142578125,
            128.970703125,
            482.90625,
            216.03887939453125
          ],
          "children": [
            {
              "id": "/page/39/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>expression:</b> A combination of variables, operators, and values that represents a single result value.</li>",
              "polygon": [
                [
                  85.763671875,
                  128.970703125
                ],
                [
                  482.4032287597656,
                  128.970703125
                ],
                [
                  482.4032287597656,
                  151.32086181640625
                ],
                [
                  85.763671875,
                  151.32086181640625
                ]
              ],
              "bbox": [
                85.763671875,
                128.970703125,
                482.4032287597656,
                151.32086181640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/38/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/39/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>evaluate:</b> To simplify an expression by performing the operations in order to yield a single value.</li>",
              "polygon": [
                [
                  85.763671875,
                  161.26171875
                ],
                [
                  482.4038391113281,
                  161.26171875
                ],
                [
                  482.4038391113281,
                  183.67987060546875
                ],
                [
                  85.763671875,
                  183.67987060546875
                ]
              ],
              "bbox": [
                85.763671875,
                161.26171875,
                482.4038391113281,
                183.67987060546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/38/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/39/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>rules of precedence:</b> The set of rules governing the order in which expressions involving multiple operators and operands are evaluated.</li>",
              "polygon": [
                [
                  85.6142578125,
                  193.6494140625
                ],
                [
                  482.90625,
                  193.6494140625
                ],
                [
                  482.90625,
                  216.03887939453125
                ],
                [
                  85.6142578125,
                  216.03887939453125
                ]
              ],
              "bbox": [
                85.6142578125,
                193.6494140625,
                482.90625,
                216.03887939453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/38/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": null
        },
        {
          "id": "/page/39/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>concatenate:</b> To join two operands end-to-end.</p>",
          "polygon": [
            [
              85.83837890625,
              225.84375
            ],
            [
              293.40240478515625,
              225.84375
            ],
            [
              293.40240478515625,
              236.202880859375
            ],
            [
              85.83837890625,
              236.202880859375
            ]
          ],
          "bbox": [
            85.83837890625,
            225.84375,
            293.40240478515625,
            236.202880859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/39/ListItem/7",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>comment:</b> Information in a program that is meant for other programmers (or anyone reading the source code) and has no effect on the execution of the program.</li>",
          "polygon": [
            [
              86.0625,
              246.146484375
            ],
            [
              482.40338134765625,
              246.146484375
            ],
            [
              482.40338134765625,
              268.5618896484375
            ],
            [
              86.0625,
              268.5618896484375
            ]
          ],
          "bbox": [
            86.0625,
            246.146484375,
            482.40338134765625,
            268.5618896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/38/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/39/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-39-0\"></span><b>2.12 Exercises</b></h4>",
          "polygon": [
            [
              85.39013671875,
              297.7734375
            ],
            [
              185.60400390625,
              297.7734375
            ],
            [
              185.60400390625,
              312.24993896484375
            ],
            [
              85.39013671875,
              312.24993896484375
            ]
          ],
          "bbox": [
            85.39013671875,
            297.7734375,
            185.60400390625,
            312.24993896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/39/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/39/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 2.2.</b> <i>Assume that we execute the following assignment statements:</i></p>",
          "polygon": [
            [
              85.46484375,
              324.4225769042969
            ],
            [
              393.47760009765625,
              324.4225769042969
            ],
            [
              393.47760009765625,
              334.46075439453125
            ],
            [
              85.46484375,
              334.46075439453125
            ]
          ],
          "bbox": [
            85.46484375,
            324.4225769042969,
            393.47760009765625,
            334.46075439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/39/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/39/Code/10",
          "block_type": "Code",
          "html": "<pre>width = 17\nheight = 12.0\ndelimiter = '.'</pre>",
          "polygon": [
            [
              85.68896484375,
              340.6116943359375
            ],
            [
              164.83837890625,
              340.6116943359375
            ],
            [
              164.83837890625,
              374.9632873535156
            ],
            [
              85.68896484375,
              374.9632873535156
            ]
          ],
          "bbox": [
            85.68896484375,
            340.6116943359375,
            164.83837890625,
            374.9632873535156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/39/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/39/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>For each of the following expressions, write the value of the expression and the type (of the value of</i> <i>the expression).</i></p>",
          "polygon": [
            [
              86.40001678466797,
              381.111328125
            ],
            [
              482.4034423828125,
              381.111328125
            ],
            [
              482.4034423828125,
              403.3001708984375
            ],
            [
              86.40001678466797,
              403.3001708984375
            ]
          ],
          "bbox": [
            86.40001678466797,
            381.111328125,
            482.4034423828125,
            403.3001708984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/39/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/39/Code/12",
          "block_type": "Code",
          "html": "<pre>1. width/2\n2. width/2.0\n3. height/3\n4. 1 + 2 * 5\n5. delimiter * 5</pre>",
          "polygon": [
            [
              98.015625,
              416.109375
            ],
            [
              179.30177307128906,
              416.109375
            ],
            [
              179.30177307128906,
              508.1163024902344
            ],
            [
              98.015625,
              508.1163024902344
            ]
          ],
          "bbox": [
            98.015625,
            416.109375,
            179.30177307128906,
            508.1163024902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/39/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/39/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Use the Python interpreter to check your answers.</i> <b>Exercise 2.3.</b> <i>Practice using the Python interpreter as a calculator:</i></p>",
          "polygon": [
            [
              85.6142578125,
              521.68359375
            ],
            [
              358.59375,
              521.68359375
            ],
            [
              358.59375,
              544.4997863769531
            ],
            [
              85.6142578125,
              544.4997863769531
            ]
          ],
          "bbox": [
            85.6142578125,
            521.68359375,
            358.59375,
            544.4997863769531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/39/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/39/ListGroup/160",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/39/ListItem/14'></content-ref><content-ref src='/page/39/ListItem/15'></content-ref><content-ref src='/page/39/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              97.8662109375,
              556.5590209960938
            ],
            [
              482.4039001464844,
              556.5590209960938
            ],
            [
              482.4039001464844,
              657.6662139892578
            ],
            [
              97.8662109375,
              657.6662139892578
            ]
          ],
          "bbox": [
            97.8662109375,
            556.5590209960938,
            482.4039001464844,
            657.6662139892578
          ],
          "children": [
            {
              "id": "/page/39/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. The volume of a sphere with radius r is</i> 4 3 <i>π</i><i>r</i> 3 <i>. What is the volume of a sphere with radius 5?</i> <i>Hint: 392.7 is wrong!</i></li>",
              "polygon": [
                [
                  98.61328125,
                  556.5590209960938
                ],
                [
                  482.39703369140625,
                  556.5590209960938
                ],
                [
                  482.39703369140625,
                  580.7542114257812
                ],
                [
                  98.61328125,
                  580.7542114257812
                ]
              ],
              "bbox": [
                98.61328125,
                556.5590209960938,
                482.39703369140625,
                580.7542114257812
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/39/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/39/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Suppose the cover price of a book is $24.95, but bookstores get a 40% discount. Shipping costs</i> <i>$3 for the first copy and 75 cents for each additional copy. What is the total wholesale cost for</i> <i>60 copies?</i></li>",
              "polygon": [
                [
                  98.015625,
                  590.90625
                ],
                [
                  482.4039001464844,
                  590.90625
                ],
                [
                  482.4039001464844,
                  625.3072204589844
                ],
                [
                  98.015625,
                  625.3072204589844
                ]
              ],
              "bbox": [
                98.015625,
                590.90625,
                482.4039001464844,
                625.3072204589844
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/39/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/39/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. If I leave my house at 6:52 am and run 1 mile at an easy pace (8:15 per mile), then 3 miles at</i> <i>tempo (7:12 per mile) and 1 mile at easy pace again, what time do I get home for breakfast?</i></li>",
              "polygon": [
                [
                  97.8662109375,
                  635.37890625
                ],
                [
                  482.40313720703125,
                  635.37890625
                ],
                [
                  482.40313720703125,
                  657.6662139892578
                ],
                [
                  97.8662109375,
                  657.6662139892578
                ]
              ],
              "bbox": [
                97.8662109375,
                635.37890625,
                482.40313720703125,
                657.6662139892578
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/32/SectionHeader/1",
                "2": "/page/36/SectionHeader/4",
                "3": "/page/37/SectionHeader/5",
                "4": "/page/39/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/36/SectionHeader/4",
            "3": "/page/37/SectionHeader/5",
            "4": "/page/39/SectionHeader/8"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/32/SectionHeader/1",
        "2": "/page/36/SectionHeader/4",
        "3": "/page/37/SectionHeader/5",
        "4": "/page/39/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/40/Page/120",
      "block_type": "Page",
      "html": "<content-ref src='/page/40/SectionHeader/0'></content-ref><content-ref src='/page/40/SectionHeader/1'></content-ref><content-ref src='/page/40/SectionHeader/2'></content-ref><content-ref src='/page/40/Text/3'></content-ref><content-ref src='/page/40/Text/4'></content-ref><content-ref src='/page/40/Text/5'></content-ref><content-ref src='/page/40/Text/6'></content-ref><content-ref src='/page/40/SectionHeader/7'></content-ref><content-ref src='/page/40/Text/8'></content-ref><content-ref src='/page/40/Code/9'></content-ref><content-ref src='/page/40/Text/10'></content-ref><content-ref src='/page/40/Code/11'></content-ref><content-ref src='/page/40/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/40/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-40-0\"></span><b>Chapter 3</b></h2>",
          "polygon": [
            [
              128.27197265625,
              164.6455078125
            ],
            [
              220.84561157226562,
              164.6455078125
            ],
            [
              220.84561157226562,
              185.87091064453125
            ],
            [
              128.27197265625,
              185.87091064453125
            ]
          ],
          "bbox": [
            128.27197265625,
            164.6455078125,
            220.84561157226562,
            185.87091064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/32/SectionHeader/1",
            "2": "/page/40/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/40/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Functions</b></h1>",
          "polygon": [
            [
              128.49609375,
              221.65228271484375
            ],
            [
              242.349609375,
              221.65228271484375
            ],
            [
              242.349609375,
              246.4393310546875
            ],
            [
              128.49609375,
              246.4393310546875
            ]
          ],
          "bbox": [
            128.49609375,
            221.65228271484375,
            242.349609375,
            246.4393310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/40/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-40-1\"></span><b>3.1 Function calls</b></h4>",
          "polygon": [
            [
              128.86962890625,
              296.033203125
            ],
            [
              253.1064453125,
              296.033203125
            ],
            [
              253.1064453125,
              310.75994873046875
            ],
            [
              128.86962890625,
              310.75994873046875
            ]
          ],
          "bbox": [
            128.86962890625,
            296.033203125,
            253.1064453125,
            310.75994873046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "4": "/page/40/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/40/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the context of programming, a <b>function</b> is a named sequence of statements that performs a computation. When you define a function, you specify the name and the sequence of statements. Later, you can \"call\" the function by name. We have already seen one example of a <b>function call</b>:</p>",
          "polygon": [
            [
              129.5419921875,
              324.263671875
            ],
            [
              526.53515625,
              324.263671875
            ],
            [
              526.53515625,
              371.17388916015625
            ],
            [
              129.5419921875,
              371.17388916015625
            ]
          ],
          "bbox": [
            129.5419921875,
            324.263671875,
            526.53515625,
            371.17388916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "4": "/page/40/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/40/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; type(32) &lt;type 'int'&gt;</p>",
          "polygon": [
            [
              128.49609375,
              378.2109375
            ],
            [
              193.04296875,
              378.2109375
            ],
            [
              193.04296875,
              400.4713134765625
            ],
            [
              128.49609375,
              400.4713134765625
            ]
          ],
          "bbox": [
            128.49609375,
            378.2109375,
            193.04296875,
            400.4713134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "4": "/page/40/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/40/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The name of the function is type. The expression in parentheses is called the <b>argument</b> of the function. The result, for this function, is the type of the argument.</p>",
          "polygon": [
            [
              129.60000610351562,
              406.44140625
            ],
            [
              526.236328125,
              406.44140625
            ],
            [
              526.236328125,
              430.0688781738281
            ],
            [
              129.60000610351562,
              430.0688781738281
            ]
          ],
          "bbox": [
            129.60000610351562,
            406.44140625,
            526.236328125,
            430.0688781738281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "4": "/page/40/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/40/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is common to say that a function \"takes\" an argument and \"returns\" a result. The result is called the <b>return value</b>.</p>",
          "polygon": [
            [
              128.794921875,
              440.859375
            ],
            [
              526.236328125,
              440.859375
            ],
            [
              526.236328125,
              463.4878845214844
            ],
            [
              128.794921875,
              463.4878845214844
            ]
          ],
          "bbox": [
            128.794921875,
            440.859375,
            526.236328125,
            463.4878845214844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "4": "/page/40/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/40/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-40-2\"></span><b>3.2 Type conversion functions</b></h3>",
          "polygon": [
            [
              127.8984375,
              495.38671875
            ],
            [
              335.12371826171875,
              495.38671875
            ],
            [
              335.12371826171875,
              510.4379577636719
            ],
            [
              127.8984375,
              510.4379577636719
            ]
          ],
          "bbox": [
            127.8984375,
            495.38671875,
            335.12371826171875,
            510.4379577636719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/40/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python provides built-in functions that convert values from one type to another. The int function takes any value and converts it to an integer, if it can, or complains otherwise:</p>",
          "polygon": [
            [
              128.794921875,
              524.00390625
            ],
            [
              525.6041259765625,
              524.00390625
            ],
            [
              525.6041259765625,
              546.4618835449219
            ],
            [
              128.794921875,
              546.4618835449219
            ]
          ],
          "bbox": [
            128.794921875,
            524.00390625,
            525.6041259765625,
            546.4618835449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/40/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; int('32')\n32\n&gt;&gt;&gt; int('Hello')\nValueError: invalid literal for int(): Hello</pre>",
          "polygon": [
            [
              129.60003662109375,
              553.6027374267578
            ],
            [
              359.7460021972656,
              553.6027374267578
            ],
            [
              359.7460021972656,
              602.12109375
            ],
            [
              129.60003662109375,
              602.12109375
            ]
          ],
          "bbox": [
            129.60003662109375,
            553.6027374267578,
            359.7460021972656,
            602.12109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/40/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">int can convert floating-point values to integers, but it doesn't round off; it chops off the fraction part:</p>",
          "polygon": [
            [
              129.392578125,
              607.1484375
            ],
            [
              525.638671875,
              607.1484375
            ],
            [
              525.638671875,
              629.7458953857422
            ],
            [
              129.392578125,
              629.7458953857422
            ]
          ],
          "bbox": [
            129.392578125,
            607.1484375,
            525.638671875,
            629.7458953857422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/40/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; int(3.99999)\n3\n&gt;&gt;&gt; int(-2.3)\n-2</pre>",
          "polygon": [
            [
              129.60003662109375,
              635.765625
            ],
            [
              213.29583740234375,
              635.765625
            ],
            [
              213.29583740234375,
              684.4921875
            ],
            [
              129.60003662109375,
              684.4921875
            ]
          ],
          "bbox": [
            129.60003662109375,
            635.765625,
            213.29583740234375,
            684.4921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/40/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">float converts integers and strings to floating-point numbers:</p>",
          "polygon": [
            [
              128.57080078125,
              690.29296875
            ],
            [
              403.44549560546875,
              690.29296875
            ],
            [
              403.44549560546875,
              700.8349075317383
            ],
            [
              128.57080078125,
              700.8349075317383
            ]
          ],
          "bbox": [
            128.57080078125,
            690.29296875,
            403.44549560546875,
            700.8349075317383
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/40/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/41/Page/200",
      "block_type": "Page",
      "html": "<content-ref src='/page/41/PageHeader/0'></content-ref><content-ref src='/page/41/PageHeader/16'></content-ref><content-ref src='/page/41/Code/1'></content-ref><content-ref src='/page/41/SectionHeader/2'></content-ref><content-ref src='/page/41/Text/3'></content-ref><content-ref src='/page/41/Text/4'></content-ref><content-ref src='/page/41/Code/5'></content-ref><content-ref src='/page/41/Text/6'></content-ref><content-ref src='/page/41/Code/7'></content-ref><content-ref src='/page/41/Text/8'></content-ref><content-ref src='/page/41/Code/9'></content-ref><content-ref src='/page/41/Text/10'></content-ref><content-ref src='/page/41/Text/11'></content-ref><content-ref src='/page/41/Code/12'></content-ref><content-ref src='/page/41/Text/13'></content-ref><content-ref src='/page/41/Text/14'></content-ref><content-ref src='/page/41/TextInlineMath/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/41/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.4034118652344,
              60.85986328125
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/41/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.13720703125,
              60.76318359375
            ],
            [
              97.64208984375,
              60.76318359375
            ],
            [
              97.64208984375,
              69.94775390625
            ],
            [
              86.13720703125,
              69.94775390625
            ]
          ],
          "bbox": [
            86.13720703125,
            60.76318359375,
            97.64208984375,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/41/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; float(32)\n32.0\n&gt;&gt;&gt; float('3.14159')\n3.14159\nFinally, str converts its argument to a string:\n&gt;&gt;&gt; str(32)\n'32'\n&gt;&gt;&gt; str(3.14159)\n'3.14159'</pre>",
          "polygon": [
            [
              86.4000015258789,
              86.67333984375
            ],
            [
              284.00372314453125,
              86.67333984375
            ],
            [
              284.00372314453125,
              203.2852783203125
            ],
            [
              86.4000015258789,
              203.2852783203125
            ]
          ],
          "bbox": [
            86.4000015258789,
            86.67333984375,
            284.00372314453125,
            203.2852783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/40/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/41/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-41-0\"></span><b>3.3 Math functions</b></h3>",
          "polygon": [
            [
              85.83837890625,
              231.064453125
            ],
            [
              219.475341796875,
              231.064453125
            ],
            [
              219.475341796875,
              246.52093505859375
            ],
            [
              85.83837890625,
              246.52093505859375
            ]
          ],
          "bbox": [
            85.83837890625,
            231.064453125,
            219.475341796875,
            246.52093505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python has a math module that provides most of the familiar mathematical functions. A <b>module</b> is a file that contains a collection of related functions.</p>",
          "polygon": [
            [
              86.0625,
              257.748046875
            ],
            [
              482.40325927734375,
              257.748046875
            ],
            [
              482.40325927734375,
              280.5939025878906
            ],
            [
              86.0625,
              280.5939025878906
            ]
          ],
          "bbox": [
            86.0625,
            257.748046875,
            482.40325927734375,
            280.5939025878906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Before we can use the module, we have to import it:</p>",
          "polygon": [
            [
              85.763671875,
              290.232421875
            ],
            [
              315.5625,
              290.232421875
            ],
            [
              315.5625,
              300.3009033203125
            ],
            [
              85.763671875,
              300.3009033203125
            ]
          ],
          "bbox": [
            85.763671875,
            290.232421875,
            315.5625,
            300.3009033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; import math</pre>",
          "polygon": [
            [
              85.9130859375,
              305.92474365234375
            ],
            [
              164.85548400878906,
              305.92474365234375
            ],
            [
              164.85548400878906,
              315.8873291015625
            ],
            [
              85.9130859375,
              315.8873291015625
            ]
          ],
          "bbox": [
            85.9130859375,
            305.92474365234375,
            164.85548400878906,
            315.8873291015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This statement creates a <b>module object</b> named math. If you print the module object, you get some information about it:</p>",
          "polygon": [
            [
              85.6142578125,
              321.7131652832031
            ],
            [
              482.4033203125,
              321.7131652832031
            ],
            [
              482.4033203125,
              343.9668884277344
            ],
            [
              85.6142578125,
              343.9668884277344
            ]
          ],
          "bbox": [
            85.6142578125,
            321.7131652832031,
            482.4033203125,
            343.9668884277344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print math\n&lt;module 'math' (built-in)&gt;</pre>",
          "polygon": [
            [
              85.3154296875,
              349.5907287597656
            ],
            [
              223.6728515625,
              349.5907287597656
            ],
            [
              223.6728515625,
              371.747314453125
            ],
            [
              85.3154296875,
              371.747314453125
            ]
          ],
          "bbox": [
            85.3154296875,
            349.5907287597656,
            223.6728515625,
            371.747314453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The module object contains the functions and variables defined in the module. To access one of the functions, you have to specify the name of the module and the name of the function, separated by a dot (also known as a period). This format is called <b>dot notation</b>.</p>",
          "polygon": [
            [
              85.166015625,
              377.4375
            ],
            [
              482.4034118652344,
              377.4375
            ],
            [
              482.4034118652344,
              412.0208740234375
            ],
            [
              85.166015625,
              412.0208740234375
            ]
          ],
          "bbox": [
            85.166015625,
            377.4375,
            482.4034118652344,
            412.0208740234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; ratio = signal_power / noise_power\n&gt;&gt;&gt; decibels = 10 * math.log10(ratio)\n&gt;&gt;&gt; radians = 0.7\n&gt;&gt;&gt; height = math.sin(radians)</pre>",
          "polygon": [
            [
              85.9130859375,
              417.64471435546875
            ],
            [
              285.1637878417969,
              417.64471435546875
            ],
            [
              285.1637878417969,
              476.3843078613281
            ],
            [
              85.9130859375,
              476.3843078613281
            ]
          ],
          "bbox": [
            85.9130859375,
            417.64471435546875,
            285.1637878417969,
            476.3843078613281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first example uses log10 to compute a signal-to-noise ratio in decibels (assuming that signal_power and noise_power are defined). The math module also provides log, which computes logarithms base e.</p>",
          "polygon": [
            [
              85.763671875,
              482.15771484375
            ],
            [
              482.4012451171875,
              482.15771484375
            ],
            [
              482.4012451171875,
              516.6588745117188
            ],
            [
              85.763671875,
              516.6588745117188
            ]
          ],
          "bbox": [
            85.763671875,
            482.15771484375,
            482.4012451171875,
            516.6588745117188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second example finds the sine of radians. The name of the variable is a hint that sin and the other trigonometric functions (cos, tan, etc.) take arguments in radians. To convert from degrees to radians, divide by 360 and multiply by 2<i>π</i>:</p>",
          "polygon": [
            [
              86.0625,
              525.9375
            ],
            [
              482.404052734375,
              525.9375
            ],
            [
              482.404052734375,
              561.5645294189453
            ],
            [
              86.0625,
              561.5645294189453
            ]
          ],
          "bbox": [
            86.0625,
            525.9375,
            482.404052734375,
            561.5645294189453
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; degrees = 45\n&gt;&gt;&gt; radians = degrees / 360.0 * 2 * math.pi\n&gt;&gt;&gt; math.sin(radians)\n0.707106781187</pre>",
          "polygon": [
            [
              86.0625,
              566.3787231445312
            ],
            [
              311.3155517578125,
              566.3787231445312
            ],
            [
              311.3155517578125,
              612.9243316650391
            ],
            [
              86.0625,
              612.9243316650391
            ]
          ],
          "bbox": [
            86.0625,
            566.3787231445312,
            311.3155517578125,
            612.9243316650391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The expression math.pi gets the variable pi from the math module. The value of this variable is an approximation of <i>π</i>, accurate to about 15 digits.</p>",
          "polygon": [
            [
              85.763671875,
              618.6967315673828
            ],
            [
              482.39642333984375,
              618.6967315673828
            ],
            [
              482.39642333984375,
              641.8135375976562
            ],
            [
              85.763671875,
              641.8135375976562
            ]
          ],
          "bbox": [
            85.763671875,
            618.6967315673828,
            482.39642333984375,
            641.8135375976562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you know your trigonometry, you can check the previous result by comparing it to the square root of two divided by two:</p>",
          "polygon": [
            [
              85.3154296875,
              650.07421875
            ],
            [
              482.40338134765625,
              650.07421875
            ],
            [
              482.40338134765625,
              672.904899597168
            ],
            [
              85.3154296875,
              672.904899597168
            ]
          ],
          "bbox": [
            85.3154296875,
            650.07421875,
            482.40338134765625,
            672.904899597168
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/41/TextInlineMath/15",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; math.sqrt(2) / 2.0 0.707106781187</p>",
          "polygon": [
            [
              85.3154296875,
              678.5287322998047
            ],
            [
              201.4779510498047,
              678.5287322998047
            ],
            [
              201.4779510498047,
              700.6853332519531
            ],
            [
              85.3154296875,
              700.6853332519531
            ]
          ],
          "bbox": [
            85.3154296875,
            678.5287322998047,
            201.4779510498047,
            700.6853332519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/41/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/42/Page/162",
      "block_type": "Page",
      "html": "<content-ref src='/page/42/PageHeader/0'></content-ref><content-ref src='/page/42/PageHeader/18'></content-ref><content-ref src='/page/42/SectionHeader/1'></content-ref><content-ref src='/page/42/Text/2'></content-ref><content-ref src='/page/42/Text/3'></content-ref><content-ref src='/page/42/Code/4'></content-ref><content-ref src='/page/42/Text/5'></content-ref><content-ref src='/page/42/TextInlineMath/6'></content-ref><content-ref src='/page/42/Text/7'></content-ref><content-ref src='/page/42/Code/159'></content-ref><content-ref src='/page/42/SectionHeader/9'></content-ref><content-ref src='/page/42/Text/10'></content-ref><content-ref src='/page/42/Text/11'></content-ref><content-ref src='/page/42/Code/12'></content-ref><content-ref src='/page/42/Text/13'></content-ref><content-ref src='/page/42/Text/14'></content-ref><content-ref src='/page/42/Text/15'></content-ref><content-ref src='/page/42/Text/16'></content-ref><content-ref src='/page/42/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/42/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.86962890625,
              60.85986328125
            ],
            [
              525.6033935546875,
              60.85986328125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.86962890625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.86962890625,
            60.85986328125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/42/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              61.0048828125
            ],
            [
              525.33984375,
              61.0048828125
            ],
            [
              525.33984375,
              70.4794921875
            ],
            [
              514.58203125,
              70.4794921875
            ]
          ],
          "bbox": [
            514.58203125,
            61.0048828125,
            525.33984375,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/42/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-42-0\"></span><b>3.4 Composition</b></h4>",
          "polygon": [
            [
              129.09375,
              85.63177490234375
            ],
            [
              247.15277099609375,
              85.63177490234375
            ],
            [
              247.15277099609375,
              99.97796630859375
            ],
            [
              129.09375,
              99.97796630859375
            ]
          ],
          "bbox": [
            129.09375,
            85.63177490234375,
            247.15277099609375,
            99.97796630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So far, we have looked at the elements of a program—variables, expressions, and statements—in isolation, without talking about how to combine them.</p>",
          "polygon": [
            [
              129.09375,
              112.8251953125
            ],
            [
              525.6033935546875,
              112.8251953125
            ],
            [
              525.6033935546875,
              135.54193115234375
            ],
            [
              129.09375,
              135.54193115234375
            ]
          ],
          "bbox": [
            129.09375,
            112.8251953125,
            525.6033935546875,
            135.54193115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the most useful features of programming languages is their ability to take small building blocks and <b>compose</b> them. For example, the argument of a function can be any kind of expression, including arithmetic operators:</p>",
          "polygon": [
            [
              129.09375,
              146.1796875
            ],
            [
              525.603271484375,
              146.1796875
            ],
            [
              525.603271484375,
              180.82696533203125
            ],
            [
              129.09375,
              180.82696533203125
            ]
          ],
          "bbox": [
            129.09375,
            146.1796875,
            525.603271484375,
            180.82696533203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/Code/4",
          "block_type": "Code",
          "html": "<pre>x = math.sin(degrees / 360.0 * 2 * math.pi)</pre>",
          "polygon": [
            [
              127.97314453125,
              187.0751953125
            ],
            [
              354.5155944824219,
              187.0751953125
            ],
            [
              354.5155944824219,
              197.60235595703125
            ],
            [
              127.97314453125,
              197.60235595703125
            ]
          ],
          "bbox": [
            127.97314453125,
            187.0751953125,
            354.5155944824219,
            197.60235595703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And even function calls:</p>",
          "polygon": [
            [
              129.2431640625,
              203.994140625
            ],
            [
              236.52859497070312,
              203.994140625
            ],
            [
              236.52859497070312,
              214.67596435546875
            ],
            [
              129.2431640625,
              214.67596435546875
            ]
          ],
          "bbox": [
            129.2431640625,
            203.994140625,
            236.52859497070312,
            214.67596435546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/TextInlineMath/6",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">x = math.exp(math.log(x + 1))</p>",
          "polygon": [
            [
              129.60000610351562,
              221.48876953125
            ],
            [
              272.3818359375,
              221.48876953125
            ],
            [
              272.3818359375,
              231.45135498046875
            ],
            [
              129.60000610351562,
              231.45135498046875
            ]
          ],
          "bbox": [
            129.60000610351562,
            221.48876953125,
            272.3818359375,
            231.45135498046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Almost anywhere you can put a value, you can put an arbitrary expression, with one exception: the left side of an assignment statement has to be a variable name. Any other expression on the left side is a syntax error (we will see exceptions to this rule later).</p>",
          "polygon": [
            [
              128.3466796875,
              238.56231689453125
            ],
            [
              525.6034545898438,
              238.56231689453125
            ],
            [
              525.6034545898438,
              272.91400146484375
            ],
            [
              128.3466796875,
              272.91400146484375
            ]
          ],
          "bbox": [
            128.3466796875,
            238.56231689453125,
            525.6034545898438,
            272.91400146484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/Code/159",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; minutes = hours * 60 # right\n&gt;&gt;&gt; hours * 60 = minutes # wrong!\nSyntaxError: can't assign to operator</pre>",
          "polygon": [
            [
              129.16845703125,
              279.726806640625
            ],
            [
              385.8679504394531,
              279.726806640625
            ],
            [
              385.8679504394531,
              314.077392578125
            ],
            [
              129.16845703125,
              314.077392578125
            ]
          ],
          "bbox": [
            129.16845703125,
            279.726806640625,
            385.8679504394531,
            314.077392578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/42/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-42-1\"></span><b>3.5 Adding new functions</b></h4>",
          "polygon": [
            [
              128.197265625,
              341.8738098144531
            ],
            [
              309.3005065917969,
              341.8738098144531
            ],
            [
              309.3005065917969,
              356.22003173828125
            ],
            [
              128.197265625,
              356.22003173828125
            ]
          ],
          "bbox": [
            128.197265625,
            341.8738098144531,
            309.3005065917969,
            356.22003173828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So far, we have only been using the functions that come with Python, but it is also possible to add new functions. A <b>function definition</b> specifies the name of a new function and the sequence of statements that execute when the function is called.</p>",
          "polygon": [
            [
              128.3466796875,
              369.31640625
            ],
            [
              525.6048583984375,
              369.31640625
            ],
            [
              525.6048583984375,
              403.9789733886719
            ],
            [
              128.3466796875,
              403.9789733886719
            ]
          ],
          "bbox": [
            128.3466796875,
            369.31640625,
            525.6048583984375,
            403.9789733886719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an example:</p>",
          "polygon": [
            [
              128.57080078125,
              414.17578125
            ],
            [
              217.248046875,
              414.17578125
            ],
            [
              217.248046875,
              424.8749694824219
            ],
            [
              128.57080078125,
              424.8749694824219
            ]
          ],
          "bbox": [
            128.57080078125,
            414.17578125,
            217.248046875,
            424.8749694824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Code/12",
          "block_type": "Code",
          "html": "<pre>def print_lyrics():\n    print \"I'm a lumberjack, and I'm okay.\"\n    print \"I sleep all night and I work all day.\"</pre>",
          "polygon": [
            [
              129.46728515625,
              431.68780517578125
            ],
            [
              385.8923034667969,
              431.68780517578125
            ],
            [
              385.8923034667969,
              466.03839111328125
            ],
            [
              129.46728515625,
              466.03839111328125
            ]
          ],
          "bbox": [
            129.46728515625,
            431.68780517578125,
            385.8923034667969,
            466.03839111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">def is a keyword that indicates that this is a function definition. The name of the function is print_lyrics. The rules for function names are the same as for variable names: letters, numbers and some punctuation marks are legal, but the first character can't be a number. You can't use a keyword as the name of a function, and you should avoid having a variable and a function with the same name.</p>",
          "polygon": [
            [
              128.197265625,
              472.95703125
            ],
            [
              525.638671875,
              472.95703125
            ],
            [
              525.638671875,
              531.8899536132812
            ],
            [
              128.197265625,
              531.8899536132812
            ]
          ],
          "bbox": [
            128.197265625,
            472.95703125,
            525.638671875,
            531.8899536132812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The empty parentheses after the name indicate that this function doesn't take any arguments.</p>",
          "polygon": [
            [
              128.0478515625,
              542.56640625
            ],
            [
              525.6033325195312,
              542.56640625
            ],
            [
              525.6033325195312,
              564.98095703125
            ],
            [
              128.0478515625,
              564.98095703125
            ]
          ],
          "bbox": [
            128.0478515625,
            542.56640625,
            525.6033325195312,
            564.98095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line of the function definition is called the <b>header</b>; the rest is called the <b>body</b>. The header has to end with a colon and the body has to be indented. By convention, the indentation is always four spaces (see Section <a href=\"#page-48-1\">3.14)</a>. The body can contain any number of statements.</p>",
          "polygon": [
            [
              128.6455078125,
              575.4375
            ],
            [
              525.9375,
              575.4375
            ],
            [
              525.9375,
              622.4599609375
            ],
            [
              128.6455078125,
              622.4599609375
            ]
          ],
          "bbox": [
            128.6455078125,
            575.4375,
            525.9375,
            622.4599609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The strings in the print statements are enclosed in double quotes. Single quotes and double quotes do the same thing; most people use single quotes except in cases like this where a single quote (which is also an apostrophe) appears in the string.</p>",
          "polygon": [
            [
              128.49609375,
              633.05859375
            ],
            [
              525.6033935546875,
              633.05859375
            ],
            [
              525.6033935546875,
              667.7449645996094
            ],
            [
              128.49609375,
              667.7449645996094
            ]
          ],
          "bbox": [
            128.49609375,
            633.05859375,
            525.6033935546875,
            667.7449645996094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/42/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you type a function definition in interactive mode, the interpreter prints ellipses (<i>...</i>) to let you know that the definition isn't complete:</p>",
          "polygon": [
            [
              127.7490234375,
              678.3046875
            ],
            [
              525.6034545898438,
              678.3046875
            ],
            [
              525.6034545898438,
              700.8349685668945
            ],
            [
              127.7490234375,
              700.8349685668945
            ]
          ],
          "bbox": [
            127.7490234375,
            678.3046875,
            525.6034545898438,
            700.8349685668945
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/41/SectionHeader/2",
        "4": "/page/42/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/43/Page/166",
      "block_type": "Page",
      "html": "<content-ref src='/page/43/PageHeader/0'></content-ref><content-ref src='/page/43/PageHeader/16'></content-ref><content-ref src='/page/43/Code/1'></content-ref><content-ref src='/page/43/Text/2'></content-ref><content-ref src='/page/43/Text/3'></content-ref><content-ref src='/page/43/Code/4'></content-ref><content-ref src='/page/43/Text/5'></content-ref><content-ref src='/page/43/Code/6'></content-ref><content-ref src='/page/43/Text/7'></content-ref><content-ref src='/page/43/Code/8'></content-ref><content-ref src='/page/43/Text/9'></content-ref><content-ref src='/page/43/Code/10'></content-ref><content-ref src='/page/43/SectionHeader/11'></content-ref><content-ref src='/page/43/Text/12'></content-ref><content-ref src='/page/43/Code/13'></content-ref><content-ref src='/page/43/Code/14'></content-ref><content-ref src='/page/43/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/43/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.4034118652344,
              60.8115234375
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.39013671875,
              60.95654296875
            ],
            [
              96.59619140625,
              60.95654296875
            ],
            [
              96.59619140625,
              70.04443359375
            ],
            [
              85.39013671875,
              70.04443359375
            ]
          ],
          "bbox": [
            85.39013671875,
            60.95654296875,
            96.59619140625,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; def print_lyrics():\n... print \"I'm a lumberjack, and I'm okay.\"\n... print \"I sleep all night and I work all day.\"\n...</pre>",
          "polygon": [
            [
              86.2119140625,
              87.205078125
            ],
            [
              366.36328125,
              87.205078125
            ],
            [
              366.36328125,
              135.2313232421875
            ],
            [
              86.2119140625,
              135.2313232421875
            ]
          ],
          "bbox": [
            86.2119140625,
            87.205078125,
            366.36328125,
            135.2313232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To end the function, you have to enter an empty line (this is not necessary in a script).</p>",
          "polygon": [
            [
              86.2119140625,
              140.185546875
            ],
            [
              462.10955810546875,
              140.185546875
            ],
            [
              462.10955810546875,
              150.81292724609375
            ],
            [
              86.2119140625,
              150.81292724609375
            ]
          ],
          "bbox": [
            86.2119140625,
            140.185546875,
            462.10955810546875,
            150.81292724609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Defining a function creates a variable with the same name.</p>",
          "polygon": [
            [
              85.24072265625,
              160.0048828125
            ],
            [
              343.7239685058594,
              160.0048828125
            ],
            [
              343.7239685058594,
              170.2159423828125
            ],
            [
              85.24072265625,
              170.2159423828125
            ]
          ],
          "bbox": [
            85.24072265625,
            160.0048828125,
            343.7239685058594,
            170.2159423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print print_lyrics\n&lt;function print_lyrics at 0xb7e99e9c&gt;\n&gt;&gt;&gt; type(print_lyrics)\n&lt;type 'function'&gt;\nThe value of print_lyrics is a function object, which has type 'function'.</pre>",
          "polygon": [
            [
              84.4189453125,
              175.5357666015625
            ],
            [
              423.8246765136719,
              175.5357666015625
            ],
            [
              423.8246765136719,
              237.6629638671875
            ],
            [
              84.4189453125,
              237.6629638671875
            ]
          ],
          "bbox": [
            84.4189453125,
            175.5357666015625,
            423.8246765136719,
            237.6629638671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The syntax for calling the new function is the same as for built-in functions:</p>",
          "polygon": [
            [
              85.6142578125,
              240.92578125
            ],
            [
              418.359375,
              240.92578125
            ],
            [
              418.359375,
              257.06597900390625
            ],
            [
              85.6142578125,
              257.06597900390625
            ]
          ],
          "bbox": [
            85.6142578125,
            240.92578125,
            418.359375,
            257.06597900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print_lyrics()\nI'm a lumberjack, and I'm okay.\nI sleep all night and I work all day.</pre>",
          "polygon": [
            [
              85.3154296875,
              260.6484375
            ],
            [
              279.9234619140625,
              260.6484375
            ],
            [
              279.9234619140625,
              296.73638916015625
            ],
            [
              85.3154296875,
              296.73638916015625
            ]
          ],
          "bbox": [
            85.3154296875,
            260.6484375,
            279.9234619140625,
            296.73638916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Once you have defined a function, you can use it inside another function. For example, to repeat the previous refrain, we could write a function called repeat_lyrics:</p>",
          "polygon": [
            [
              86.0625,
              302.3553771972656
            ],
            [
              482.4034118652344,
              302.3553771972656
            ],
            [
              482.4034118652344,
              324.511962890625
            ],
            [
              86.0625,
              324.511962890625
            ]
          ],
          "bbox": [
            86.0625,
            302.3553771972656,
            482.4034118652344,
            324.511962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Code/8",
          "block_type": "Code",
          "html": "<pre>def repeat_lyrics():\n    print_lyrics()\n    print_lyrics()</pre>",
          "polygon": [
            [
              85.9130859375,
              329.8318176269531
            ],
            [
              192.4453125,
              329.8318176269531
            ],
            [
              192.4453125,
              364.18341064453125
            ],
            [
              85.9130859375,
              364.18341064453125
            ]
          ],
          "bbox": [
            85.9130859375,
            329.8318176269531,
            192.4453125,
            364.18341064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And then call repeat_lyrics:</p>",
          "polygon": [
            [
              86.361328125,
              369.31640625
            ],
            [
              219.638671875,
              369.31640625
            ],
            [
              219.638671875,
              379.7649841308594
            ],
            [
              86.361328125,
              379.7649841308594
            ]
          ],
          "bbox": [
            86.361328125,
            369.31640625,
            219.638671875,
            379.7649841308594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; repeat_lyrics()\nI'm a lumberjack, and I'm okay.\nI sleep all night and I work all day.\nI'm a lumberjack, and I'm okay.\nI sleep all night and I work all day.\nBut that's not really how the song goes.</pre>",
          "polygon": [
            [
              85.53955078125,
              384.78515625
            ],
            [
              281.794921875,
              384.78515625
            ],
            [
              281.794921875,
              459.406005859375
            ],
            [
              85.53955078125,
              459.406005859375
            ]
          ],
          "bbox": [
            85.53955078125,
            384.78515625,
            281.794921875,
            459.406005859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/42/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/43/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-43-0\"></span><b>3.6 Definitions and uses</b></h4>",
          "polygon": [
            [
              86.0625,
              487.65234375
            ],
            [
              253.33245849609375,
              487.65234375
            ],
            [
              253.33245849609375,
              502.0660705566406
            ],
            [
              86.0625,
              502.0660705566406
            ]
          ],
          "bbox": [
            86.0625,
            487.65234375,
            253.33245849609375,
            502.0660705566406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/43/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Pulling together the code fragments from the previous section, the whole program looks like this:</p>",
          "polygon": [
            [
              86.361328125,
              513.17578125
            ],
            [
              482.4034729003906,
              513.17578125
            ],
            [
              482.4034729003906,
              535.8340148925781
            ],
            [
              86.361328125,
              535.8340148925781
            ]
          ],
          "bbox": [
            86.361328125,
            513.17578125,
            482.4034729003906,
            535.8340148925781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/43/Code/13",
          "block_type": "Code",
          "html": "<pre>def print_lyrics():\n    print \"I'm a lumberjack, and I'm okay.\"\n    print \"I sleep all night and I work all day.\"\ndef repeat_lyrics():\n    print_lyrics()\n    print_lyrics()</pre>",
          "polygon": [
            [
              86.0625,
              541.1538696289062
            ],
            [
              345.744140625,
              541.1538696289062
            ],
            [
              345.744140625,
              632.671875
            ],
            [
              86.0625,
              632.671875
            ]
          ],
          "bbox": [
            86.0625,
            541.1538696289062,
            345.744140625,
            632.671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/43/Code/14",
          "block_type": "Code",
          "html": "<pre>repeat_lyrics()</pre>",
          "polygon": [
            [
              85.68896484375,
              638.7088928222656
            ],
            [
              164.86549377441406,
              638.7088928222656
            ],
            [
              164.86549377441406,
              648.9140625
            ],
            [
              85.68896484375,
              648.9140625
            ]
          ],
          "bbox": [
            85.68896484375,
            638.7088928222656,
            164.86549377441406,
            648.9140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/43/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This program contains two function definitions: print_lyrics and repeat_lyrics. Function definitions get executed just like other statements, but the effect is to create function objects. The statements inside the function do not get executed until the function is called, and the function definition generates no output.</p>",
          "polygon": [
            [
              86.0625,
              654.139892578125
            ],
            [
              482.90625,
              654.139892578125
            ],
            [
              482.90625,
              700.8350524902344
            ],
            [
              86.0625,
              700.8350524902344
            ]
          ],
          "bbox": [
            86.0625,
            654.139892578125,
            482.90625,
            700.8350524902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/41/SectionHeader/2",
        "4": "/page/43/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/44/Page/160",
      "block_type": "Page",
      "html": "<content-ref src='/page/44/PageHeader/0'></content-ref><content-ref src='/page/44/PageHeader/18'></content-ref><content-ref src='/page/44/Text/1'></content-ref><content-ref src='/page/44/Text/2'></content-ref><content-ref src='/page/44/Text/3'></content-ref><content-ref src='/page/44/SectionHeader/4'></content-ref><content-ref src='/page/44/Text/5'></content-ref><content-ref src='/page/44/Text/6'></content-ref><content-ref src='/page/44/Text/7'></content-ref><content-ref src='/page/44/Text/8'></content-ref><content-ref src='/page/44/Text/9'></content-ref><content-ref src='/page/44/Text/10'></content-ref><content-ref src='/page/44/Text/11'></content-ref><content-ref src='/page/44/SectionHeader/12'></content-ref><content-ref src='/page/44/Text/13'></content-ref><content-ref src='/page/44/Text/14'></content-ref><content-ref src='/page/44/Code/15'></content-ref><content-ref src='/page/44/Text/16'></content-ref><content-ref src='/page/44/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/44/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.8984375,
              60.85986328125
            ],
            [
              525.6033935546875,
              60.85986328125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              127.8984375,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.8984375,
            60.85986328125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/44/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.283203125,
              60.27978515625
            ],
            [
              525.638671875,
              60.27978515625
            ],
            [
              525.638671875,
              70.04443359375
            ],
            [
              514.283203125,
              70.04443359375
            ]
          ],
          "bbox": [
            514.283203125,
            60.27978515625,
            525.638671875,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you might expect, you have to create a function before you can execute it. In other words, the function definition has to be executed before the first time it is called.</p>",
          "polygon": [
            [
              127.599609375,
              88.83526611328125
            ],
            [
              526.236328125,
              88.83526611328125
            ],
            [
              526.236328125,
              111.181640625
            ],
            [
              127.599609375,
              111.181640625
            ]
          ],
          "bbox": [
            127.599609375,
            88.83526611328125,
            526.236328125,
            111.181640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 3.1.</b> <i>Move the last line of this program to the top, so the function call appears before the</i> <i>definitions. Run the program and see what error message you get.</i></p>",
          "polygon": [
            [
              128.9443359375,
              113.05157470703125
            ],
            [
              525.9375,
              113.05157470703125
            ],
            [
              525.9375,
              135.20819091796875
            ],
            [
              128.9443359375,
              135.20819091796875
            ]
          ],
          "bbox": [
            128.9443359375,
            113.05157470703125,
            525.9375,
            135.20819091796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 3.2.</b> <i>Move the function call back to the bottom and move the definition of</i> print_lyrics <i>after the definition of</i> repeat_lyrics<i>. What happens when you run this program?</i></p>",
          "polygon": [
            [
              128.3466796875,
              137.4395751953125
            ],
            [
              525.9375,
              137.4395751953125
            ],
            [
              525.9375,
              159.62030029296875
            ],
            [
              128.3466796875,
              159.62030029296875
            ]
          ],
          "bbox": [
            128.3466796875,
            137.4395751953125,
            525.9375,
            159.62030029296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/43/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/44/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-44-0\"></span><b>3.7 Flow of execution</b></h4>",
          "polygon": [
            [
              127.8984375,
              188.74676513671875
            ],
            [
              278.2409973144531,
              188.74676513671875
            ],
            [
              278.2409973144531,
              203.09295654296875
            ],
            [
              127.8984375,
              203.09295654296875
            ]
          ],
          "bbox": [
            127.8984375,
            188.74676513671875,
            278.2409973144531,
            203.09295654296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In order to ensure that a function is defined before its first use, you have to know the order in which statements are executed, which is called the <b>flow of execution</b>.</p>",
          "polygon": [
            [
              128.9443359375,
              214.62890625
            ],
            [
              525.603515625,
              214.62890625
            ],
            [
              525.603515625,
              237.33489990234375
            ],
            [
              128.9443359375,
              237.33489990234375
            ]
          ],
          "bbox": [
            128.9443359375,
            214.62890625,
            525.603515625,
            237.33489990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Execution always begins at the first statement of the program. Statements are executed one at a time, in order from top to bottom.</p>",
          "polygon": [
            [
              128.794921875,
              246.919921875
            ],
            [
              525.638671875,
              246.919921875
            ],
            [
              525.638671875,
              269.40594482421875
            ],
            [
              128.794921875,
              269.40594482421875
            ]
          ],
          "bbox": [
            128.794921875,
            246.919921875,
            525.638671875,
            269.40594482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Function definitions do not alter the flow of execution of the program, but remember that statements inside the function are not executed until the function is called.</p>",
          "polygon": [
            [
              128.794921875,
              279.017578125
            ],
            [
              526.236328125,
              279.017578125
            ],
            [
              526.236328125,
              301.4769287109375
            ],
            [
              128.794921875,
              301.4769287109375
            ]
          ],
          "bbox": [
            128.794921875,
            279.017578125,
            526.236328125,
            301.4769287109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A function call is like a detour in the flow of execution. Instead of going to the next statement, the flow jumps to the body of the function, executes all the statements there, and then comes back to pick up where it left off.</p>",
          "polygon": [
            [
              128.6455078125,
              311.30859375
            ],
            [
              525.9375,
              311.30859375
            ],
            [
              525.9375,
              345.742919921875
            ],
            [
              128.6455078125,
              345.742919921875
            ]
          ],
          "bbox": [
            128.6455078125,
            311.30859375,
            525.9375,
            345.742919921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">That sounds simple enough, until you remember that one function can call another. While in the middle of one function, the program might have to execute the statements in another function. But while executing that new function, the program might have to execute yet another function!</p>",
          "polygon": [
            [
              128.794921875,
              355.39453125
            ],
            [
              526.236328125,
              355.39453125
            ],
            [
              526.236328125,
              402.2029113769531
            ],
            [
              128.794921875,
              402.2029113769531
            ]
          ],
          "bbox": [
            128.794921875,
            355.39453125,
            526.236328125,
            402.2029113769531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Fortunately, Python is good at keeping track of where it is, so each time a function completes, the program picks up where it left off in the function that called it. When it gets to the end of the program, it terminates.</p>",
          "polygon": [
            [
              129.09375,
              411.85546875
            ],
            [
              525.9375,
              411.85546875
            ],
            [
              525.9375,
              446.4679260253906
            ],
            [
              129.09375,
              446.4679260253906
            ]
          ],
          "bbox": [
            129.09375,
            411.85546875,
            525.9375,
            446.4679260253906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">What's the moral of this sordid tale? When you read a program, you don't always want to read from top to bottom. Sometimes it makes more sense if you follow the flow of execution.</p>",
          "polygon": [
            [
              129.2431640625,
              456.328125
            ],
            [
              526.53515625,
              456.328125
            ],
            [
              526.53515625,
              490.73394775390625
            ],
            [
              129.2431640625,
              490.73394775390625
            ]
          ],
          "bbox": [
            129.2431640625,
            456.328125,
            526.53515625,
            490.73394775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/44/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-44-1\"></span><b>3.8 Parameters and arguments</b></h4>",
          "polygon": [
            [
              128.12255859375,
              519.7107849121094
            ],
            [
              335.6114196777344,
              519.7107849121094
            ],
            [
              335.6114196777344,
              534.0570068359375
            ],
            [
              128.12255859375,
              534.0570068359375
            ]
          ],
          "bbox": [
            128.12255859375,
            519.7107849121094,
            335.6114196777344,
            534.0570068359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Some of the built-in functions we have seen require arguments. For example, when you call math.sin you pass a number as an argument. Some functions take more than one argument: math.pow takes two, the base and the exponent.</p>",
          "polygon": [
            [
              128.3466796875,
              546.142333984375
            ],
            [
              525.6033935546875,
              546.142333984375
            ],
            [
              525.6033935546875,
              580.4929351806641
            ],
            [
              128.3466796875,
              580.4929351806641
            ]
          ],
          "bbox": [
            128.3466796875,
            546.142333984375,
            525.6033935546875,
            580.4929351806641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Inside the function, the arguments are assigned to variables called <b>parameters</b>. Here is an example of a user-defined function that takes an argument:</p>",
          "polygon": [
            [
              128.3466796875,
              590.3102264404297
            ],
            [
              525.9375,
              590.3102264404297
            ],
            [
              525.9375,
              612.56494140625
            ],
            [
              128.3466796875,
              612.56494140625
            ]
          ],
          "bbox": [
            128.3466796875,
            590.3102264404297,
            525.9375,
            612.56494140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/44/Code/15",
          "block_type": "Code",
          "html": "<pre>def print_twice(bruce):\n    print bruce\n    print bruce</pre>",
          "polygon": [
            [
              129.5999755859375,
              618.3577880859375
            ],
            [
              249.90830993652344,
              618.3577880859375
            ],
            [
              249.90830993652344,
              653.5546875
            ],
            [
              129.5999755859375,
              653.5546875
            ]
          ],
          "bbox": [
            129.5999755859375,
            618.3577880859375,
            249.90830993652344,
            653.5546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This function assigns the argument to a parameter named bruce. When the function is called, it prints the value of the parameter (whatever it is) twice.</p>",
          "polygon": [
            [
              128.3466796875,
              658.58203125
            ],
            [
              525.6046752929688,
              658.58203125
            ],
            [
              525.6046752929688,
              680.9579544067383
            ],
            [
              128.3466796875,
              680.9579544067383
            ]
          ],
          "bbox": [
            128.3466796875,
            658.58203125,
            525.6046752929688,
            680.9579544067383
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/44/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This function works with any value that can be printed.</p>",
          "polygon": [
            [
              128.86962890625,
              689.90625
            ],
            [
              375.029296875,
              689.90625
            ],
            [
              375.029296875,
              700.8349533081055
            ],
            [
              128.86962890625,
              700.8349533081055
            ]
          ],
          "bbox": [
            128.86962890625,
            689.90625,
            375.029296875,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/41/SectionHeader/2",
        "4": "/page/44/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/45/Page/196",
      "block_type": "Page",
      "html": "<content-ref src='/page/45/PageHeader/0'></content-ref><content-ref src='/page/45/PageHeader/15'></content-ref><content-ref src='/page/45/Code/1'></content-ref><content-ref src='/page/45/Text/2'></content-ref><content-ref src='/page/45/Code/3'></content-ref><content-ref src='/page/45/Text/4'></content-ref><content-ref src='/page/45/Text/5'></content-ref><content-ref src='/page/45/Code/6'></content-ref><content-ref src='/page/45/Text/7'></content-ref><content-ref src='/page/45/SectionHeader/8'></content-ref><content-ref src='/page/45/Text/9'></content-ref><content-ref src='/page/45/Code/10'></content-ref><content-ref src='/page/45/Text/11'></content-ref><content-ref src='/page/45/Code/12'></content-ref><content-ref src='/page/45/Text/13'></content-ref><content-ref src='/page/45/Code/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/45/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.4034118652344,
              60.85986328125
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.71484375
            ],
            [
              96.74560546875,
              60.71484375
            ],
            [
              96.74560546875,
              70.2861328125
            ],
            [
              85.53955078125,
              70.2861328125
            ]
          ],
          "bbox": [
            85.53955078125,
            60.71484375,
            96.74560546875,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print_twice('Spam')\nSpam\nSpam\n&gt;&gt;&gt; print_twice(17)\n17\n17\n&gt;&gt;&gt; print_twice(math.pi)\n3.14159265359\n3.14159265359</pre>",
          "polygon": [
            [
              86.4000015258789,
              88.68572998046875
            ],
            [
              211.93870544433594,
              88.68572998046875
            ],
            [
              211.93870544433594,
              197.3232421875
            ],
            [
              86.4000015258789,
              197.3232421875
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.68572998046875,
            211.93870544433594,
            197.3232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The same rules of composition that apply to built-in functions also apply to user-defined functions, so we can use any kind of expression as an argument for print_twice:</p>",
          "polygon": [
            [
              86.0625,
              201.09375
            ],
            [
              482.4033508300781,
              201.09375
            ],
            [
              482.4033508300781,
              224.296875
            ],
            [
              86.0625,
              224.296875
            ]
          ],
          "bbox": [
            86.0625,
            201.09375,
            482.4033508300781,
            224.296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print_twice('Spam '*4)\nSpam Spam Spam Spam\nSpam Spam Spam Spam\n&gt;&gt;&gt; print_twice(math.cos(math.pi))\n-1.0\n-1.0</pre>",
          "polygon": [
            [
              86.361328125,
              229.03778076171875
            ],
            [
              264.2423095703125,
              229.03778076171875
            ],
            [
              264.2423095703125,
              299.9713134765625
            ],
            [
              86.361328125,
              299.9713134765625
            ]
          ],
          "bbox": [
            86.361328125,
            229.03778076171875,
            264.2423095703125,
            299.9713134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The argument is evaluated before the function is called, so in the examples the expressions 'Spam '*4 and math.cos(math.pi) are only evaluated once.</p>",
          "polygon": [
            [
              86.39998626708984,
              305.12109375
            ],
            [
              482.40338134765625,
              305.12109375
            ],
            [
              482.40338134765625,
              327.61688232421875
            ],
            [
              86.39998626708984,
              327.61688232421875
            ]
          ],
          "bbox": [
            86.39998626708984,
            305.12109375,
            482.40338134765625,
            327.61688232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can also use a variable as an argument:</p>",
          "polygon": [
            [
              86.39999389648438,
              336.83203125
            ],
            [
              277.213623046875,
              336.83203125
            ],
            [
              277.213623046875,
              346.889892578125
            ],
            [
              86.39999389648438,
              346.889892578125
            ]
          ],
          "bbox": [
            86.39999389648438,
            336.83203125,
            277.213623046875,
            346.889892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; michael = 'Eric, the half a bee.'\n&gt;&gt;&gt; print_twice(michael)\nEric, the half a bee.\nEric, the half a bee.</pre>",
          "polygon": [
            [
              85.98779296875,
              352.0787353515625
            ],
            [
              279.8783874511719,
              352.0787353515625
            ],
            [
              279.8783874511719,
              400.25390625
            ],
            [
              85.98779296875,
              400.25390625
            ]
          ],
          "bbox": [
            85.98779296875,
            352.0787353515625,
            279.8783874511719,
            400.25390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The name of the variable we pass as an argument (michael) has nothing to do with the name of the parameter (bruce). It doesn't matter what the value was called back home (in the caller); here in print_twice, we call everybody bruce.</p>",
          "polygon": [
            [
              86.0625,
              403.734375
            ],
            [
              482.39837646484375,
              403.734375
            ],
            [
              482.39837646484375,
              438.4638977050781
            ],
            [
              86.0625,
              438.4638977050781
            ]
          ],
          "bbox": [
            86.0625,
            403.734375,
            482.39837646484375,
            438.4638977050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/44/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/45/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-45-0\"></span><b>3.9 Variables and parameters are local</b></h4>",
          "polygon": [
            [
              85.68896484375,
              466.3828125
            ],
            [
              342.60882568359375,
              466.3828125
            ],
            [
              342.60882568359375,
              480.94195556640625
            ],
            [
              85.68896484375,
              480.94195556640625
            ]
          ],
          "bbox": [
            85.68896484375,
            466.3828125,
            342.60882568359375,
            480.94195556640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/45/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you create a variable inside a function, it is <b>local</b>, which means that it only exists inside the function. For example:</p>",
          "polygon": [
            [
              86.2119140625,
              491.90625
            ],
            [
              482.90625,
              491.90625
            ],
            [
              482.90625,
              514.5798950195312
            ],
            [
              86.2119140625,
              514.5798950195312
            ]
          ],
          "bbox": [
            86.2119140625,
            491.90625,
            482.90625,
            514.5798950195312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/45/Code/10",
          "block_type": "Code",
          "html": "<pre>def cat_twice(part1, part2):\n    cat = part1 + part2\n    print_twice(cat)</pre>",
          "polygon": [
            [
              85.9130859375,
              519.7687377929688
            ],
            [
              232.86021423339844,
              519.7687377929688
            ],
            [
              232.86021423339844,
              554.1203460693359
            ],
            [
              85.9130859375,
              554.1203460693359
            ]
          ],
          "bbox": [
            85.9130859375,
            519.7687377929688,
            232.86021423339844,
            554.1203460693359
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/45/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This function takes two arguments, concatenates them, and prints the result twice. Here is an example that uses it:</p>",
          "polygon": [
            [
              86.0625,
              559.1953125
            ],
            [
              482.4034729003906,
              559.1953125
            ],
            [
              482.4034729003906,
              581.764892578125
            ],
            [
              86.0625,
              581.764892578125
            ]
          ],
          "bbox": [
            86.0625,
            559.1953125,
            482.4034729003906,
            581.764892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/45/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; line1 = 'Bing tiddle '\n&gt;&gt;&gt; line2 = 'tiddle bang.'\n&gt;&gt;&gt; cat_twice(line1, line2)\nBing tiddle tiddle bang.\nBing tiddle tiddle bang.</pre>",
          "polygon": [
            [
              86.40007019042969,
              585.10546875
            ],
            [
              228.603515625,
              585.10546875
            ],
            [
              228.603515625,
              645.6943511962891
            ],
            [
              86.40007019042969,
              645.6943511962891
            ]
          ],
          "bbox": [
            86.40007019042969,
            585.10546875,
            228.603515625,
            645.6943511962891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/45/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When cat_twice terminates, the variable cat is destroyed. If we try to print it, we get an exception:</p>",
          "polygon": [
            [
              85.763671875,
              650.84765625
            ],
            [
              482.39874267578125,
              650.84765625
            ],
            [
              482.39874267578125,
              674.05078125
            ],
            [
              85.763671875,
              674.05078125
            ]
          ],
          "bbox": [
            85.763671875,
            650.84765625,
            482.39874267578125,
            674.05078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/45/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print cat\nNameError: name 'cat' is not defined</pre>",
          "polygon": [
            [
              85.763671875,
              678.5287475585938
            ],
            [
              276.71484375,
              678.5287475585938
            ],
            [
              276.71484375,
              700.6853408813477
            ],
            [
              85.763671875,
              700.6853408813477
            ]
          ],
          "bbox": [
            85.763671875,
            678.5287475585938,
            276.71484375,
            700.6853408813477
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/41/SectionHeader/2",
        "4": "/page/45/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/46/Page/226",
      "block_type": "Page",
      "html": "<content-ref src='/page/46/PageHeader/0'></content-ref><content-ref src='/page/46/PageHeader/13'></content-ref><content-ref src='/page/46/FigureGroup/224'></content-ref><content-ref src='/page/46/Text/3'></content-ref><content-ref src='/page/46/SectionHeader/4'></content-ref><content-ref src='/page/46/Text/5'></content-ref><content-ref src='/page/46/Text/6'></content-ref><content-ref src='/page/46/Text/7'></content-ref><content-ref src='/page/46/Text/8'></content-ref><content-ref src='/page/46/Text/9'></content-ref><content-ref src='/page/46/Text/10'></content-ref><content-ref src='/page/46/Code/11'></content-ref><content-ref src='/page/46/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/46/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.49609375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.49609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.49609375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/46/PageHeader/13",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.1796875,
              60.95654296875
            ],
            [
              526.53515625,
              60.95654296875
            ],
            [
              526.53515625,
              70.04443359375
            ],
            [
              515.1796875,
              70.04443359375
            ]
          ],
          "bbox": [
            515.1796875,
            60.95654296875,
            526.53515625,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/46/FigureGroup/224",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/46/Figure/1'></content-ref><content-ref src='/page/46/Caption/2'></content-ref>",
          "polygon": [
            [
              210.5244140625,
              84.15966796875
            ],
            [
              435.09375,
              84.15966796875
            ],
            [
              435.09375,
              223.55291748046875
            ],
            [
              210.5244140625,
              223.55291748046875
            ]
          ],
          "bbox": [
            210.5244140625,
            84.15966796875,
            435.09375,
            223.55291748046875
          ],
          "children": [
            {
              "id": "/page/46/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  210.5244140625,
                  84.15966796875
                ],
                [
                  435.09375,
                  84.15966796875
                ],
                [
                  435.09375,
                  197.2265625
                ],
                [
                  210.5244140625,
                  197.2265625
                ]
              ],
              "bbox": [
                210.5244140625,
                84.15966796875,
                435.09375,
                197.2265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "3": "/page/41/SectionHeader/2",
                "4": "/page/45/SectionHeader/8"
              },
              "images": {
                "/page/46/Figure/1": "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"
              }
            },
            {
              "id": "/page/46/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-46-1\"></span>Figure 3.1: Stack diagram.</p>",
              "polygon": [
                [
                  268.7958984375,
                  213.08203125
                ],
                [
                  384.9295959472656,
                  213.08203125
                ],
                [
                  384.9295959472656,
                  223.55291748046875
                ],
                [
                  268.7958984375,
                  223.55291748046875
                ]
              ],
              "bbox": [
                268.7958984375,
                213.08203125,
                384.9295959472656,
                223.55291748046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "3": "/page/41/SectionHeader/2",
                "4": "/page/45/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/46/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Parameters are also local. For example, outside print_twice, there is no such thing as bruce.</p>",
          "polygon": [
            [
              128.6455078125,
              244.52374267578125
            ],
            [
              525.9375,
              244.52374267578125
            ],
            [
              525.9375,
              266.82989501953125
            ],
            [
              128.6455078125,
              266.82989501953125
            ]
          ],
          "bbox": [
            128.6455078125,
            244.52374267578125,
            525.9375,
            266.82989501953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/45/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/46/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-46-0\"></span><b>3.10 Stack diagrams</b></h4>",
          "polygon": [
            [
              128.3466796875,
              294.8467102050781
            ],
            [
              269.0947265625,
              294.8467102050781
            ],
            [
              269.0947265625,
              309.19293212890625
            ],
            [
              128.3466796875,
              309.19293212890625
            ]
          ],
          "bbox": [
            128.3466796875,
            294.8467102050781,
            269.0947265625,
            309.19293212890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To keep track of which variables can be used where, it is sometimes useful to draw a <b>stack</b> <b>diagram</b>. Like state diagrams, stack diagrams show the value of each variable, but they also show the function each variable belongs to.</p>",
          "polygon": [
            [
              128.9443359375,
              320.4951477050781
            ],
            [
              525.9375,
              320.4951477050781
            ],
            [
              525.9375,
              354.9438781738281
            ],
            [
              128.9443359375,
              354.9438781738281
            ]
          ],
          "bbox": [
            128.9443359375,
            320.4951477050781,
            525.9375,
            354.9438781738281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each function is represented by a <b>frame</b>. A frame is a box with the name of a function beside it and the parameters and variables of the function inside it. The stack diagram for the previous example is shown in Figure <a href=\"#page-46-1\">3.1.</a></p>",
          "polygon": [
            [
              128.9443359375,
              363.708984375
            ],
            [
              525.9375,
              363.708984375
            ],
            [
              525.9375,
              398.52288818359375
            ],
            [
              128.9443359375,
              398.52288818359375
            ]
          ],
          "bbox": [
            128.9443359375,
            363.708984375,
            525.9375,
            398.52288818359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The frames are arranged in a stack that indicates which function called which, and so on. In this example, print_twice was called by cat_twice, and cat_twice was called by __main__, which is a special name for the topmost frame. When you create a variable outside of any function, it belongs to __main__.</p>",
          "polygon": [
            [
              128.3466796875,
              407.21484375
            ],
            [
              525.9375,
              407.21484375
            ],
            [
              525.9375,
              454.2969055175781
            ],
            [
              128.3466796875,
              454.2969055175781
            ]
          ],
          "bbox": [
            128.3466796875,
            407.21484375,
            525.9375,
            454.2969055175781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each parameter refers to the same value as its corresponding argument. So, part1 has the same value as line1, part2 has the same value as line2, and bruce has the same value as cat.</p>",
          "polygon": [
            [
              128.6455078125,
              463.3757629394531
            ],
            [
              525.9375,
              463.3757629394531
            ],
            [
              525.9375,
              497.8769226074219
            ],
            [
              128.6455078125,
              497.8769226074219
            ]
          ],
          "bbox": [
            128.6455078125,
            463.3757629394531,
            525.9375,
            497.8769226074219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If an error occurs during a function call, Python prints the name of the function, and the name of the function that called it, and the name of the function that called <i>that</i>, all the way back to __main__.</p>",
          "polygon": [
            [
              128.794921875,
              506.98828125
            ],
            [
              525.638671875,
              506.98828125
            ],
            [
              525.638671875,
              541.4569396972656
            ],
            [
              128.794921875,
              541.4569396972656
            ]
          ],
          "bbox": [
            128.794921875,
            506.98828125,
            525.638671875,
            541.4569396972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, if you try to access cat from within print_twice, you get a NameError:</p>",
          "polygon": [
            [
              127.8984375,
              550.5357818603516
            ],
            [
              502.03125,
              550.5357818603516
            ],
            [
              502.03125,
              560.6479339599609
            ],
            [
              127.8984375,
              560.6479339599609
            ]
          ],
          "bbox": [
            127.8984375,
            550.5357818603516,
            502.03125,
            560.6479339599609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Code/11",
          "block_type": "Code",
          "html": "<pre>Traceback (innermost last):\n  File \"test.py\", line 13, in __main__\n    cat_twice(line1, line2)\n  File \"test.py\", line 5, in cat_twice\n    print_twice(cat)\n  File \"test.py\", line 9, in print_twice\n    print cat\nNameError: name 'cat' is not defined</pre>",
          "polygon": [
            [
              129.60006713867188,
              565.3828125
            ],
            [
              339.767578125,
              565.3828125
            ],
            [
              339.767578125,
              661.077392578125
            ],
            [
              129.60006713867188,
              661.077392578125
            ]
          ],
          "bbox": [
            129.60006713867188,
            565.3828125,
            339.767578125,
            661.077392578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/46/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This list of functions is called a <b>traceback</b>. It tells you what program file the error occurred in, and what line, and what functions were executing at the time. It also shows the line of code that caused the error.</p>",
          "polygon": [
            [
              128.197265625,
              665.15625
            ],
            [
              525.638671875,
              665.15625
            ],
            [
              525.638671875,
              700.8349533081055
            ],
            [
              128.197265625,
              700.8349533081055
            ]
          ],
          "bbox": [
            128.197265625,
            665.15625,
            525.638671875,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/41/SectionHeader/2",
        "4": "/page/46/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/47/Page/160",
      "block_type": "Page",
      "html": "<content-ref src='/page/47/PageHeader/0'></content-ref><content-ref src='/page/47/PageHeader/20'></content-ref><content-ref src='/page/47/Text/1'></content-ref><content-ref src='/page/47/SectionHeader/2'></content-ref><content-ref src='/page/47/Text/3'></content-ref><content-ref src='/page/47/Text/4'></content-ref><content-ref src='/page/47/Code/5'></content-ref><content-ref src='/page/47/Text/6'></content-ref><content-ref src='/page/47/Code/7'></content-ref><content-ref src='/page/47/Text/8'></content-ref><content-ref src='/page/47/Text/9'></content-ref><content-ref src='/page/47/Text/10'></content-ref><content-ref src='/page/47/Text/11'></content-ref><content-ref src='/page/47/Code/12'></content-ref><content-ref src='/page/47/Text/13'></content-ref><content-ref src='/page/47/Code/14'></content-ref><content-ref src='/page/47/Text/15'></content-ref><content-ref src='/page/47/SectionHeader/16'></content-ref><content-ref src='/page/47/Text/17'></content-ref><content-ref src='/page/47/ListGroup/158'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/47/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.37646484375
            ],
            [
              482.4034118652344,
              60.37646484375
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.37646484375,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/47/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              61.294921875
            ],
            [
              96.44677734375,
              61.294921875
            ],
            [
              96.44677734375,
              70.8662109375
            ],
            [
              85.53955078125,
              70.8662109375
            ]
          ],
          "bbox": [
            85.53955078125,
            61.294921875,
            96.44677734375,
            70.8662109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The order of the functions in the traceback is the same as the order of the frames in the stack diagram. The function that is currently running is at the bottom.</p>",
          "polygon": [
            [
              85.166015625,
              88.60693359375
            ],
            [
              482.90625,
              88.60693359375
            ],
            [
              482.90625,
              110.99188232421875
            ],
            [
              85.166015625,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.166015625,
            88.60693359375,
            482.90625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/41/SectionHeader/2",
            "4": "/page/46/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/47/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-47-0\"></span><b>3.11 Fruitful functions and void functions</b></h3>",
          "polygon": [
            [
              85.3154296875,
              139.025390625
            ],
            [
              369.6944274902344,
              139.025390625
            ],
            [
              369.6944274902344,
              154.137939453125
            ],
            [
              85.3154296875,
              154.137939453125
            ]
          ],
          "bbox": [
            85.3154296875,
            139.025390625,
            369.6944274902344,
            154.137939453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Some of the functions we are using, such as the math functions, yield results; for lack of a better name, I call them <b>fruitful functions</b>. Other functions, like print_twice, perform an action but don't return a value. They are called <b>void functions</b>.</p>",
          "polygon": [
            [
              84.8671875,
              165.2255859375
            ],
            [
              482.40447998046875,
              165.2255859375
            ],
            [
              482.40447998046875,
              200.44793701171875
            ],
            [
              84.8671875,
              200.44793701171875
            ]
          ],
          "bbox": [
            84.8671875,
            165.2255859375,
            482.40447998046875,
            200.44793701171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you call a fruitful function, you almost always want to do something with the result; for example, you might assign it to a variable or use it as part of an expression:</p>",
          "polygon": [
            [
              85.0166015625,
              209.21484375
            ],
            [
              482.4033203125,
              209.21484375
            ],
            [
              482.4033203125,
              232.3929443359375
            ],
            [
              85.0166015625,
              232.3929443359375
            ]
          ],
          "bbox": [
            85.0166015625,
            209.21484375,
            482.4033203125,
            232.3929443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Code/5",
          "block_type": "Code",
          "html": "<pre>x = math.cos(radians)\ngolden = (math.sqrt(5) + 1) / 2</pre>",
          "polygon": [
            [
              84.7177734375,
              238.05877685546875
            ],
            [
              248.541259765625,
              238.05877685546875
            ],
            [
              248.541259765625,
              260.21636962890625
            ],
            [
              84.7177734375,
              260.21636962890625
            ]
          ],
          "bbox": [
            84.7177734375,
            238.05877685546875,
            248.541259765625,
            260.21636962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you call a function in interactive mode, Python displays the result:</p>",
          "polygon": [
            [
              86.0625,
              264.90234375
            ],
            [
              407.016357421875,
              264.90234375
            ],
            [
              407.016357421875,
              276.14398193359375
            ],
            [
              86.0625,
              276.14398193359375
            ]
          ],
          "bbox": [
            86.0625,
            264.90234375,
            407.016357421875,
            276.14398193359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; math.sqrt(5)\n2.2360679774997898</pre>",
          "polygon": [
            [
              85.46484375,
              281.810791015625
            ],
            [
              181.986328125,
              281.810791015625
            ],
            [
              181.986328125,
              303.9683837890625
            ],
            [
              85.46484375,
              303.9683837890625
            ]
          ],
          "bbox": [
            85.46484375,
            281.810791015625,
            181.986328125,
            303.9683837890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But in a script, if you call a fruitful function all by itself, the return value is lost forever!</p>",
          "polygon": [
            [
              85.763671875,
              309.76171875
            ],
            [
              468.5625,
              309.76171875
            ],
            [
              468.5625,
              319.8959655761719
            ],
            [
              85.763671875,
              319.8959655761719
            ]
          ],
          "bbox": [
            85.763671875,
            309.76171875,
            468.5625,
            319.8959655761719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">math.sqrt(5)</p>",
          "polygon": [
            [
              85.46484375,
              325.56280517578125
            ],
            [
              149.17433166503906,
              325.56280517578125
            ],
            [
              149.17433166503906,
              335.525390625
            ],
            [
              85.46484375,
              335.525390625
            ]
          ],
          "bbox": [
            85.46484375,
            325.56280517578125,
            149.17433166503906,
            335.525390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This script computes the square root of 5, but since it doesn't store or display the result, it is not very useful.</p>",
          "polygon": [
            [
              85.46484375,
              341.279296875
            ],
            [
              482.40338134765625,
              341.279296875
            ],
            [
              482.40338134765625,
              363.708984375
            ],
            [
              85.46484375,
              363.708984375
            ]
          ],
          "bbox": [
            85.46484375,
            341.279296875,
            482.40338134765625,
            363.708984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Void functions might display something on the screen or have some other effect, but they don't have a return value. If you try to assign the result to a variable, you get a special value called None.</p>",
          "polygon": [
            [
              85.46484375,
              372.216796875
            ],
            [
              482.4034423828125,
              372.216796875
            ],
            [
              482.4034423828125,
              407.7869567871094
            ],
            [
              85.46484375,
              407.7869567871094
            ]
          ],
          "bbox": [
            85.46484375,
            372.216796875,
            482.4034423828125,
            407.7869567871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; result = print_twice('Bing')\nBing\nBing\n&gt;&gt;&gt; print result\nNone</pre>",
          "polygon": [
            [
              85.0166015625,
              413.40234375
            ],
            [
              253.73236083984375,
              413.40234375
            ],
            [
              253.73236083984375,
              476.82421875
            ],
            [
              85.0166015625,
              476.82421875
            ]
          ],
          "bbox": [
            85.0166015625,
            413.40234375,
            253.73236083984375,
            476.82421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The value None is not the same as the string 'None'. It is a special value that has its own type:</p>",
          "polygon": [
            [
              86.0625,
              478.0097961425781
            ],
            [
              482.399169921875,
              478.0097961425781
            ],
            [
              482.399169921875,
              500.4140625
            ],
            [
              86.0625,
              500.4140625
            ]
          ],
          "bbox": [
            86.0625,
            478.0097961425781,
            482.399169921875,
            500.4140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print type(None)\n&lt;type 'NoneType'&gt;</pre>",
          "polygon": [
            [
              85.46484375,
              505.9827880859375
            ],
            [
              191.0172119140625,
              505.9827880859375
            ],
            [
              191.0172119140625,
              528.1393737792969
            ],
            [
              85.46484375,
              528.1393737792969
            ]
          ],
          "bbox": [
            85.46484375,
            505.9827880859375,
            191.0172119140625,
            528.1393737792969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The functions we have written so far are all void. We will start writing fruitful functions in a few chapters.</p>",
          "polygon": [
            [
              85.9130859375,
              533.28515625
            ],
            [
              482.4031982421875,
              533.28515625
            ],
            [
              482.4031982421875,
              556.2619323730469
            ],
            [
              85.9130859375,
              556.2619323730469
            ]
          ],
          "bbox": [
            85.9130859375,
            533.28515625,
            482.4031982421875,
            556.2619323730469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/47/SectionHeader/16",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-47-1\"></span><b>3.12 Why functions?</b></h4>",
          "polygon": [
            [
              85.3154296875,
              584.71875
            ],
            [
              229.04421997070312,
              584.71875
            ],
            [
              229.04421997070312,
              599.4089813232422
            ],
            [
              85.3154296875,
              599.4089813232422
            ]
          ],
          "bbox": [
            85.3154296875,
            584.71875,
            229.04421997070312,
            599.4089813232422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2",
            "4": "/page/47/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/47/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It may not be clear why it is worth the trouble to divide a program into functions. There are several reasons:</p>",
          "polygon": [
            [
              85.46484375,
              611.015625
            ],
            [
              482.607421875,
              611.015625
            ],
            [
              482.607421875,
              633.52392578125
            ],
            [
              85.46484375,
              633.52392578125
            ]
          ],
          "bbox": [
            85.46484375,
            611.015625,
            482.607421875,
            633.52392578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2",
            "4": "/page/47/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/47/ListGroup/158",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/47/ListItem/18'></content-ref><content-ref src='/page/47/ListItem/19'></content-ref></ul></p>",
          "polygon": [
            [
              100.28797149658203,
              645.8203125
            ],
            [
              482.90625,
              645.8203125
            ],
            [
              482.90625,
              700.8349304199219
            ],
            [
              100.28797149658203,
              700.8349304199219
            ]
          ],
          "bbox": [
            100.28797149658203,
            645.8203125,
            482.90625,
            700.8349304199219
          ],
          "children": [
            {
              "id": "/page/47/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Creating a new function gives you an opportunity to name a group of statements, which makes your program easier to read and debug.</li>",
              "polygon": [
                [
                  100.28797149658203,
                  645.8203125
                ],
                [
                  482.90625,
                  645.8203125
                ],
                [
                  482.90625,
                  668.8069305419922
                ],
                [
                  100.28797149658203,
                  668.8069305419922
                ]
              ],
              "bbox": [
                100.28797149658203,
                645.8203125,
                482.90625,
                668.8069305419922
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "3": "/page/47/SectionHeader/2",
                "4": "/page/47/SectionHeader/16"
              },
              "images": {}
            },
            {
              "id": "/page/47/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Functions can make a program smaller by eliminating repetitive code. Later, if you make a change, you only have to make it in one place.</li>",
              "polygon": [
                [
                  100.28797149658203,
                  677.53125
                ],
                [
                  482.90625,
                  677.53125
                ],
                [
                  482.90625,
                  700.8349304199219
                ],
                [
                  100.28797149658203,
                  700.8349304199219
                ]
              ],
              "bbox": [
                100.28797149658203,
                677.53125,
                482.90625,
                700.8349304199219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "3": "/page/47/SectionHeader/2",
                "4": "/page/47/SectionHeader/16"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2",
            "4": "/page/47/SectionHeader/16"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "3": "/page/47/SectionHeader/2",
        "4": "/page/47/SectionHeader/16"
      },
      "images": null
    },
    {
      "id": "/page/48/Page/184",
      "block_type": "Page",
      "html": "<content-ref src='/page/48/PageHeader/0'></content-ref><content-ref src='/page/48/PageHeader/20'></content-ref><content-ref src='/page/48/ListGroup/182'></content-ref><content-ref src='/page/48/SectionHeader/3'></content-ref><content-ref src='/page/48/Text/4'></content-ref><content-ref src='/page/48/Code/5'></content-ref><content-ref src='/page/48/Text/6'></content-ref><content-ref src='/page/48/Text/7'></content-ref><content-ref src='/page/48/Code/8'></content-ref><content-ref src='/page/48/Text/9'></content-ref><content-ref src='/page/48/Code/10'></content-ref><content-ref src='/page/48/Text/11'></content-ref><content-ref src='/page/48/Code/12'></content-ref><content-ref src='/page/48/Text/13'></content-ref><content-ref src='/page/48/Code/14'></content-ref><content-ref src='/page/48/Text/15'></content-ref><content-ref src='/page/48/SectionHeader/16'></content-ref><content-ref src='/page/48/Text/17'></content-ref><content-ref src='/page/48/Text/18'></content-ref><content-ref src='/page/48/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/48/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.8984375,
              61.0048828125
            ],
            [
              525.5996704101562,
              61.0048828125
            ],
            [
              525.5996704101562,
              71.13372802734375
            ],
            [
              127.8984375,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.8984375,
            61.0048828125,
            525.5996704101562,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2",
            "4": "/page/47/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/48/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              60.4248046875
            ],
            [
              525.33984375,
              60.4248046875
            ],
            [
              525.33984375,
              69.8994140625
            ],
            [
              514.58203125,
              69.8994140625
            ]
          ],
          "bbox": [
            514.58203125,
            60.4248046875,
            525.33984375,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2",
            "4": "/page/47/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/48/ListGroup/182",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/48/ListItem/1'></content-ref><content-ref src='/page/48/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              142.83984375,
              88.41357421875
            ],
            [
              525.603515625,
              88.41357421875
            ],
            [
              525.603515625,
              142.61590576171875
            ],
            [
              142.83984375,
              142.61590576171875
            ]
          ],
          "bbox": [
            142.83984375,
            88.41357421875,
            525.603515625,
            142.61590576171875
          ],
          "children": [
            {
              "id": "/page/48/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Dividing a long program into functions allows you to debug the parts one at a time and then assemble them into a working whole.</li>",
              "polygon": [
                [
                  143.4375,
                  88.41357421875
                ],
                [
                  525.6034545898438,
                  88.41357421875
                ],
                [
                  525.6034545898438,
                  110.99188232421875
                ],
                [
                  143.4375,
                  110.99188232421875
                ]
              ],
              "bbox": [
                143.4375,
                88.41357421875,
                525.6034545898438,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "3": "/page/47/SectionHeader/2",
                "4": "/page/47/SectionHeader/16"
              },
              "images": {}
            },
            {
              "id": "/page/48/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Well-designed functions are often useful for many programs. Once you write and debug one, you can reuse it.</li>",
              "polygon": [
                [
                  142.83984375,
                  119.9794921875
                ],
                [
                  525.603515625,
                  119.9794921875
                ],
                [
                  525.603515625,
                  142.61590576171875
                ],
                [
                  142.83984375,
                  142.61590576171875
                ]
              ],
              "bbox": [
                142.83984375,
                119.9794921875,
                525.603515625,
                142.61590576171875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "3": "/page/47/SectionHeader/2",
                "4": "/page/47/SectionHeader/16"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "3": "/page/47/SectionHeader/2",
            "4": "/page/47/SectionHeader/16"
          },
          "images": null
        },
        {
          "id": "/page/48/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-48-0\"></span><b>3.13 Importing with</b> from</h2>",
          "polygon": [
            [
              127.4501953125,
              168.674072265625
            ],
            [
              302.5994873046875,
              168.674072265625
            ],
            [
              302.5994873046875,
              185.096923828125
            ],
            [
              127.4501953125,
              185.096923828125
            ]
          ],
          "bbox": [
            127.4501953125,
            168.674072265625,
            302.5994873046875,
            185.096923828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python provides two ways to import modules; we have already seen one:</p>",
          "polygon": [
            [
              128.197265625,
              196.3564453125
            ],
            [
              452.7369689941406,
              196.3564453125
            ],
            [
              452.7369689941406,
              206.54388427734375
            ],
            [
              128.197265625,
              206.54388427734375
            ]
          ],
          "bbox": [
            128.197265625,
            196.3564453125,
            452.7369689941406,
            206.54388427734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; import math\n&gt;&gt;&gt; print math\n&lt;module 'math' (built-in)&gt;\n&gt;&gt;&gt; print math.pi\n3.14159265359</pre>",
          "polygon": [
            [
              128.49609375,
              211.73468017578125
            ],
            [
              265.571044921875,
              211.73468017578125
            ],
            [
              265.571044921875,
              270.47528076171875
            ],
            [
              128.49609375,
              270.47528076171875
            ]
          ],
          "bbox": [
            128.49609375,
            211.73468017578125,
            265.571044921875,
            270.47528076171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you import math, you get a module object named math. The module object contains constants like pi and functions like sin and exp.</p>",
          "polygon": [
            [
              129.5999755859375,
              275.816650390625
            ],
            [
              525.9375,
              275.816650390625
            ],
            [
              525.9375,
              298.1228332519531
            ],
            [
              129.5999755859375,
              298.1228332519531
            ]
          ],
          "bbox": [
            129.5999755859375,
            275.816650390625,
            525.9375,
            298.1228332519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you try to access pi directly, you get an error.</p>",
          "polygon": [
            [
              129.2431640625,
              307.28668212890625
            ],
            [
              354.41015625,
              307.28668212890625
            ],
            [
              354.41015625,
              317.3988342285156
            ],
            [
              129.2431640625,
              317.3988342285156
            ]
          ],
          "bbox": [
            129.2431640625,
            307.28668212890625,
            354.41015625,
            317.3988342285156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print pi\nTraceback (most recent call last):\n  File \"&lt;stdin&gt;\", line 1, in &lt;module&gt;\nNameError: name 'pi' is not defined</pre>",
          "polygon": [
            [
              129.16845703125,
              322.5906677246094
            ],
            [
              324.228515625,
              322.5906677246094
            ],
            [
              324.228515625,
              369.1362609863281
            ],
            [
              129.16845703125,
              369.1362609863281
            ]
          ],
          "bbox": [
            129.16845703125,
            322.5906677246094,
            324.228515625,
            369.1362609863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As an alternative, you can import an object from a module like this:</p>",
          "polygon": [
            [
              127.8984375,
              373.5703125
            ],
            [
              426.12890625,
              373.5703125
            ],
            [
              426.12890625,
              384.5898132324219
            ],
            [
              127.8984375,
              384.5898132324219
            ]
          ],
          "bbox": [
            127.8984375,
            373.5703125,
            426.12890625,
            384.5898132324219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; from math import pi</pre>",
          "polygon": [
            [
              129.01904296875,
              389.7816467285156
            ],
            [
              249.89837646484375,
              389.7816467285156
            ],
            [
              249.89837646484375,
              401.02734375
            ],
            [
              129.01904296875,
              401.02734375
            ]
          ],
          "bbox": [
            129.01904296875,
            389.7816467285156,
            249.89837646484375,
            401.02734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now you can access pi directly, without dot notation.</p>",
          "polygon": [
            [
              128.72021484375,
              404.89453125
            ],
            [
              365.32220458984375,
              404.89453125
            ],
            [
              365.32220458984375,
              415.1977844238281
            ],
            [
              128.72021484375,
              415.1977844238281
            ]
          ],
          "bbox": [
            128.72021484375,
            404.89453125,
            365.32220458984375,
            415.1977844238281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print pi\n3.14159265359</pre>",
          "polygon": [
            [
              129.60000610351562,
              420.3886413574219
            ],
            [
              197.60472106933594,
              420.3886413574219
            ],
            [
              197.60472106933594,
              442.79296875
            ],
            [
              129.60000610351562,
              442.79296875
            ]
          ],
          "bbox": [
            129.60000610351562,
            420.3886413574219,
            197.60472106933594,
            442.79296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Or you can use the star operator to import <i>everything</i> from the module:</p>",
          "polygon": [
            [
              129.2431640625,
              447.864501953125
            ],
            [
              440.18243408203125,
              447.864501953125
            ],
            [
              440.18243408203125,
              457.9997863769531
            ],
            [
              129.2431640625,
              457.9997863769531
            ]
          ],
          "bbox": [
            129.2431640625,
            447.864501953125,
            440.18243408203125,
            457.9997863769531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; from math import *\n&gt;&gt;&gt; cos(pi)\n-1.0</pre>",
          "polygon": [
            [
              128.6455078125,
              463.1916198730469
            ],
            [
              244.66799926757812,
              463.1916198730469
            ],
            [
              244.66799926757812,
              497.5422058105469
            ],
            [
              128.6455078125,
              497.5422058105469
            ]
          ],
          "bbox": [
            128.6455078125,
            463.1916198730469,
            244.66799926757812,
            497.5422058105469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The advantage of importing everything from the math module is that your code can be more concise. The disadvantage is that there might be conflicts between names defined in different modules, or between a name from a module and one of your variables.</p>",
          "polygon": [
            [
              129.09375,
              502.734375
            ],
            [
              525.9375,
              502.734375
            ],
            [
              525.9375,
              537.384765625
            ],
            [
              129.09375,
              537.384765625
            ]
          ],
          "bbox": [
            129.09375,
            502.734375,
            525.9375,
            537.384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/48/SectionHeader/16",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-48-1\"></span><b>3.14 Debugging</b></h4>",
          "polygon": [
            [
              128.12255859375,
              565.5196228027344
            ],
            [
              243.24609375,
              565.5196228027344
            ],
            [
              243.24609375,
              579.8658142089844
            ],
            [
              128.12255859375,
              579.8658142089844
            ]
          ],
          "bbox": [
            128.12255859375,
            565.5196228027344,
            243.24609375,
            579.8658142089844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are using a text editor to write your scripts, you might run into problems with spaces and tabs. The best way to avoid these problems is to use spaces exclusively (no tabs). Most text editors that know about Python do this by default, but some don't.</p>",
          "polygon": [
            [
              128.6455078125,
              591.3501586914062
            ],
            [
              525.9375,
              591.3501586914062
            ],
            [
              525.9375,
              625.7007598876953
            ],
            [
              128.6455078125,
              625.7007598876953
            ]
          ],
          "bbox": [
            128.6455078125,
            591.3501586914062,
            525.9375,
            625.7007598876953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Tabs and spaces are usually invisible, which makes them hard to debug, so try to find an editor that manages indentation for you.</p>",
          "polygon": [
            [
              128.49609375,
              634.60546875
            ],
            [
              525.6033935546875,
              634.60546875
            ],
            [
              525.6033935546875,
              657.1707611083984
            ],
            [
              128.49609375,
              657.1707611083984
            ]
          ],
          "bbox": [
            128.49609375,
            634.60546875,
            525.6033935546875,
            657.1707611083984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/48/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Also, don't forget to save your program before you run it. Some development environments do this automatically, but some don't. In that case the program you are looking at in the text editor is not the same as the program you are running.</p>",
          "polygon": [
            [
              128.3466796875,
              666.31640625
            ],
            [
              525.6034545898438,
              666.31640625
            ],
            [
              525.6034545898438,
              700.8347702026367
            ],
            [
              128.3466796875,
              700.8347702026367
            ]
          ],
          "bbox": [
            128.3466796875,
            666.31640625,
            525.6034545898438,
            700.8347702026367
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "2": "/page/48/SectionHeader/3",
        "4": "/page/48/SectionHeader/16"
      },
      "images": null
    },
    {
      "id": "/page/49/Page/173",
      "block_type": "Page",
      "html": "<content-ref src='/page/49/PageHeader/0'></content-ref><content-ref src='/page/49/PageHeader/22'></content-ref><content-ref src='/page/49/Text/1'></content-ref><content-ref src='/page/49/Text/2'></content-ref><content-ref src='/page/49/SectionHeader/3'></content-ref><content-ref src='/page/49/ListGroup/172'></content-ref><content-ref src='/page/49/Text/171'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/49/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.05322265625
            ],
            [
              482.4034118652344,
              61.05322265625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.05322265625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/49/PageHeader/22",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.98779296875,
              61.14990234375
            ],
            [
              97.04443359375,
              61.14990234375
            ],
            [
              97.04443359375,
              70.04443359375
            ],
            [
              85.98779296875,
              70.04443359375
            ]
          ],
          "bbox": [
            85.98779296875,
            61.14990234375,
            97.04443359375,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/49/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Debugging can take a long time if you keep running the same, incorrect, program over and over!</p>",
          "polygon": [
            [
              85.0166015625,
              88.83526611328125
            ],
            [
              482.4034729003906,
              88.83526611328125
            ],
            [
              482.4034729003906,
              110.99188232421875
            ],
            [
              85.0166015625,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.0166015625,
            88.83526611328125,
            482.4034729003906,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/49/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Make sure that the code you are looking at is the code you are running. If you're not sure, put something like print 'hello' at the beginning of the program and run it again. If you don't see hello, you're not running the right program!</p>",
          "polygon": [
            [
              85.763671875,
              121.4296875
            ],
            [
              482.90625,
              121.4296875
            ],
            [
              482.90625,
              156.04290771484375
            ],
            [
              85.763671875,
              156.04290771484375
            ]
          ],
          "bbox": [
            85.763671875,
            121.4296875,
            482.90625,
            156.04290771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/48/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/49/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-49-0\"></span><b>3.15 Glossary</b></h4>",
          "polygon": [
            [
              85.9130859375,
              186.78515625
            ],
            [
              184.02589416503906,
              186.78515625
            ],
            [
              184.02589416503906,
              201.30694580078125
            ],
            [
              85.9130859375,
              201.30694580078125
            ]
          ],
          "bbox": [
            85.9130859375,
            186.78515625,
            184.02589416503906,
            201.30694580078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/49/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/49/ListGroup/172",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/49/ListItem/4'></content-ref><content-ref src='/page/49/ListItem/5'></content-ref><content-ref src='/page/49/ListItem/6'></content-ref><content-ref src='/page/49/ListItem/7'></content-ref><content-ref src='/page/49/ListItem/8'></content-ref><content-ref src='/page/49/ListItem/9'></content-ref><content-ref src='/page/49/ListItem/10'></content-ref><content-ref src='/page/49/ListItem/11'></content-ref><content-ref src='/page/49/ListItem/12'></content-ref><content-ref src='/page/49/ListItem/13'></content-ref><content-ref src='/page/49/ListItem/14'></content-ref><content-ref src='/page/49/ListItem/15'></content-ref><content-ref src='/page/49/ListItem/16'></content-ref><content-ref src='/page/49/ListItem/17'></content-ref><content-ref src='/page/49/ListItem/18'></content-ref><content-ref src='/page/49/ListItem/19'></content-ref><content-ref src='/page/49/ListItem/20'></content-ref></ul></p>",
          "polygon": [
            [
              85.46484375,
              210.80914306640625
            ],
            [
              482.90625,
              210.80914306640625
            ],
            [
              482.90625,
              679.7749099731445
            ],
            [
              85.46484375,
              679.7749099731445
            ]
          ],
          "bbox": [
            85.46484375,
            210.80914306640625,
            482.90625,
            679.7749099731445
          ],
          "children": [
            {
              "id": "/page/49/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>function:</b> A named sequence of statements that performs some useful operation. Functions may or may not take arguments and may or may not produce a result.</li>",
              "polygon": [
                [
                  85.9130859375,
                  210.80914306640625
                ],
                [
                  482.4028015136719,
                  210.80914306640625
                ],
                [
                  482.4028015136719,
                  233.06390380859375
                ],
                [
                  85.9130859375,
                  233.06390380859375
                ]
              ],
              "bbox": [
                85.9130859375,
                210.80914306640625,
                482.4028015136719,
                233.06390380859375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>function definition:</b> A statement that creates a new function, specifying its name, parameters, and the statements it executes.</li>",
              "polygon": [
                [
                  86.0625,
                  244.06414794921875
                ],
                [
                  482.4034118652344,
                  244.06414794921875
                ],
                [
                  482.4034118652344,
                  266.31793212890625
                ],
                [
                  86.0625,
                  266.31793212890625
                ]
              ],
              "bbox": [
                86.0625,
                244.06414794921875,
                482.4034118652344,
                266.31793212890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>function object:</b> A value created by a function definition. The name of the function is a variable that refers to a function object.</li>",
              "polygon": [
                [
                  85.9130859375,
                  277.27734375
                ],
                [
                  482.90625,
                  277.27734375
                ],
                [
                  482.90625,
                  299.5729064941406
                ],
                [
                  85.9130859375,
                  299.5729064941406
                ]
              ],
              "bbox": [
                85.9130859375,
                277.27734375,
                482.90625,
                299.5729064941406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>header:</b> The first line of a function definition.</li>",
              "polygon": [
                [
                  85.46484375,
                  310.57318115234375
                ],
                [
                  286.4195556640625,
                  310.57318115234375
                ],
                [
                  286.4195556640625,
                  320.6329040527344
                ],
                [
                  85.46484375,
                  320.6329040527344
                ]
              ],
              "bbox": [
                85.46484375,
                310.57318115234375,
                286.4195556640625,
                320.6329040527344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>body:</b> The sequence of statements inside a function definition.</li>",
              "polygon": [
                [
                  85.763671875,
                  331.6331787109375
                ],
                [
                  361.706787109375,
                  331.6331787109375
                ],
                [
                  361.706787109375,
                  341.6929016113281
                ],
                [
                  85.763671875,
                  341.6929016113281
                ]
              ],
              "bbox": [
                85.763671875,
                331.6331787109375,
                361.706787109375,
                341.6929016113281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>parameter:</b> A name used inside a function to refer to the value passed as an argument.</li>",
              "polygon": [
                [
                  85.763671875,
                  352.69317626953125
                ],
                [
                  468.14642333984375,
                  352.69317626953125
                ],
                [
                  468.14642333984375,
                  362.7528991699219
                ],
                [
                  85.763671875,
                  362.7528991699219
                ]
              ],
              "bbox": [
                85.763671875,
                352.69317626953125,
                468.14642333984375,
                362.7528991699219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>function call:</b> A statement that executes a function. It consists of the function name followed by an argument list.</li>",
              "polygon": [
                [
                  85.6142578125,
                  373.753173828125
                ],
                [
                  482.4033508300781,
                  373.753173828125
                ],
                [
                  482.4033508300781,
                  396.0079040527344
                ],
                [
                  85.6142578125,
                  396.0079040527344
                ]
              ],
              "bbox": [
                85.6142578125,
                373.753173828125,
                482.4033508300781,
                396.0079040527344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>argument:</b> A value provided to a function when the function is called. This value is assigned to the corresponding parameter in the function.</li>",
              "polygon": [
                [
                  86.0625,
                  406.828125
                ],
                [
                  482.4035949707031,
                  406.828125
                ],
                [
                  482.4035949707031,
                  429.26190185546875
                ],
                [
                  86.0625,
                  429.26190185546875
                ]
              ],
              "bbox": [
                86.0625,
                406.828125,
                482.4035949707031,
                429.26190185546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>local variable:</b> A variable defined inside a function. A local variable can only be used inside its function.</li>",
              "polygon": [
                [
                  85.9130859375,
                  440.2621765136719
                ],
                [
                  482.90625,
                  440.2621765136719
                ],
                [
                  482.90625,
                  462.51690673828125
                ],
                [
                  85.9130859375,
                  462.51690673828125
                ]
              ],
              "bbox": [
                85.9130859375,
                440.2621765136719,
                482.90625,
                462.51690673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>return value:</b> The result of a function. If a function call is used as an expression, the return value is the value of the expression.</li>",
              "polygon": [
                [
                  86.2119140625,
                  473.34375
                ],
                [
                  482.4033203125,
                  473.34375
                ],
                [
                  482.4033203125,
                  495.7709045410156
                ],
                [
                  86.2119140625,
                  495.7709045410156
                ]
              ],
              "bbox": [
                86.2119140625,
                473.34375,
                482.4033203125,
                495.7709045410156
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>fruitful function:</b> A function that returns a value.</li>",
              "polygon": [
                [
                  85.98779296875,
                  506.77117919921875
                ],
                [
                  306.7622985839844,
                  506.77117919921875
                ],
                [
                  306.7622985839844,
                  516.8309020996094
                ],
                [
                  85.98779296875,
                  516.8309020996094
                ]
              ],
              "bbox": [
                85.98779296875,
                506.77117919921875,
                306.7622985839844,
                516.8309020996094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>void function:</b> A function that doesn't return a value.</li>",
              "polygon": [
                [
                  85.98779296875,
                  527.484375
                ],
                [
                  324.0973815917969,
                  527.484375
                ],
                [
                  324.0973815917969,
                  537.8908996582031
                ],
                [
                  85.98779296875,
                  537.8908996582031
                ]
              ],
              "bbox": [
                85.98779296875,
                527.484375,
                324.0973815917969,
                537.8908996582031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>module:</b> A file that contains a collection of related functions and other definitions.</li>",
              "polygon": [
                [
                  85.9130859375,
                  548.8921966552734
                ],
                [
                  449.0685119628906,
                  548.8921966552734
                ],
                [
                  449.0685119628906,
                  558.951904296875
                ],
                [
                  85.9130859375,
                  558.951904296875
                ]
              ],
              "bbox": [
                85.9130859375,
                548.8921966552734,
                449.0685119628906,
                558.951904296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>import statement:</b> A statement that reads a module file and creates a module object.</li>",
              "polygon": [
                [
                  86.2119140625,
                  569.9521942138672
                ],
                [
                  457.87530517578125,
                  569.9521942138672
                ],
                [
                  457.87530517578125,
                  580.0119018554688
                ],
                [
                  86.2119140625,
                  580.0119018554688
                ]
              ],
              "bbox": [
                86.2119140625,
                569.9521942138672,
                457.87530517578125,
                580.0119018554688
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>module object:</b> A value created by an import statement that provides access to the values defined in a module.</li>",
              "polygon": [
                [
                  86.2119140625,
                  590.9597473144531
                ],
                [
                  482.3982849121094,
                  590.9597473144531
                ],
                [
                  482.3982849121094,
                  613.2658996582031
                ],
                [
                  86.2119140625,
                  613.2658996582031
                ]
              ],
              "bbox": [
                86.2119140625,
                590.9597473144531,
                482.3982849121094,
                613.2658996582031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>dot notation:</b> The syntax for calling a function in another module by specifying the module name followed by a dot (period) and the function name.</li>",
              "polygon": [
                [
                  86.361328125,
                  623.77734375
                ],
                [
                  482.4032287597656,
                  623.77734375
                ],
                [
                  482.4032287597656,
                  646.5209045410156
                ],
                [
                  86.361328125,
                  646.5209045410156
                ]
              ],
              "bbox": [
                86.361328125,
                623.77734375,
                482.4032287597656,
                646.5209045410156
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/49/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>composition:</b> Using an expression as part of a larger expression, or a statement as part of a larger statement.</li>",
              "polygon": [
                [
                  86.2119140625,
                  657.421875
                ],
                [
                  482.90625,
                  657.421875
                ],
                [
                  482.90625,
                  679.7749099731445
                ],
                [
                  86.2119140625,
                  679.7749099731445
                ]
              ],
              "bbox": [
                86.2119140625,
                657.421875,
                482.90625,
                679.7749099731445
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/49/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/49/Text/171",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>flow of execution:</b> The order in which statements are executed during a program run.</p>",
          "polygon": [
            [
              85.6142578125,
              690.7751922607422
            ],
            [
              465.2876281738281,
              690.7751922607422
            ],
            [
              465.2876281738281,
              700.8349075317383
            ],
            [
              85.6142578125,
              700.8349075317383
            ]
          ],
          "bbox": [
            85.6142578125,
            690.7751922607422,
            465.2876281738281,
            700.8349075317383
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/49/SectionHeader/3"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "2": "/page/48/SectionHeader/3",
        "4": "/page/49/SectionHeader/3"
      },
      "images": null
    },
    {
      "id": "/page/50/Page/217",
      "block_type": "Page",
      "html": "<content-ref src='/page/50/PageHeader/0'></content-ref><content-ref src='/page/50/PageHeader/21'></content-ref><content-ref src='/page/50/ListGroup/215'></content-ref><content-ref src='/page/50/Text/3'></content-ref><content-ref src='/page/50/SectionHeader/4'></content-ref><content-ref src='/page/50/Text/5'></content-ref><content-ref src='/page/50/Text/6'></content-ref><content-ref src='/page/50/Code/7'></content-ref><content-ref src='/page/50/Text/8'></content-ref><content-ref src='/page/50/Text/9'></content-ref><content-ref src='/page/50/Code/10'></content-ref><content-ref src='/page/50/Text/11'></content-ref><content-ref src='/page/50/Code/12'></content-ref><content-ref src='/page/50/Code/214'></content-ref><content-ref src='/page/50/ListGroup/216'></content-ref><content-ref src='/page/50/Text/19'></content-ref><content-ref src='/page/50/ListItem/20'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/50/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.6455078125,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.6455078125,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/49/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/50/PageHeader/21",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.76318359375
            ],
            [
              525.041015625,
              60.76318359375
            ],
            [
              525.041015625,
              69.75439453125
            ],
            [
              514.880859375,
              69.75439453125
            ]
          ],
          "bbox": [
            514.880859375,
            60.76318359375,
            525.041015625,
            69.75439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/49/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/50/ListGroup/215",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/50/ListItem/1'></content-ref><content-ref src='/page/50/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              128.9443359375,
              88.7381591796875
            ],
            [
              525.6033325195312,
              88.7381591796875
            ],
            [
              525.6033325195312,
              145.12188720703125
            ],
            [
              128.9443359375,
              145.12188720703125
            ]
          ],
          "bbox": [
            128.9443359375,
            88.7381591796875,
            525.6033325195312,
            145.12188720703125
          ],
          "children": [
            {
              "id": "/page/50/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>stack diagram:</b> A graphical representation of a stack of functions, their variables, and the values they refer to.</li>",
              "polygon": [
                [
                  129.5419921875,
                  88.7381591796875
                ],
                [
                  525.6033325195312,
                  88.7381591796875
                ],
                [
                  525.6033325195312,
                  110.99188232421875
                ],
                [
                  129.5419921875,
                  110.99188232421875
                ]
              ],
              "bbox": [
                129.5419921875,
                88.7381591796875,
                525.6033325195312,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/50/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>frame:</b> A box in a stack diagram that represents a function call. It contains the local variables and parameters of the function.</li>",
              "polygon": [
                [
                  128.9443359375,
                  122.58984375
                ],
                [
                  525.6031494140625,
                  122.58984375
                ],
                [
                  525.6031494140625,
                  145.12188720703125
                ],
                [
                  128.9443359375,
                  145.12188720703125
                ]
              ],
              "bbox": [
                128.9443359375,
                122.58984375,
                525.6031494140625,
                145.12188720703125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/49/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/49/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/50/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>traceback:</b> A list of the functions that are executing, printed when an exception occurs.</p>",
          "polygon": [
            [
              129.09375,
              156.99713134765625
            ],
            [
              512.3532104492188,
              156.99713134765625
            ],
            [
              512.3532104492188,
              167.056884765625
            ],
            [
              129.09375,
              167.056884765625
            ]
          ],
          "bbox": [
            129.09375,
            156.99713134765625,
            512.3532104492188,
            167.056884765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/49/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/50/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-50-0\"></span><b>3.16 Exercises</b></h4>",
          "polygon": [
            [
              128.3466796875,
              199.51275634765625
            ],
            [
              228.80398559570312,
              199.51275634765625
            ],
            [
              228.80398559570312,
              213.85894775390625
            ],
            [
              128.3466796875,
              213.85894775390625
            ]
          ],
          "bbox": [
            128.3466796875,
            199.51275634765625,
            228.80398559570312,
            213.85894775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 3.3.</b> <i>Python provides a built-in function called</i> len <i>that returns the length of a string, so</i> <i>the value of</i> len('allen') <i>is 5.</i></p>",
          "polygon": [
            [
              128.9443359375,
              227.485595703125
            ],
            [
              525.6041870117188,
              227.485595703125
            ],
            [
              525.6041870117188,
              249.665283203125
            ],
            [
              128.9443359375,
              249.665283203125
            ]
          ],
          "bbox": [
            128.9443359375,
            227.485595703125,
            525.6041870117188,
            249.665283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a function named</i> right_justify <i>that takes a string named</i> s <i>as a parameter and prints the</i> <i>string with enough leading spaces so that the last letter of the string is in column 70 of the display.</i></p>",
          "polygon": [
            [
              128.6455078125,
              260.8555908203125
            ],
            [
              525.5986938476562,
              260.8555908203125
            ],
            [
              525.5986938476562,
              283.271484375
            ],
            [
              128.6455078125,
              283.271484375
            ]
          ],
          "bbox": [
            128.6455078125,
            260.8555908203125,
            525.5986938476562,
            283.271484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; right_justify('allen')</pre>",
          "polygon": [
            [
              128.794921875,
              290.2767333984375
            ],
            [
              265.5583801269531,
              290.2767333984375
            ],
            [
              265.5583801269531,
              300.23931884765625
            ],
            [
              128.794921875,
              300.23931884765625
            ]
          ],
          "bbox": [
            128.794921875,
            290.2767333984375,
            265.5583801269531,
            300.23931884765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">allen</p>",
          "polygon": [
            [
              469.49200439453125,
              302.4707336425781
            ],
            [
              495.6438293457031,
              302.4707336425781
            ],
            [
              495.6438293457031,
              312.4333190917969
            ],
            [
              469.49200439453125,
              312.4333190917969
            ]
          ],
          "bbox": [
            469.49200439453125,
            302.4707336425781,
            495.6438293457031,
            312.4333190917969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 3.4.</b> <i>A function object is a value you can assign to a variable or pass as an argument. For</i> <i>example,</i> do_twice <i>is a function that takes a function object as an argument and calls it twice:</i></p>",
          "polygon": [
            [
              128.9443359375,
              314.40234375
            ],
            [
              525.5955200195312,
              314.40234375
            ],
            [
              525.5955200195312,
              337.60546875
            ],
            [
              128.9443359375,
              337.60546875
            ]
          ],
          "bbox": [
            128.9443359375,
            314.40234375,
            525.5955200195312,
            337.60546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Code/10",
          "block_type": "Code",
          "html": "<pre>def do_twice(f):\n    f()\n    f()</pre>",
          "polygon": [
            [
              127.67431640625,
              344.0637512207031
            ],
            [
              215.75390625,
              344.0637512207031
            ],
            [
              215.75390625,
              382.46484375
            ],
            [
              127.67431640625,
              382.46484375
            ]
          ],
          "bbox": [
            127.67431640625,
            344.0637512207031,
            215.75390625,
            382.46484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Here's an example that uses</i> do_twice <i>to call a function named</i> print_spam <i>twice.</i></p>",
          "polygon": [
            [
              128.794921875,
              385.6336364746094
            ],
            [
              465.873046875,
              385.6336364746094
            ],
            [
              465.873046875,
              395.6193542480469
            ],
            [
              128.794921875,
              395.6193542480469
            ]
          ],
          "bbox": [
            128.794921875,
            385.6336364746094,
            465.873046875,
            395.6193542480469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Code/12",
          "block_type": "Code",
          "html": "<pre>def print_spam():\n    print 'spam'</pre>",
          "polygon": [
            [
              127.97314453125,
              402.86077880859375
            ],
            [
              218.5261993408203,
              402.86077880859375
            ],
            [
              218.5261993408203,
              425.0173645019531
            ],
            [
              127.97314453125,
              425.0173645019531
            ]
          ],
          "bbox": [
            127.97314453125,
            402.86077880859375,
            218.5261993408203,
            425.0173645019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/Code/214",
          "block_type": "Code",
          "html": "<pre>do_twice(print_spam)</pre>",
          "polygon": [
            [
              128.27197265625,
              439.44378662109375
            ],
            [
              234.21728515625,
              439.44378662109375
            ],
            [
              234.21728515625,
              449.4063720703125
            ],
            [
              128.27197265625,
              449.4063720703125
            ]
          ],
          "bbox": [
            128.27197265625,
            439.44378662109375,
            234.21728515625,
            449.4063720703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/ListGroup/216",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/50/ListItem/14'></content-ref><content-ref src='/page/50/ListItem/15'></content-ref><content-ref src='/page/50/ListItem/16'></content-ref><content-ref src='/page/50/ListItem/17'></content-ref><content-ref src='/page/50/ListItem/18'></content-ref></ul></p>",
          "polygon": [
            [
              140.0009765625,
              465.22265625
            ],
            [
              525.9375,
              465.22265625
            ],
            [
              525.9375,
              624.1552429199219
            ],
            [
              140.0009765625,
              624.1552429199219
            ]
          ],
          "bbox": [
            140.0009765625,
            465.22265625,
            525.9375,
            624.1552429199219
          ],
          "children": [
            {
              "id": "/page/50/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Type this example into a script and test it.</i></li>",
              "polygon": [
                [
                  142.05303955078125,
                  465.22265625
                ],
                [
                  322.29638671875,
                  465.22265625
                ],
                [
                  322.29638671875,
                  475.4422302246094
                ],
                [
                  142.05303955078125,
                  475.4422302246094
                ]
              ],
              "bbox": [
                142.05303955078125,
                465.22265625,
                322.29638671875,
                475.4422302246094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/50/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/50/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Modify</i> do_twice <i>so that it takes two arguments, a function object and a value, and calls the</i> <i>function twice, passing the value as an argument.</i></li>",
              "polygon": [
                [
                  141.345703125,
                  487.4146423339844
                ],
                [
                  525.6005249023438,
                  487.4146423339844
                ],
                [
                  525.6005249023438,
                  509.5722351074219
                ],
                [
                  141.345703125,
                  509.5722351074219
                ]
              ],
              "bbox": [
                141.345703125,
                487.4146423339844,
                525.6005249023438,
                509.5722351074219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/50/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/50/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. Write a more general version of</i> print_spam<i>, called</i> print_twice<i>, that takes a string as a</i> <i>parameter and prints it twice.</i></li>",
              "polygon": [
                [
                  140.8974609375,
                  521.296875
                ],
                [
                  525.602783203125,
                  521.296875
                ],
                [
                  525.602783203125,
                  543.7012329101562
                ],
                [
                  140.8974609375,
                  543.7012329101562
                ]
              ],
              "bbox": [
                140.8974609375,
                521.296875,
                525.602783203125,
                543.7012329101562
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/50/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/50/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. Use the modified version of</i> do_twice <i>to call</i> print_twice <i>twice, passing</i> 'spam' <i>as an</i> <i>argument.</i></li>",
              "polygon": [
                [
                  140.5986328125,
                  555.6736297607422
                ],
                [
                  525.6006469726562,
                  555.6736297607422
                ],
                [
                  525.6006469726562,
                  577.8312377929688
                ],
                [
                  140.5986328125,
                  577.8312377929688
                ]
              ],
              "bbox": [
                140.5986328125,
                555.6736297607422,
                525.6006469726562,
                577.8312377929688
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/50/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/50/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>5. Define a new function called</i> do_four <i>that takes a function object and a value and calls the</i> <i>function four times, passing the value as a parameter. There should be only two statements in</i> <i>the body of this function, not four.</i></li>",
              "polygon": [
                [
                  140.0009765625,
                  589.74609375
                ],
                [
                  525.9375,
                  589.74609375
                ],
                [
                  525.9375,
                  624.1552429199219
                ],
                [
                  140.0009765625,
                  624.1552429199219
                ]
              ],
              "bbox": [
                140.0009765625,
                589.74609375,
                525.9375,
                624.1552429199219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/40/SectionHeader/1",
                "2": "/page/48/SectionHeader/3",
                "4": "/page/50/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/50/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/do_four.py\">http:</a> <a href=\"http://thinkpython.com/code/do_four.py\">//</a> <a href=\"http://thinkpython.com/code/do_four.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/do_four.py\">com/</a> <a href=\"http://thinkpython.com/code/do_four.py\">code/</a> <a href=\"http://thinkpython.com/code/do_four.py\">do_</a> <a href=\"http://thinkpython.com/code/do_four.py\">four.</a> <a href=\"http://thinkpython.com/code/do_four.py\">py</a> <i>.</i> <b>Exercise 3.5.</b> <i>This exercise can be done using only the statements and other features we have learned</i> <i>so far.</i></p>",
          "polygon": [
            [
              126.404296875,
              640.1709594726562
            ],
            [
              526.236328125,
              640.1709594726562
            ],
            [
              526.236328125,
              674.6032638549805
            ],
            [
              126.404296875,
              674.6032638549805
            ]
          ],
          "bbox": [
            126.404296875,
            640.1709594726562,
            526.236328125,
            674.6032638549805
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/50/ListItem/20",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>1. Write a function that draws a grid like the following:</i></li>",
          "polygon": [
            [
              141.4951171875,
              690.6796875
            ],
            [
              365.90264892578125,
              690.6796875
            ],
            [
              365.90264892578125,
              700.6622619628906
            ],
            [
              141.4951171875,
              700.6622619628906
            ]
          ],
          "bbox": [
            141.4951171875,
            690.6796875,
            365.90264892578125,
            700.6622619628906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "2": "/page/48/SectionHeader/3",
        "4": "/page/50/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/51/Page/112",
      "block_type": "Page",
      "html": "<content-ref src='/page/51/PageHeader/0'></content-ref><content-ref src='/page/51/PageHeader/10'></content-ref><content-ref src='/page/51/Code/1'></content-ref><content-ref src='/page/51/Text/2'></content-ref><content-ref src='/page/51/Code/3'></content-ref><content-ref src='/page/51/Text/4'></content-ref><content-ref src='/page/51/Code/5'></content-ref><content-ref src='/page/51/Text/6'></content-ref><content-ref src='/page/51/Text/7'></content-ref><content-ref src='/page/51/ListItem/8'></content-ref><content-ref src='/page/51/Text/9'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/51/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.05322265625
            ],
            [
              482.4034118652344,
              61.05322265625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.05322265625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/PageHeader/10",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.166015625,
              60.76318359375
            ],
            [
              96.521484375,
              60.76318359375
            ],
            [
              96.521484375,
              70.23779296875
            ],
            [
              85.166015625,
              70.23779296875
            ]
          ],
          "bbox": [
            85.166015625,
            60.76318359375,
            96.521484375,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Code/1",
          "block_type": "Code",
          "html": "<pre>+ - - - - + - - - - +\n| | |\n| | |\n| | |\n| | |\n+ - - - - + - - - - +\n| | |\n| | |\n| | |\n| | |\n+ - - - - + - - - - +</pre>",
          "polygon": [
            [
              111.3070068359375,
              88.68572998046875
            ],
            [
              223.6728515625,
              88.68572998046875
            ],
            [
              223.6728515625,
              220.59130859375
            ],
            [
              111.3070068359375,
              220.59130859375
            ]
          ],
          "bbox": [
            111.3070068359375,
            88.68572998046875,
            223.6728515625,
            220.59130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Hint: to print more than one value on a line, you can print a comma-separated sequence:</i></p>",
          "polygon": [
            [
              110.56640625,
              229.7109375
            ],
            [
              466.76953125,
              229.7109375
            ],
            [
              466.76953125,
              240.74615478515625
            ],
            [
              110.56640625,
              240.74615478515625
            ]
          ],
          "bbox": [
            110.56640625,
            229.7109375,
            466.76953125,
            240.74615478515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Code/3",
          "block_type": "Code",
          "html": "<pre>print '+', '-'</pre>",
          "polygon": [
            [
              109.5205078125,
              249.626953125
            ],
            [
              184.51536560058594,
              249.626953125
            ],
            [
              184.51536560058594,
              260.947265625
            ],
            [
              109.5205078125,
              260.947265625
            ]
          ],
          "bbox": [
            109.5205078125,
            249.626953125,
            184.51536560058594,
            260.947265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If the sequence ends with a comma, Python leaves the line unfinished, so the value printed</i> <i>next appears on the same line.</i></p>",
          "polygon": [
            [
              109.5205078125,
              270.896484375
            ],
            [
              483.50390625,
              270.896484375
            ],
            [
              483.50390625,
              293.2961120605469
            ],
            [
              109.5205078125,
              293.2961120605469
            ]
          ],
          "bbox": [
            109.5205078125,
            270.896484375,
            483.50390625,
            293.2961120605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Code/5",
          "block_type": "Code",
          "html": "<pre>print '+',\nprint '-'</pre>",
          "polygon": [
            [
              109.74462890625,
              303.53466796875
            ],
            [
              171.52734375,
              303.53466796875
            ],
            [
              171.52734375,
              329.291015625
            ],
            [
              109.74462890625,
              329.291015625
            ]
          ],
          "bbox": [
            109.74462890625,
            303.53466796875,
            171.52734375,
            329.291015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The output of these statements is</i> '+ -'<i>.</i></p>",
          "polygon": [
            [
              111.08935546875,
              335.865234375
            ],
            [
              273.878662109375,
              335.865234375
            ],
            [
              273.878662109375,
              345.8702697753906
            ],
            [
              111.08935546875,
              345.8702697753906
            ]
          ],
          "bbox": [
            111.08935546875,
            335.865234375,
            273.878662109375,
            345.8702697753906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>A</i> print <i>statement all by itself ends the current line and goes to the next line.</i></p>",
          "polygon": [
            [
              109.96875,
              351.52734375
            ],
            [
              422.7018737792969,
              351.52734375
            ],
            [
              422.7018737792969,
              362.04925537109375
            ],
            [
              109.96875,
              362.04925537109375
            ]
          ],
          "bbox": [
            109.96875,
            351.52734375,
            422.7018737792969,
            362.04925537109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/ListItem/8",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>2. Write a function that draws a similar grid with four rows and four columns.</i></li>",
          "polygon": [
            [
              98.85298156738281,
              371.443359375
            ],
            [
              416.8094482421875,
              371.443359375
            ],
            [
              416.8094482421875,
              382.19012451171875
            ],
            [
              98.85298156738281,
              382.19012451171875
            ]
          ],
          "bbox": [
            98.85298156738281,
            371.443359375,
            416.8094482421875,
            382.19012451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/51/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/grid.py\">http:</a> <a href=\"http://thinkpython.com/code/grid.py\">//</a> <a href=\"http://thinkpython.com/code/grid.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/grid.py\">com/</a> <a href=\"http://thinkpython.com/code/grid.py\">code/</a> <a href=\"http://thinkpython.com/code/grid.py\">grid.</a> <a href=\"http://thinkpython.com/code/grid.py\">py</a> <i>. Credit: This exercise is based on an</i> <i>exercise in Oualline,</i> Practical C Programming, Third Edition<i>, O'Reilly Media, 1997.</i></p>",
          "polygon": [
            [
              85.763671875,
              395.806640625
            ],
            [
              482.403076171875,
              395.806640625
            ],
            [
              482.403076171875,
              418.81640625
            ],
            [
              85.763671875,
              418.81640625
            ]
          ],
          "bbox": [
            85.763671875,
            395.806640625,
            482.403076171875,
            418.81640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/48/SectionHeader/3",
            "4": "/page/50/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/40/SectionHeader/1",
        "2": "/page/48/SectionHeader/3",
        "4": "/page/50/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/52/Page/115",
      "block_type": "Page",
      "html": "<content-ref src='/page/52/SectionHeader/0'></content-ref><content-ref src='/page/52/SectionHeader/1'></content-ref><content-ref src='/page/52/Text/2'></content-ref><content-ref src='/page/52/SectionHeader/3'></content-ref><content-ref src='/page/52/Text/4'></content-ref><content-ref src='/page/52/Text/5'></content-ref><content-ref src='/page/52/Text/6'></content-ref><content-ref src='/page/52/Code/7'></content-ref><content-ref src='/page/52/Text/8'></content-ref><content-ref src='/page/52/Text/9'></content-ref><content-ref src='/page/52/Text/10'></content-ref><content-ref src='/page/52/Text/11'></content-ref><content-ref src='/page/52/Code/12'></content-ref><content-ref src='/page/52/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/52/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-52-0\"></span><b>Chapter 4</b></h2>",
          "polygon": [
            [
              128.6455078125,
              165.43450927734375
            ],
            [
              221.2822265625,
              165.43450927734375
            ],
            [
              221.2822265625,
              186.09698486328125
            ],
            [
              128.6455078125,
              186.09698486328125
            ]
          ],
          "bbox": [
            128.6455078125,
            165.43450927734375,
            221.2822265625,
            186.09698486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/40/SectionHeader/1",
            "2": "/page/52/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/52/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Case study: interface design</b></h1>",
          "polygon": [
            [
              128.6455078125,
              222.10333251953125
            ],
            [
              448.83984375,
              222.10333251953125
            ],
            [
              448.83984375,
              246.890380859375
            ],
            [
              128.6455078125,
              246.890380859375
            ]
          ],
          "bbox": [
            128.6455078125,
            222.10333251953125,
            448.83984375,
            246.890380859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Code examples from this chapter are available from <a href=\"http://thinkpython.com/code/polygon.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/polygon.py\">polygon.py</a>.</p>",
          "polygon": [
            [
              128.3466796875,
              296.2265625
            ],
            [
              526.53515625,
              296.2265625
            ],
            [
              526.53515625,
              318.7899475097656
            ],
            [
              128.3466796875,
              318.7899475097656
            ]
          ],
          "bbox": [
            128.3466796875,
            296.2265625,
            526.53515625,
            318.7899475097656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/52/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-52-1\"></span><b>4.1 TurtleWorld</b></h4>",
          "polygon": [
            [
              128.794921875,
              351.9140625
            ],
            [
              241.05563354492188,
              351.9140625
            ],
            [
              241.05563354492188,
              366.4170227050781
            ],
            [
              128.794921875,
              366.4170227050781
            ]
          ],
          "bbox": [
            128.794921875,
            351.9140625,
            241.05563354492188,
            366.4170227050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To accompany this book, I have written a package called Swampy. You can download Swampy from <a href=\"http://thinkpython.com/swampy\">http://thinkpython.com/swampy</a>; follow the instructions there to install Swampy on your system.</p>",
          "polygon": [
            [
              128.794921875,
              380.337890625
            ],
            [
              526.236328125,
              380.337890625
            ],
            [
              526.236328125,
              414.95196533203125
            ],
            [
              128.794921875,
              414.95196533203125
            ]
          ],
          "bbox": [
            128.794921875,
            380.337890625,
            526.236328125,
            414.95196533203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>package</b> is a collection of modules; one of the modules in Swampy is TurtleWorld, which provides a set of functions for drawing lines by steering turtles around the screen.</p>",
          "polygon": [
            [
              129.09375,
              426.1640625
            ],
            [
              525.9375,
              426.1640625
            ],
            [
              525.9375,
              448.59698486328125
            ],
            [
              129.09375,
              448.59698486328125
            ]
          ],
          "bbox": [
            129.09375,
            426.1640625,
            525.9375,
            448.59698486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If Swampy is installed as a package on your system, you can import TurtleWorld like this:</p>",
          "polygon": [
            [
              128.0478515625,
              459.80859375
            ],
            [
              525.9375,
              459.80859375
            ],
            [
              525.9375,
              470.0469970703125
            ],
            [
              128.0478515625,
              470.0469970703125
            ]
          ],
          "bbox": [
            128.0478515625,
            459.80859375,
            525.9375,
            470.0469970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Code/7",
          "block_type": "Code",
          "html": "<pre>from swampy.TurtleWorld import *</pre>",
          "polygon": [
            [
              128.27197265625,
              477.4138488769531
            ],
            [
              296.9815979003906,
              477.4138488769531
            ],
            [
              296.9815979003906,
              487.3764343261719
            ],
            [
              128.27197265625,
              487.3764343261719
            ]
          ],
          "bbox": [
            128.27197265625,
            477.4138488769531,
            296.9815979003906,
            487.3764343261719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you downloaded the Swampy modules but did not install them as a package, you can either work in the directory that contains the Swampy files, or add that directory to Python's search path. Then you can import TurtleWorld like this:</p>",
          "polygon": [
            [
              129.09375,
              495.04241943359375
            ],
            [
              525.9375,
              495.04241943359375
            ],
            [
              525.9375,
              529.41796875
            ],
            [
              129.09375,
              529.41796875
            ]
          ],
          "bbox": [
            129.09375,
            495.04241943359375,
            525.9375,
            529.41796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from TurtleWorld import *</p>",
          "polygon": [
            [
              127.30078125,
              536.7598571777344
            ],
            [
              260.578125,
              536.7598571777344
            ],
            [
              260.578125,
              546.7224578857422
            ],
            [
              127.30078125,
              546.7224578857422
            ]
          ],
          "bbox": [
            127.30078125,
            536.7598571777344,
            260.578125,
            546.7224578857422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The details of the installation process and setting Python's search path depend on your system, so rather than include those details here, I will try to maintain current information for several systems at <a href=\"http://thinkpython.com/swampy\">http://thinkpython.com/swampy</a></p>",
          "polygon": [
            [
              128.49609375,
              554.3884124755859
            ],
            [
              526.53515625,
              554.3884124755859
            ],
            [
              526.53515625,
              588.7400207519531
            ],
            [
              128.49609375,
              588.7400207519531
            ]
          ],
          "bbox": [
            128.49609375,
            554.3884124755859,
            526.53515625,
            588.7400207519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Create a file named mypolygon.py and type in the following code:</p>",
          "polygon": [
            [
              127.52490234375,
              600.0778656005859
            ],
            [
              419.64520263671875,
              600.0778656005859
            ],
            [
              419.64520263671875,
              610.1900177001953
            ],
            [
              127.52490234375,
              610.1900177001953
            ]
          ],
          "bbox": [
            127.52490234375,
            600.0778656005859,
            419.64520263671875,
            610.1900177001953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Code/12",
          "block_type": "Code",
          "html": "<pre>from swampy.TurtleWorld import *\nworld = TurtleWorld()\nbob = Turtle()\nprint bob</pre>",
          "polygon": [
            [
              128.49609375,
              617.5568695068359
            ],
            [
              296.98162841796875,
              617.5568695068359
            ],
            [
              296.98162841796875,
              690.29296875
            ],
            [
              128.49609375,
              690.29296875
            ]
          ],
          "bbox": [
            128.49609375,
            617.5568695068359,
            296.98162841796875,
            690.29296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/52/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">wait_for_user()</p>",
          "polygon": [
            [
              129.6000213623047,
              690.7228546142578
            ],
            [
              208.06546020507812,
              690.7228546142578
            ],
            [
              208.06546020507812,
              700.6854553222656
            ],
            [
              129.6000213623047,
              700.6854553222656
            ]
          ],
          "bbox": [
            129.6000213623047,
            690.7228546142578,
            208.06546020507812,
            700.6854553222656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "4": "/page/52/SectionHeader/3"
      },
      "images": null
    },
    {
      "id": "/page/53/Page/204",
      "block_type": "Page",
      "html": "<content-ref src='/page/53/PageHeader/0'></content-ref><content-ref src='/page/53/Text/1'></content-ref><content-ref src='/page/53/Text/2'></content-ref><content-ref src='/page/53/Text/3'></content-ref><content-ref src='/page/53/Text/4'></content-ref><content-ref src='/page/53/Text/5'></content-ref><content-ref src='/page/53/Text/6'></content-ref><content-ref src='/page/53/Text/7'></content-ref><content-ref src='/page/53/Text/8'></content-ref><content-ref src='/page/53/Text/9'></content-ref><content-ref src='/page/53/Text/10'></content-ref><content-ref src='/page/53/Text/11'></content-ref><content-ref src='/page/53/SectionHeader/12'></content-ref><content-ref src='/page/53/Text/13'></content-ref><content-ref src='/page/53/Code/14'></content-ref><content-ref src='/page/53/Text/15'></content-ref><content-ref src='/page/53/Code/16'></content-ref><content-ref src='/page/53/Text/17'></content-ref><content-ref src='/page/53/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/53/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.90625,
              60.85986328125
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line imports everything from the TurtleWorld module in the swampy package.</p>",
          "polygon": [
            [
              85.46484375,
              87.978515625
            ],
            [
              468.481689453125,
              87.978515625
            ],
            [
              468.481689453125,
              98.79791259765625
            ],
            [
              85.46484375,
              98.79791259765625
            ]
          ],
          "bbox": [
            85.46484375,
            87.978515625,
            468.481689453125,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next lines create a TurtleWorld assigned to world and a Turtle assigned to bob. Printing bob yields something like:</p>",
          "polygon": [
            [
              85.6142578125,
              108.5712890625
            ],
            [
              482.90625,
              108.5712890625
            ],
            [
              482.90625,
              131.42388916015625
            ],
            [
              85.6142578125,
              131.42388916015625
            ]
          ],
          "bbox": [
            85.6142578125,
            108.5712890625,
            482.90625,
            131.42388916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&lt;TurtleWorld.Turtle instance at 0xb7bfbf4c&gt;</p>",
          "polygon": [
            [
              85.83837890625,
              137.478515625
            ],
            [
              311.37890625,
              137.478515625
            ],
            [
              311.37890625,
              147.73529052734375
            ],
            [
              85.83837890625,
              147.73529052734375
            ]
          ],
          "bbox": [
            85.83837890625,
            137.478515625,
            311.37890625,
            147.73529052734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This means that bob refers to an <b>instance</b> of a Turtle as defined in module TurtleWorld. In this context, \"instance\" means a member of a set; this Turtle is one of the set of possible Turtles.</p>",
          "polygon": [
            [
              85.6142578125,
              154.0107421875
            ],
            [
              482.4034423828125,
              154.0107421875
            ],
            [
              482.4034423828125,
              188.73388671875
            ],
            [
              85.6142578125,
              188.73388671875
            ]
          ],
          "bbox": [
            85.6142578125,
            154.0107421875,
            482.4034423828125,
            188.73388671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">wait_for_user tells TurtleWorld to wait for the user to do something, although in this case there's not much for the user to do except close the window.</p>",
          "polygon": [
            [
              85.46484375,
              198.580078125
            ],
            [
              482.3957824707031,
              198.580078125
            ],
            [
              482.3957824707031,
              221.35992431640625
            ],
            [
              85.46484375,
              221.35992431640625
            ]
          ],
          "bbox": [
            85.46484375,
            198.580078125,
            482.3957824707031,
            221.35992431640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">TurtleWorld provides several turtle-steering functions: fd and bk for forward and backward, and lt and rt for left and right turns. Also, each Turtle is holding a pen, which is either down or up; if the pen is down, the Turtle leaves a trail when it moves. The functions pu and pd stand for \"pen up\" and \"pen down.\"</p>",
          "polygon": [
            [
              85.763671875,
              231.64453125
            ],
            [
              482.4033203125,
              231.64453125
            ],
            [
              482.4033203125,
              278.37493896484375
            ],
            [
              85.763671875,
              278.37493896484375
            ]
          ],
          "bbox": [
            85.763671875,
            231.64453125,
            482.4033203125,
            278.37493896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To draw a right angle, add these lines to the program (after creating bob and before calling wait_for_user):</p>",
          "polygon": [
            [
              85.6142578125,
              288.685546875
            ],
            [
              482.90625,
              288.685546875
            ],
            [
              482.90625,
              311.00091552734375
            ],
            [
              85.6142578125,
              311.00091552734375
            ]
          ],
          "bbox": [
            85.6142578125,
            288.685546875,
            482.90625,
            311.00091552734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">fd(bob, 100) lt(bob) fd(bob, 100)</p>",
          "polygon": [
            [
              85.83837890625,
              316.529296875
            ],
            [
              149.16439819335938,
              316.529296875
            ],
            [
              149.16439819335938,
              351.70135498046875
            ],
            [
              85.83837890625,
              351.70135498046875
            ]
          ],
          "bbox": [
            85.83837890625,
            316.529296875,
            149.16439819335938,
            351.70135498046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line tells bob to take 100 steps forward. The second line tells him to turn left.</p>",
          "polygon": [
            [
              85.763671875,
              357.71484375
            ],
            [
              460.2214660644531,
              357.71484375
            ],
            [
              460.2214660644531,
              368.3109130859375
            ],
            [
              85.763671875,
              368.3109130859375
            ]
          ],
          "bbox": [
            85.763671875,
            357.71484375,
            460.2214660644531,
            368.3109130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you run this program, you should see bob move east and then north, leaving two line segments behind.</p>",
          "polygon": [
            [
              85.46484375,
              378.2109375
            ],
            [
              482.39788818359375,
              378.2109375
            ],
            [
              482.39788818359375,
              400.9369201660156
            ],
            [
              85.46484375,
              400.9369201660156
            ]
          ],
          "bbox": [
            85.46484375,
            378.2109375,
            482.39788818359375,
            400.9369201660156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now modify the program to draw a square. Don't go on until you've got it working!</p>",
          "polygon": [
            [
              85.6142578125,
              410.6953125
            ],
            [
              458.40234375,
              410.6953125
            ],
            [
              458.40234375,
              421.3689270019531
            ],
            [
              85.6142578125,
              421.3689270019531
            ]
          ],
          "bbox": [
            85.6142578125,
            410.6953125,
            458.40234375,
            421.3689270019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/52/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/53/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-53-0\"></span><b>4.2 Simple repetition</b></h4>",
          "polygon": [
            [
              85.53955078125,
              451.5947570800781
            ],
            [
              233.82159423828125,
              451.5947570800781
            ],
            [
              233.82159423828125,
              465.94097900390625
            ],
            [
              85.53955078125,
              465.94097900390625
            ]
          ],
          "bbox": [
            85.53955078125,
            451.5947570800781,
            233.82159423828125,
            465.94097900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Chances are you wrote something like this (leaving out the code that creates TurtleWorld and waits for the user):</p>",
          "polygon": [
            [
              85.3154296875,
              478.6993103027344
            ],
            [
              482.4034423828125,
              478.6993103027344
            ],
            [
              482.4034423828125,
              500.85589599609375
            ],
            [
              85.3154296875,
              500.85589599609375
            ]
          ],
          "bbox": [
            85.3154296875,
            478.6993103027344,
            482.4034423828125,
            500.85589599609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/53/Code/14",
          "block_type": "Code",
          "html": "<pre>fd(bob, 100)\nlt(bob)\nfd(bob, 100)\nlt(bob)\nfd(bob, 100)\nlt(bob)\nfd(bob, 100)</pre>",
          "polygon": [
            [
              85.763671875,
              507.2037353515625
            ],
            [
              157.6318359375,
              507.2037353515625
            ],
            [
              157.6318359375,
              626.9153594970703
            ],
            [
              85.763671875,
              626.9153594970703
            ]
          ],
          "bbox": [
            85.763671875,
            507.2037353515625,
            157.6318359375,
            626.9153594970703
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We can do the same thing more concisely with a for statement. Add this example to mypolygon.py and run it again:</p>",
          "polygon": [
            [
              85.6142578125,
              633.05859375
            ],
            [
              482.90625,
              633.05859375
            ],
            [
              482.90625,
              656.26171875
            ],
            [
              85.6142578125,
              656.26171875
            ]
          ],
          "bbox": [
            85.6142578125,
            633.05859375,
            482.90625,
            656.26171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/53/Code/16",
          "block_type": "Code",
          "html": "<pre>for i in range(4):\n    print 'Hello!'</pre>",
          "polygon": [
            [
              86.4000473022461,
              661.67578125
            ],
            [
              180.54661560058594,
              661.67578125
            ],
            [
              180.54661560058594,
              684.2253494262695
            ],
            [
              86.4000473022461,
              684.2253494262695
            ]
          ],
          "bbox": [
            86.4000473022461,
            661.67578125,
            180.54661560058594,
            684.2253494262695
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You should see something like this:</p>",
          "polygon": [
            [
              86.361328125,
              690.872314453125
            ],
            [
              242.349609375,
              690.872314453125
            ],
            [
              242.349609375,
              700.8349151611328
            ],
            [
              86.361328125,
              700.8349151611328
            ]
          ],
          "bbox": [
            86.361328125,
            690.872314453125,
            242.349609375,
            700.8349151611328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/53/Text/18",
          "block_type": "Text",
          "html": "<p>32</p>\n",
          "polygon": [
            [
              85.09130859375,
              60.521484375
            ],
            [
              96.74560546875,
              60.521484375
            ],
            [
              96.74560546875,
              69.5126953125
            ],
            [
              85.09130859375,
              69.5126953125
            ]
          ],
          "bbox": [
            85.09130859375,
            60.521484375,
            96.74560546875,
            69.5126953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "4": "/page/53/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/54/Page/236",
      "block_type": "Page",
      "html": "<content-ref src='/page/54/PageHeader/0'></content-ref><content-ref src='/page/54/PageHeader/18'></content-ref><content-ref src='/page/54/Text/1'></content-ref><content-ref src='/page/54/Text/2'></content-ref><content-ref src='/page/54/Text/3'></content-ref><content-ref src='/page/54/Text/4'></content-ref><content-ref src='/page/54/TextInlineMath/5'></content-ref><content-ref src='/page/54/Text/6'></content-ref><content-ref src='/page/54/Text/7'></content-ref><content-ref src='/page/54/Text/8'></content-ref><content-ref src='/page/54/SectionHeader/9'></content-ref><content-ref src='/page/54/Text/10'></content-ref><content-ref src='/page/54/Text/11'></content-ref><content-ref src='/page/54/ListItem/12'></content-ref><content-ref src='/page/54/Text/13'></content-ref><content-ref src='/page/54/ListGroup/232'></content-ref><content-ref src='/page/54/Text/16'></content-ref><content-ref src='/page/54/ListItem/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/54/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.60000610351562,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.60000610351562,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.60000610351562,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.85986328125
            ],
            [
              526.236328125,
              60.85986328125
            ],
            [
              526.236328125,
              70.33447265625
            ],
            [
              514.880859375,
              70.33447265625
            ]
          ],
          "bbox": [
            514.880859375,
            60.85986328125,
            526.236328125,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Hello! Hello! Hello!</p>",
          "polygon": [
            [
              129.01904296875,
              87.78515625
            ],
            [
              161.666015625,
              87.78515625
            ],
            [
              161.666015625,
              124.13671875
            ],
            [
              129.01904296875,
              124.13671875
            ]
          ],
          "bbox": [
            129.01904296875,
            87.78515625,
            161.666015625,
            124.13671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Hello!</p>",
          "polygon": [
            [
              128.3466796875,
              125.26873779296875
            ],
            [
              160.98219299316406,
              125.26873779296875
            ],
            [
              160.98219299316406,
              136.2216796875
            ],
            [
              128.3466796875,
              136.2216796875
            ]
          ],
          "bbox": [
            128.3466796875,
            125.26873779296875,
            160.98219299316406,
            136.2216796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This is the simplest use of the for statement; we will see more later. But that should be enough to let you rewrite your square-drawing program. Don't go on until you do.</p>",
          "polygon": [
            [
              128.49609375,
              141.0556640625
            ],
            [
              525.5963134765625,
              141.0556640625
            ],
            [
              525.5963134765625,
              163.5699462890625
            ],
            [
              128.49609375,
              163.5699462890625
            ]
          ],
          "bbox": [
            128.49609375,
            141.0556640625,
            525.5963134765625,
            163.5699462890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a for statement that draws a square:</p>",
          "polygon": [
            [
              128.57080078125,
              172.9599609375
            ],
            [
              323.630859375,
              172.9599609375
            ],
            [
              323.630859375,
              183.53594970703125
            ],
            [
              128.57080078125,
              183.53594970703125
            ]
          ],
          "bbox": [
            128.57080078125,
            172.9599609375,
            323.630859375,
            183.53594970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/TextInlineMath/5",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">for i in range(4): fd(bob, 100) lt(bob)</p>",
          "polygon": [
            [
              129.5999755859375,
              189.41876220703125
            ],
            [
              223.7465362548828,
              189.41876220703125
            ],
            [
              223.7465362548828,
              225.650390625
            ],
            [
              129.5999755859375,
              225.650390625
            ]
          ],
          "bbox": [
            129.5999755859375,
            189.41876220703125,
            223.7465362548828,
            225.650390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The syntax of a for statement is similar to a function definition. It has a header that ends with a colon and an indented body. The body can contain any number of statements.</p>",
          "polygon": [
            [
              129.09375,
              229.7109375
            ],
            [
              525.6016845703125,
              229.7109375
            ],
            [
              525.6016845703125,
              252.10784912109375
            ],
            [
              129.09375,
              252.10784912109375
            ]
          ],
          "bbox": [
            129.09375,
            229.7109375,
            525.6016845703125,
            252.10784912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A for statement is sometimes called a <b>loop</b> because the flow of execution runs through the body and then loops back to the top. In this case, it runs the body four times.</p>",
          "polygon": [
            [
              129.09375,
              261.80859375
            ],
            [
              525.6040649414062,
              261.80859375
            ],
            [
              525.6040649414062,
              284.2688293457031
            ],
            [
              129.09375,
              284.2688293457031
            ]
          ],
          "bbox": [
            129.09375,
            261.80859375,
            525.6040649414062,
            284.2688293457031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This version is actually a little different from the previous square-drawing code because it makes another turn after drawing the last side of the square. The extra turn takes a little more time, but it simplifies the code if we do the same thing every time through the loop. This version also has the effect of leaving the turtle back in the starting position, facing in the starting direction.</p>",
          "polygon": [
            [
              128.794921875,
              293.90625
            ],
            [
              525.638671875,
              293.90625
            ],
            [
              525.638671875,
              353.07421875
            ],
            [
              128.794921875,
              353.07421875
            ]
          ],
          "bbox": [
            128.794921875,
            293.90625,
            525.638671875,
            353.07421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/53/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/54/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-54-0\"></span><b>4.3 Exercises</b></h4>",
          "polygon": [
            [
              128.0478515625,
              382.1136779785156
            ],
            [
              222.1787109375,
              382.1136779785156
            ],
            [
              222.1787109375,
              396.45989990234375
            ],
            [
              128.0478515625,
              396.45989990234375
            ]
          ],
          "bbox": [
            128.0478515625,
            382.1136779785156,
            222.1787109375,
            396.45989990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following is a series of exercises using TurtleWorld. They are meant to be fun, but they have a point, too. While you are working on them, think about what the point is.</p>",
          "polygon": [
            [
              129.2431640625,
              407.98828125
            ],
            [
              525.9375,
              407.98828125
            ],
            [
              525.9375,
              430.79083251953125
            ],
            [
              129.2431640625,
              430.79083251953125
            ]
          ],
          "bbox": [
            129.2431640625,
            407.98828125,
            525.9375,
            430.79083251953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following sections have solutions to the exercises, so don't look until you have finished (or at least tried).</p>",
          "polygon": [
            [
              128.794921875,
              440.0859375
            ],
            [
              525.638671875,
              440.0859375
            ],
            [
              525.638671875,
              462.95184326171875
            ],
            [
              128.794921875,
              462.95184326171875
            ]
          ],
          "bbox": [
            128.794921875,
            440.0859375,
            525.638671875,
            462.95184326171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/54/ListItem/12",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">1. Write a function called square that takes a parameter named t, which is a turtle. It should use the turtle to draw a square.</li>",
          "polygon": [
            [
              141.345703125,
              476.05078125
            ],
            [
              525.638671875,
              476.05078125
            ],
            [
              525.638671875,
              498.81884765625
            ],
            [
              141.345703125,
              498.81884765625
            ]
          ],
          "bbox": [
            141.345703125,
            476.05078125,
            525.638671875,
            498.81884765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/54/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Write a function call that passes bob as an argument to square, and then run the program again.</p>",
          "polygon": [
            [
              153.4482421875,
              504.81268310546875
            ],
            [
              525.6010131835938,
              504.81268310546875
            ],
            [
              525.6010131835938,
              527.1188354492188
            ],
            [
              153.4482421875,
              527.1188354492188
            ]
          ],
          "bbox": [
            153.4482421875,
            504.81268310546875,
            525.6010131835938,
            527.1188354492188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/54/ListGroup/232",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/54/ListItem/14'></content-ref><content-ref src='/page/54/ListItem/15'></content-ref></ul></p>",
          "polygon": [
            [
              140.0009765625,
              536.765625
            ],
            [
              525.9375,
              536.765625
            ],
            [
              525.9375,
              615.9328308105469
            ],
            [
              140.0009765625,
              615.9328308105469
            ]
          ],
          "bbox": [
            140.0009765625,
            536.765625,
            525.9375,
            615.9328308105469
          ],
          "children": [
            {
              "id": "/page/54/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. Add another parameter, named length, to square. Modify the body so length of the sides is length, and then modify the function call to provide a second argument. Run the program again. Test your program with a range of values for length.</li>",
              "polygon": [
                [
                  141.1962890625,
                  536.765625
                ],
                [
                  525.9375,
                  536.765625
                ],
                [
                  525.9375,
                  571.5258331298828
                ],
                [
                  141.1962890625,
                  571.5258331298828
                ]
              ],
              "bbox": [
                141.1962890625,
                536.765625,
                525.9375,
                571.5258331298828
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "4": "/page/54/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/54/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">3. The functions lt and rt make 90-degree turns by default, but you can provide a second argument that specifies the number of degrees. For example, lt(bob, 45) turns bob 45 degrees to the left.</li>",
              "polygon": [
                [
                  140.0009765625,
                  581.4326782226562
                ],
                [
                  525.9375,
                  581.4326782226562
                ],
                [
                  525.9375,
                  615.9328308105469
                ],
                [
                  140.0009765625,
                  615.9328308105469
                ]
              ],
              "bbox": [
                140.0009765625,
                581.4326782226562,
                525.9375,
                615.9328308105469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "4": "/page/54/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/54/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Make a copy of square and change the name to polygon. Add another parameter named n and modify the body so it draws an n-sided regular polygon. Hint: The exterior angles of an n-sided regular polygon are 360/<i>n</i> degrees.</p>",
          "polygon": [
            [
              152.5517578125,
              621.84375
            ],
            [
              525.9375,
              621.84375
            ],
            [
              525.9375,
              656.4278259277344
            ],
            [
              152.5517578125,
              656.4278259277344
            ]
          ],
          "bbox": [
            152.5517578125,
            621.84375,
            525.9375,
            656.4278259277344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/54/ListItem/17",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">4. Write a function called circle that takes a turtle, t, and radius, r, as parameters and that draws an approximate circle by invoking polygon with an appropriate length and number of sides. Test your function with a range of values of r.</li>",
          "polygon": [
            [
              140.2998046875,
              665.9296875
            ],
            [
              525.6051025390625,
              665.9296875
            ],
            [
              525.6051025390625,
              700.834831237793
            ],
            [
              140.2998046875,
              700.834831237793
            ]
          ],
          "bbox": [
            140.2998046875,
            665.9296875,
            525.6051025390625,
            700.834831237793
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "4": "/page/54/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/55/Page/222",
      "block_type": "Page",
      "html": "<content-ref src='/page/55/PageHeader/0'></content-ref><content-ref src='/page/55/PageHeader/18'></content-ref><content-ref src='/page/55/Text/1'></content-ref><content-ref src='/page/55/Text/2'></content-ref><content-ref src='/page/55/ListItem/3'></content-ref><content-ref src='/page/55/SectionHeader/4'></content-ref><content-ref src='/page/55/Text/5'></content-ref><content-ref src='/page/55/Code/6'></content-ref><content-ref src='/page/55/Code/7'></content-ref><content-ref src='/page/55/Text/8'></content-ref><content-ref src='/page/55/Text/9'></content-ref><content-ref src='/page/55/Text/10'></content-ref><content-ref src='/page/55/Code/11'></content-ref><content-ref src='/page/55/Text/12'></content-ref><content-ref src='/page/55/SectionHeader/13'></content-ref><content-ref src='/page/55/Text/14'></content-ref><content-ref src='/page/55/Code/15'></content-ref><content-ref src='/page/55/Text/16'></content-ref><content-ref src='/page/55/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/55/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              482.90625,
              60.76318359375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/55/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.166015625,
              61.05322265625
            ],
            [
              96.521484375,
              61.05322265625
            ],
            [
              96.521484375,
              70.43115234375
            ],
            [
              85.166015625,
              70.43115234375
            ]
          ],
          "bbox": [
            85.166015625,
            61.05322265625,
            96.521484375,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Hint: figure out the circumference of the circle and make sure that length * n = circumference.</p>",
          "polygon": [
            [
              111.3070068359375,
              88.55859375
            ],
            [
              482.4154052734375,
              88.55859375
            ],
            [
              482.4154052734375,
              110.99188232421875
            ],
            [
              111.3070068359375,
              110.99188232421875
            ]
          ],
          "bbox": [
            111.3070068359375,
            88.55859375,
            482.4154052734375,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another hint: if bob is too slow for you, you can speed him up by changing bob.delay, which is the time between moves, in seconds. bob.delay = 0.01 ought to get him moving.</p>",
          "polygon": [
            [
              109.5205078125,
              117.043701171875
            ],
            [
              482.4045104980469,
              117.043701171875
            ],
            [
              482.4045104980469,
              151.54388427734375
            ],
            [
              109.5205078125,
              151.54388427734375
            ]
          ],
          "bbox": [
            109.5205078125,
            117.043701171875,
            482.4045104980469,
            151.54388427734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/55/ListItem/3",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">5. Make a more general version of circle called arc that takes an additional parameter angle, which determines what fraction of a circle to draw. angle is in units of degrees, so when angle=360, arc should draw a complete circle.</li>",
          "polygon": [
            [
              97.2685546875,
              160.7783203125
            ],
            [
              482.90625,
              160.7783203125
            ],
            [
              482.90625,
              196.06585693359375
            ],
            [
              97.2685546875,
              196.06585693359375
            ]
          ],
          "bbox": [
            97.2685546875,
            160.7783203125,
            482.90625,
            196.06585693359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "4": "/page/54/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/55/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-55-0\"></span><b>4.4 Encapsulation</b></h3>",
          "polygon": [
            [
              85.6142578125,
              224.68359375
            ],
            [
              211.9005126953125,
              224.68359375
            ],
            [
              211.9005126953125,
              239.701904296875
            ],
            [
              85.6142578125,
              239.701904296875
            ]
          ],
          "bbox": [
            85.6142578125,
            224.68359375,
            211.9005126953125,
            239.701904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first exercise asks you to put your square-drawing code into a function definition and then call the function, passing the turtle as a parameter. Here is a solution:</p>",
          "polygon": [
            [
              85.166015625,
              251.947265625
            ],
            [
              482.90625,
              251.947265625
            ],
            [
              482.90625,
              274.376953125
            ],
            [
              85.166015625,
              274.376953125
            ]
          ],
          "bbox": [
            85.166015625,
            251.947265625,
            482.90625,
            274.376953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Code/6",
          "block_type": "Code",
          "html": "<pre>def square(t):</pre>",
          "polygon": [
            [
              85.46484375,
              280.1846618652344
            ],
            [
              173.4697265625,
              280.1846618652344
            ],
            [
              173.4697265625,
              295.259765625
            ],
            [
              85.46484375,
              295.259765625
            ]
          ],
          "bbox": [
            85.46484375,
            280.1846618652344,
            173.4697265625,
            295.259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Code/7",
          "block_type": "Code",
          "html": "<pre>for i in range(4):\n    fd(t, 100)\n    lt(t)</pre>",
          "polygon": [
            [
              96.0732421875,
              292.378662109375
            ],
            [
              201.4625244140625,
              292.378662109375
            ],
            [
              201.4625244140625,
              327.55078125
            ],
            [
              96.0732421875,
              327.55078125
            ]
          ],
          "bbox": [
            96.0732421875,
            292.378662109375,
            201.4625244140625,
            327.55078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">square(bob)</p>",
          "polygon": [
            [
              85.98779296875,
              341.1556701660156
            ],
            [
              143.94395446777344,
              341.1556701660156
            ],
            [
              143.94395446777344,
              351.52734375
            ],
            [
              85.98779296875,
              351.52734375
            ]
          ],
          "bbox": [
            85.98779296875,
            341.1556701660156,
            143.94395446777344,
            351.52734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The innermost statements, fd and lt are indented twice to show that they are inside the for loop, which is inside the function definition. The next line, square(bob), is flush with the left margin, so that is the end of both the for loop and the function definition.</p>",
          "polygon": [
            [
              85.6142578125,
              356.94140625
            ],
            [
              482.40081787109375,
              356.94140625
            ],
            [
              482.40081787109375,
              391.78582763671875
            ],
            [
              85.6142578125,
              391.78582763671875
            ]
          ],
          "bbox": [
            85.6142578125,
            356.94140625,
            482.40081787109375,
            391.78582763671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Inside the function, t refers to the same turtle bob refers to, so lt(t) has the same effect as lt(bob). So why not call the parameter bob? The idea is that t can be any turtle, not just bob, so you could create a second turtle and pass it as an argument to square:</p>",
          "polygon": [
            [
              85.3154296875,
              401.773681640625
            ],
            [
              482.4047546386719,
              401.773681640625
            ],
            [
              482.4047546386719,
              436.27484130859375
            ],
            [
              85.3154296875,
              436.27484130859375
            ]
          ],
          "bbox": [
            85.3154296875,
            401.773681640625,
            482.4047546386719,
            436.27484130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Code/11",
          "block_type": "Code",
          "html": "<pre>ray = Turtle()\nsquare(ray)</pre>",
          "polygon": [
            [
              85.83837890625,
              442.01953125
            ],
            [
              159.6250762939453,
              442.01953125
            ],
            [
              159.6250762939453,
              464.44921875
            ],
            [
              85.83837890625,
              464.44921875
            ]
          ],
          "bbox": [
            85.83837890625,
            442.01953125,
            159.6250762939453,
            464.44921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Wrapping a piece of code up in a function is called <b>encapsulation</b>. One of the benefits of encapsulation is that it attaches a name to the code, which serves as a kind of documentation. Another advantage is that if you re-use the code, it is more concise to call a function twice than to copy and paste the body!</p>",
          "polygon": [
            [
              85.6142578125,
              470.63671875
            ],
            [
              482.90625,
              470.63671875
            ],
            [
              482.90625,
              517.3098449707031
            ],
            [
              85.6142578125,
              517.3098449707031
            ]
          ],
          "bbox": [
            85.6142578125,
            470.63671875,
            482.90625,
            517.3098449707031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/55/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-55-1\"></span><b>4.5 Generalization</b></h4>",
          "polygon": [
            [
              85.763671875,
              546.046875
            ],
            [
              216.69219970703125,
              546.046875
            ],
            [
              216.69219970703125,
              560.9458923339844
            ],
            [
              85.763671875,
              560.9458923339844
            ]
          ],
          "bbox": [
            85.763671875,
            546.046875,
            216.69219970703125,
            560.9458923339844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next step is to add a length parameter to square. Here is a solution:</p>",
          "polygon": [
            [
              85.6142578125,
              572.73046875
            ],
            [
              405.1571960449219,
              572.73046875
            ],
            [
              405.1571960449219,
              583.2168426513672
            ],
            [
              85.6142578125,
              583.2168426513672
            ]
          ],
          "bbox": [
            85.6142578125,
            572.73046875,
            405.1571960449219,
            583.2168426513672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/55/Code/15",
          "block_type": "Code",
          "html": "<pre>def square(t, length):\n    for i in range(4):\n        fd(t, length)\n        lt(t)</pre>",
          "polygon": [
            [
              85.46484375,
              588.97265625
            ],
            [
              202.7548828125,
              588.97265625
            ],
            [
              202.7548828125,
              637.69921875
            ],
            [
              85.46484375,
              637.69921875
            ]
          ],
          "bbox": [
            85.46484375,
            588.97265625,
            202.7548828125,
            637.69921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">square(bob, 100)</p>",
          "polygon": [
            [
              85.763671875,
              650.2056884765625
            ],
            [
              170.0957794189453,
              650.2056884765625
            ],
            [
              170.0957794189453,
              661.2890625
            ],
            [
              85.763671875,
              661.2890625
            ]
          ],
          "bbox": [
            85.763671875,
            650.2056884765625,
            170.0957794189453,
            661.2890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/55/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Adding a parameter to a function is called <b>generalization</b> because it makes the function more general: in the previous version, the square is always the same size; in this version it can be any size.</p>",
          "polygon": [
            [
              85.9130859375,
              665.9296875
            ],
            [
              482.90625,
              665.9296875
            ],
            [
              482.90625,
              700.834846496582
            ],
            [
              85.9130859375,
              700.834846496582
            ]
          ],
          "bbox": [
            85.9130859375,
            665.9296875,
            482.90625,
            700.834846496582
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "3": "/page/55/SectionHeader/4",
        "4": "/page/55/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/56/Page/222",
      "block_type": "Page",
      "html": "<content-ref src='/page/56/PageHeader/0'></content-ref><content-ref src='/page/56/PageHeader/16'></content-ref><content-ref src='/page/56/Text/1'></content-ref><content-ref src='/page/56/Code/2'></content-ref><content-ref src='/page/56/Code/3'></content-ref><content-ref src='/page/56/Text/4'></content-ref><content-ref src='/page/56/Code/5'></content-ref><content-ref src='/page/56/Text/6'></content-ref><content-ref src='/page/56/Text/7'></content-ref><content-ref src='/page/56/SectionHeader/8'></content-ref><content-ref src='/page/56/Text/9'></content-ref><content-ref src='/page/56/Code/10'></content-ref><content-ref src='/page/56/Text/11'></content-ref><content-ref src='/page/56/Text/12'></content-ref><content-ref src='/page/56/Text/13'></content-ref><content-ref src='/page/56/Text/14'></content-ref><content-ref src='/page/56/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/56/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              61.0048828125
            ],
            [
              525.638671875,
              61.0048828125
            ],
            [
              525.638671875,
              70.189453125
            ],
            [
              514.880859375,
              70.189453125
            ]
          ],
          "bbox": [
            514.880859375,
            61.0048828125,
            525.638671875,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next step is also a generalization. Instead of drawing squares, polygon draws regular polygons with any number of sides. Here is a solution :rule</p>",
          "polygon": [
            [
              127.1513671875,
              88.171875
            ],
            [
              525.5977783203125,
              88.171875
            ],
            [
              525.5977783203125,
              110.99188232421875
            ],
            [
              127.1513671875,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.1513671875,
            88.171875,
            525.5977783203125,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/Code/2",
          "block_type": "Code",
          "html": "<pre>def polygon(t, n, length):\n    angle = 360.0 / n\n    for i in range(n):\n        fd(t, length)\n        lt(t, angle)</pre>",
          "polygon": [
            [
              129.60000610351562,
              120.1947021484375
            ],
            [
              265.5994567871094,
              120.1947021484375
            ],
            [
              265.5994567871094,
              185.044921875
            ],
            [
              129.60000610351562,
              185.044921875
            ]
          ],
          "bbox": [
            129.60000610351562,
            120.1947021484375,
            265.5994567871094,
            185.044921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/Code/3",
          "block_type": "Code",
          "html": "<pre>polygon(bob, 7, 70)</pre>",
          "polygon": [
            [
              128.9443359375,
              193.3607177734375
            ],
            [
              230.2470703125,
              193.3607177734375
            ],
            [
              230.2470703125,
              203.4140625
            ],
            [
              128.9443359375,
              203.4140625
            ]
          ],
          "bbox": [
            128.9443359375,
            193.3607177734375,
            230.2470703125,
            203.4140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This draws a 7-sided polygon with side length 70. If you have more than a few numeric arguments, it is easy to forget what they are, or what order they should be in. It is legal, and sometimes helpful, to include the names of the parameters in the argument list:</p>",
          "polygon": [
            [
              129.5419921875,
              212.501953125
            ],
            [
              525.9375,
              212.501953125
            ],
            [
              525.9375,
              247.306640625
            ],
            [
              129.5419921875,
              247.306640625
            ]
          ],
          "bbox": [
            129.5419921875,
            212.501953125,
            525.9375,
            247.306640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/Code/5",
          "block_type": "Code",
          "html": "<pre>polygon(bob, n=7, length=70)</pre>",
          "polygon": [
            [
              128.197265625,
              252.40679931640625
            ],
            [
              276.0601806640625,
              252.40679931640625
            ],
            [
              276.0601806640625,
              262.369384765625
            ],
            [
              128.197265625,
              262.369384765625
            ]
          ],
          "bbox": [
            128.197265625,
            252.40679931640625,
            276.0601806640625,
            262.369384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">These are called <b>keyword arguments</b> because they include the parameter names as \"keywords\" (not to be confused with Python keywords like while and def).</p>",
          "polygon": [
            [
              129.392578125,
              267.80224609375
            ],
            [
              525.5990600585938,
              267.80224609375
            ],
            [
              525.5990600585938,
              290.0569763183594
            ],
            [
              129.392578125,
              290.0569763183594
            ]
          ],
          "bbox": [
            129.392578125,
            267.80224609375,
            525.5990600585938,
            290.0569763183594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This syntax makes the program more readable. It is also a reminder about how arguments and parameters work: when you call a function, the arguments are assigned to the parameters.</p>",
          "polygon": [
            [
              128.794921875,
              299.40838623046875
            ],
            [
              525.6033325195312,
              299.40838623046875
            ],
            [
              525.6033325195312,
              333.7599792480469
            ],
            [
              128.794921875,
              333.7599792480469
            ]
          ],
          "bbox": [
            128.794921875,
            299.40838623046875,
            525.6033325195312,
            333.7599792480469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/55/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/56/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-56-0\"></span><b>4.6 Interface design</b></h4>",
          "polygon": [
            [
              128.49609375,
              361.9498291015625
            ],
            [
              267.4669494628906,
              361.9498291015625
            ],
            [
              267.4669494628906,
              376.2960510253906
            ],
            [
              128.49609375,
              376.2960510253906
            ]
          ],
          "bbox": [
            128.49609375,
            361.9498291015625,
            267.4669494628906,
            376.2960510253906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next step is to write circle, which takes a radius, r, as a parameter. Here is a simple solution that uses polygon to draw a 50-sided polygon:</p>",
          "polygon": [
            [
              128.6455078125,
              387.6688232421875
            ],
            [
              525.5991821289062,
              387.6688232421875
            ],
            [
              525.5991821289062,
              409.9759826660156
            ],
            [
              128.6455078125,
              409.9759826660156
            ]
          ],
          "bbox": [
            128.6455078125,
            387.6688232421875,
            525.5991821289062,
            409.9759826660156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/56/Code/10",
          "block_type": "Code",
          "html": "<pre>def circle(t, r):\n    circumference = 2 * math.pi * r\n    n = 50\n    length = circumference / n\n    polygon(t, n, length)</pre>",
          "polygon": [
            [
              129.60000610351562,
              415.2068176269531
            ],
            [
              313.76953125,
              415.2068176269531
            ],
            [
              313.76953125,
              473.9464111328125
            ],
            [
              129.60000610351562,
              473.9464111328125
            ]
          ],
          "bbox": [
            129.60000610351562,
            415.2068176269531,
            313.76953125,
            473.9464111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line computes the circumference of a circle with radius r using the formula 2<i>π</i><i>r</i>. Since we use math.pi, we have to import math. By convention, import statements are usually at the beginning of the script.</p>",
          "polygon": [
            [
              128.9443359375,
              479.14453125
            ],
            [
              525.9375,
              479.14453125
            ],
            [
              525.9375,
              513.8279724121094
            ],
            [
              128.9443359375,
              513.8279724121094
            ]
          ],
          "bbox": [
            128.9443359375,
            479.14453125,
            525.9375,
            513.8279724121094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">n is the number of line segments in our approximation of a circle, so length is the length of each segment. Thus, polygon draws a 50-sides polygon that approximates a circle with radius r.</p>",
          "polygon": [
            [
              129.392578125,
              523.0308227539062
            ],
            [
              525.638671875,
              523.0308227539062
            ],
            [
              525.638671875,
              557.5309753417969
            ],
            [
              129.392578125,
              557.5309753417969
            ]
          ],
          "bbox": [
            129.392578125,
            523.0308227539062,
            525.638671875,
            557.5309753417969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One limitation of this solution is that n is a constant, which means that for very big circles, the line segments are too long, and for small circles, we waste time drawing very small segments. One solution would be to generalize the function by taking n as a parameter. This would give the user (whoever calls circle) more control, but the interface would be less clean.</p>",
          "polygon": [
            [
              128.794921875,
              566.54296875
            ],
            [
              526.236328125,
              566.54296875
            ],
            [
              526.236328125,
              625.6229858398438
            ],
            [
              128.794921875,
              625.6229858398438
            ]
          ],
          "bbox": [
            128.794921875,
            566.54296875,
            526.236328125,
            625.6229858398438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The <b>interface</b> of a function is a summary of how it is used: what are the parameters? What does the function do? And what is the return value? An interface is \"clean\" if it is \"as simple as possible, but not simpler. (Einstein)\"</p>",
          "polygon": [
            [
              128.3466796875,
              634.60546875
            ],
            [
              525.9375,
              634.60546875
            ],
            [
              525.9375,
              669.3259963989258
            ],
            [
              128.3466796875,
              669.3259963989258
            ]
          ],
          "bbox": [
            128.3466796875,
            634.60546875,
            525.9375,
            669.3259963989258
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/56/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this example, r belongs in the interface because it specifies the circle to be drawn. n is less appropriate because it pertains to the details of <i>how</i> the circle should be rendered.</p>",
          "polygon": [
            [
              128.0478515625,
              678.3046875
            ],
            [
              525.9375,
              678.3046875
            ],
            [
              525.9375,
              700.8349990844727
            ],
            [
              128.0478515625,
              700.8349990844727
            ]
          ],
          "bbox": [
            128.0478515625,
            678.3046875,
            525.9375,
            700.8349990844727
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "3": "/page/55/SectionHeader/4",
        "4": "/page/56/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/57/Page/206",
      "block_type": "Page",
      "html": "<content-ref src='/page/57/PageHeader/0'></content-ref><content-ref src='/page/57/PageHeader/13'></content-ref><content-ref src='/page/57/Text/1'></content-ref><content-ref src='/page/57/Code/2'></content-ref><content-ref src='/page/57/Text/3'></content-ref><content-ref src='/page/57/SectionHeader/4'></content-ref><content-ref src='/page/57/Text/5'></content-ref><content-ref src='/page/57/Text/6'></content-ref><content-ref src='/page/57/Code/7'></content-ref><content-ref src='/page/57/Text/8'></content-ref><content-ref src='/page/57/Code/9'></content-ref><content-ref src='/page/57/Text/10'></content-ref><content-ref src='/page/57/Code/11'></content-ref><content-ref src='/page/57/Code/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/57/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.0048828125
            ],
            [
              482.4034423828125,
              61.0048828125
            ],
            [
              482.4034423828125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.0048828125,
            482.4034423828125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/57/PageHeader/13",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.46484375,
              60.95654296875
            ],
            [
              96.8203125,
              60.95654296875
            ],
            [
              96.8203125,
              70.52783203125
            ],
            [
              85.46484375,
              70.52783203125
            ]
          ],
          "bbox": [
            85.46484375,
            60.95654296875,
            96.8203125,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/57/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Rather than clutter up the interface, it is better to choose an appropriate value of n depending on circumference:</p>",
          "polygon": [
            [
              85.0166015625,
              88.365234375
            ],
            [
              482.3997802734375,
              88.365234375
            ],
            [
              482.3997802734375,
              110.99188232421875
            ],
            [
              85.0166015625,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.0166015625,
            88.365234375,
            482.3997802734375,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/57/Code/2",
          "block_type": "Code",
          "html": "<pre>def circle(t, r):\n    circumference = 2 * math.pi * r\n    n = int(circumference / 3) + 1\n    length = circumference / n\n    polygon(t, n, length)</pre>",
          "polygon": [
            [
              86.40003204345703,
              117.07269287109375
            ],
            [
              269.45733642578125,
              117.07269287109375
            ],
            [
              269.45733642578125,
              175.812255859375
            ],
            [
              86.40003204345703,
              175.812255859375
            ]
          ],
          "bbox": [
            86.40003204345703,
            117.07269287109375,
            269.45733642578125,
            175.812255859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/57/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now the number of segments is (approximately) circumference/3, so the length of each segment is (approximately) 3, which is small enough that the circles look good, but big enough to be efficient, and appropriate for any size circle.</p>",
          "polygon": [
            [
              85.46484375,
              181.0810546875
            ],
            [
              482.4034729003906,
              181.0810546875
            ],
            [
              482.4034729003906,
              216.54278564453125
            ],
            [
              85.46484375,
              216.54278564453125
            ]
          ],
          "bbox": [
            85.46484375,
            181.0810546875,
            482.4034729003906,
            216.54278564453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/55/SectionHeader/4",
            "4": "/page/56/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/57/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-57-0\"></span><b>4.7 Refactoring</b></h3>",
          "polygon": [
            [
              85.6142578125,
              244.986328125
            ],
            [
              195.18724060058594,
              244.986328125
            ],
            [
              195.18724060058594,
              260.310791015625
            ],
            [
              85.6142578125,
              260.310791015625
            ]
          ],
          "bbox": [
            85.6142578125,
            244.986328125,
            195.18724060058594,
            260.310791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When I wrote circle, I was able to re-use polygon because a many-sided polygon is a good approximation of a circle. But arc is not as cooperative; we can't use polygon or circle to draw an arc.</p>",
          "polygon": [
            [
              86.0625,
              271.86328125
            ],
            [
              482.90625,
              271.86328125
            ],
            [
              482.90625,
              307.04473876953125
            ],
            [
              86.0625,
              307.04473876953125
            ]
          ],
          "bbox": [
            86.0625,
            271.86328125,
            482.90625,
            307.04473876953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One alternative is to start with a copy of polygon and transform it into arc. The result might look like this:</p>",
          "polygon": [
            [
              86.0625,
              316.916015625
            ],
            [
              482.405029296875,
              316.916015625
            ],
            [
              482.405029296875,
              339.4027404785156
            ],
            [
              86.0625,
              339.4027404785156
            ]
          ],
          "bbox": [
            86.0625,
            316.916015625,
            482.405029296875,
            339.4027404785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Code/7",
          "block_type": "Code",
          "html": "<pre>def arc(t, r, angle):\n    arc_length = 2 * math.pi * r * angle / 360\n    n = int(arc_length / 3) + 1\n    step_length = arc_length / n\n    step_angle = float(angle) / n\n    for i in range(n):\n        fd(t, step_length)\n        lt(t, step_angle)</pre>",
          "polygon": [
            [
              85.3154296875,
              345.48358154296875
            ],
            [
              326.9913635253906,
              345.48358154296875
            ],
            [
              326.9913635253906,
              454.0078125
            ],
            [
              85.3154296875,
              454.0078125
            ]
          ],
          "bbox": [
            85.3154296875,
            345.48358154296875,
            326.9913635253906,
            454.0078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second half of this function looks like polygon, but we can't re-use polygon without changing the interface. We could generalize polygon to take an angle as a third argument, but then polygon would no longer be an appropriate name! Instead, let's call the more general function polyline:</p>",
          "polygon": [
            [
              85.46484375,
              459.03515625
            ],
            [
              482.4042663574219,
              459.03515625
            ],
            [
              482.4042663574219,
              506.98828125
            ],
            [
              85.46484375,
              506.98828125
            ]
          ],
          "bbox": [
            85.46484375,
            459.03515625,
            482.4042663574219,
            506.98828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Code/9",
          "block_type": "Code",
          "html": "<pre>def polyline(t, n, length, angle):\n    for i in range(n):\n        fd(t, length)\n        lt(t, angle)</pre>",
          "polygon": [
            [
              85.68896484375,
              512.005615234375
            ],
            [
              264.2424011230469,
              512.005615234375
            ],
            [
              264.2424011230469,
              558.5512237548828
            ],
            [
              85.68896484375,
              558.5512237548828
            ]
          ],
          "bbox": [
            85.68896484375,
            512.005615234375,
            264.2424011230469,
            558.5512237548828
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now we can rewrite polygon and arc to use polyline:</p>",
          "polygon": [
            [
              85.46484375,
              563.8359375
            ],
            [
              327.9897155761719,
              563.8359375
            ],
            [
              327.9897155761719,
              574.8937683105469
            ],
            [
              85.46484375,
              574.8937683105469
            ]
          ],
          "bbox": [
            85.46484375,
            563.8359375,
            327.9897155761719,
            574.8937683105469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Code/11",
          "block_type": "Code",
          "html": "<pre>def polygon(t, n, length):\n    angle = 360.0 / n\n    polyline(t, n, length, angle)</pre>",
          "polygon": [
            [
              86.40005493164062,
              579.69140625
            ],
            [
              260.578125,
              579.69140625
            ],
            [
              260.578125,
              616.81640625
            ],
            [
              86.40005493164062,
              616.81640625
            ]
          ],
          "bbox": [
            86.40005493164062,
            579.69140625,
            260.578125,
            616.81640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/57/Code/12",
          "block_type": "Code",
          "html": "<pre>def arc(t, r, angle):\n    arc_length = 2 * math.pi * r * angle / 360\n    n = int(arc_length / 3) + 1\n    step_length = arc_length / n\n    step_angle = float(angle) / n\n    polyline(t, n, step_length, step_angle)</pre>",
          "polygon": [
            [
              84.64306640625,
              628.8046875
            ],
            [
              328.11328125,
              628.8046875
            ],
            [
              328.11328125,
              701.5078125
            ],
            [
              84.64306640625,
              701.5078125
            ]
          ],
          "bbox": [
            84.64306640625,
            628.8046875,
            328.11328125,
            701.5078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "3": "/page/57/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/58/Page/152",
      "block_type": "Page",
      "html": "<content-ref src='/page/58/PageHeader/0'></content-ref><content-ref src='/page/58/PageHeader/16'></content-ref><content-ref src='/page/58/Text/1'></content-ref><content-ref src='/page/58/Text/2'></content-ref><content-ref src='/page/58/Text/3'></content-ref><content-ref src='/page/58/Text/4'></content-ref><content-ref src='/page/58/SectionHeader/5'></content-ref><content-ref src='/page/58/Text/6'></content-ref><content-ref src='/page/58/ListGroup/150'></content-ref><content-ref src='/page/58/Text/12'></content-ref><content-ref src='/page/58/SectionHeader/13'></content-ref><content-ref src='/page/58/Text/14'></content-ref><content-ref src='/page/58/Code/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/58/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              61.0048828125
            ],
            [
              525.6033935546875,
              61.0048828125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            61.0048828125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/58/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.71484375
            ],
            [
              526.236328125,
              60.71484375
            ],
            [
              526.236328125,
              69.99609375
            ],
            [
              514.880859375,
              69.99609375
            ]
          ],
          "bbox": [
            514.880859375,
            60.71484375,
            526.236328125,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/58/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Finally, we can rewrite circle to use arc:</p>",
          "polygon": [
            [
              127.37548828125,
              88.41357421875
            ],
            [
              312.1916809082031,
              88.41357421875
            ],
            [
              312.1916809082031,
              98.79791259765625
            ],
            [
              127.37548828125,
              98.79791259765625
            ]
          ],
          "bbox": [
            127.37548828125,
            88.41357421875,
            312.1916809082031,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/58/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">def circle(t, r): arc(t, r, 360)</p>",
          "polygon": [
            [
              128.6455078125,
              106.5997314453125
            ],
            [
              223.74111938476562,
              106.5997314453125
            ],
            [
              223.74111938476562,
              128.75732421875
            ],
            [
              128.6455078125,
              128.75732421875
            ]
          ],
          "bbox": [
            128.6455078125,
            106.5997314453125,
            223.74111938476562,
            128.75732421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/58/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This process—rearranging a program to improve function interfaces and facilitate code reuse—is called <b>refactoring</b>. In this case, we noticed that there was similar code in arc and polygon, so we \"factored it out\" into polyline.</p>",
          "polygon": [
            [
              128.9443359375,
              136.318359375
            ],
            [
              525.6034545898438,
              136.318359375
            ],
            [
              525.6034545898438,
              171.20892333984375
            ],
            [
              128.9443359375,
              171.20892333984375
            ]
          ],
          "bbox": [
            128.9443359375,
            136.318359375,
            525.6034545898438,
            171.20892333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/58/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we had planned ahead, we might have written polyline first and avoided refactoring, but often you don't know enough at the beginning of a project to design all the interfaces. Once you start coding, you understand the problem better. Sometimes refactoring is a sign that you have learned something.</p>",
          "polygon": [
            [
              128.3466796875,
              182.53125
            ],
            [
              525.6033935546875,
              182.53125
            ],
            [
              525.6033935546875,
              229.67791748046875
            ],
            [
              128.3466796875,
              229.67791748046875
            ]
          ],
          "bbox": [
            128.3466796875,
            182.53125,
            525.6033935546875,
            229.67791748046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/57/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/58/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-58-0\"></span><b>4.8 A development plan</b></h3>",
          "polygon": [
            [
              128.86962890625,
              263.548828125
            ],
            [
              296.138671875,
              263.548828125
            ],
            [
              296.138671875,
              278.6109619140625
            ],
            [
              128.86962890625,
              278.6109619140625
            ]
          ],
          "bbox": [
            128.86962890625,
            263.548828125,
            296.138671875,
            278.6109619140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/58/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>development plan</b> is a process for writing programs. The process we used in this case study is \"encapsulation and generalization.\" The steps of this process are:</p>",
          "polygon": [
            [
              129.392578125,
              293.1328125
            ],
            [
              525.638671875,
              293.1328125
            ],
            [
              525.638671875,
              315.5625
            ],
            [
              129.392578125,
              315.5625
            ]
          ],
          "bbox": [
            129.392578125,
            293.1328125,
            525.638671875,
            315.5625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/58/ListGroup/150",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/58/ListItem/7'></content-ref><content-ref src='/page/58/ListItem/8'></content-ref><content-ref src='/page/58/ListItem/9'></content-ref><content-ref src='/page/58/ListItem/10'></content-ref><content-ref src='/page/58/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              140.52392578125,
              332.19140625
            ],
            [
              525.6038818359375,
              332.19140625
            ],
            [
              525.6038818359375,
              472.1069030761719
            ],
            [
              140.52392578125,
              472.1069030761719
            ]
          ],
          "bbox": [
            140.52392578125,
            332.19140625,
            525.6038818359375,
            472.1069030761719
          ],
          "children": [
            {
              "id": "/page/58/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">1. Start by writing a small program with no function definitions.</li>",
              "polygon": [
                [
                  142.05299377441406,
                  332.19140625
                ],
                [
                  426.56488037109375,
                  332.19140625
                ],
                [
                  426.56488037109375,
                  342.9368896484375
                ],
                [
                  142.05299377441406,
                  342.9368896484375
                ]
              ],
              "bbox": [
                142.05299377441406,
                332.19140625,
                426.56488037109375,
                342.9368896484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/58/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. Once you get the program working, encapsulate it in a function and give it a name.</li>",
              "polygon": [
                [
                  141.7939453125,
                  355.201171875
                ],
                [
                  519.9642944335938,
                  355.201171875
                ],
                [
                  519.9642944335938,
                  366.0838928222656
                ],
                [
                  141.7939453125,
                  366.0838928222656
                ]
              ],
              "bbox": [
                141.7939453125,
                355.201171875,
                519.9642944335938,
                366.0838928222656
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/58/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">3. Generalize the function by adding appropriate parameters.</li>",
              "polygon": [
                [
                  140.52392578125,
                  378.2109375
                ],
                [
                  414.1514892578125,
                  378.2109375
                ],
                [
                  414.1514892578125,
                  389.23089599609375
                ],
                [
                  140.52392578125,
                  389.23089599609375
                ]
              ],
              "bbox": [
                140.52392578125,
                378.2109375,
                414.1514892578125,
                389.23089599609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/58/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">4. Repeat steps 1–3 until you have a set of working functions. Copy and paste working code to avoid retyping (and re-debugging).</li>",
              "polygon": [
                [
                  141.345703125,
                  401.4140625
                ],
                [
                  525.60302734375,
                  401.4140625
                ],
                [
                  525.60302734375,
                  424.5718994140625
                ],
                [
                  141.345703125,
                  424.5718994140625
                ]
              ],
              "bbox": [
                141.345703125,
                401.4140625,
                525.60302734375,
                424.5718994140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/58/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">5. Look for opportunities to improve the program by refactoring. For example, if you have similar code in several places, consider factoring it into an appropriately general function.</li>",
              "polygon": [
                [
                  140.8974609375,
                  436.60546875
                ],
                [
                  525.6038818359375,
                  436.60546875
                ],
                [
                  525.6038818359375,
                  472.1069030761719
                ],
                [
                  140.8974609375,
                  472.1069030761719
                ]
              ],
              "bbox": [
                140.8974609375,
                436.60546875,
                525.6038818359375,
                472.1069030761719
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/58/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This process has some drawbacks—we will see alternatives later—but it can be useful if you don't know ahead of time how to divide the program into functions. This approach lets you design as you go along.</p>",
          "polygon": [
            [
              128.3466796875,
              488.8125
            ],
            [
              525.9375,
              488.8125
            ],
            [
              525.9375,
              523.8719177246094
            ],
            [
              128.3466796875,
              523.8719177246094
            ]
          ],
          "bbox": [
            128.3466796875,
            488.8125,
            525.9375,
            523.8719177246094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/58/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-58-1\"></span><b>4.9 docstring</b></h4>",
          "polygon": [
            [
              127.97314453125,
              558.4587707519531
            ],
            [
              223.2376251220703,
              558.4587707519531
            ],
            [
              223.2376251220703,
              572.8049621582031
            ],
            [
              127.97314453125,
              572.8049621582031
            ]
          ],
          "bbox": [
            127.97314453125,
            558.4587707519531,
            223.2376251220703,
            572.8049621582031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/58/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>docstring</b> is a string at the beginning of a function that explains the interface (\"doc\" is short for \"documentation\"). Here is an example:</p>",
          "polygon": [
            [
              127.7490234375,
              587.0390625
            ],
            [
              525.5960693359375,
              587.0390625
            ],
            [
              525.5960693359375,
              609.7549133300781
            ],
            [
              127.7490234375,
              609.7549133300781
            ]
          ],
          "bbox": [
            127.7490234375,
            587.0390625,
            525.5960693359375,
            609.7549133300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/58/Code/15",
          "block_type": "Code",
          "html": "<pre>def polyline(t, n, length, angle):\n    \"\"\"Draws n line segments with the given length and\n    angle (in degrees) between them. t is a turtle.\n    \"\"\"\n    for i in range(n):\n        fd(t, length)\n        lt(t, angle)</pre>",
          "polygon": [
            [
              129.5999755859375,
              617.5567626953125
            ],
            [
              412.0440979003906,
              617.5567626953125
            ],
            [
              412.0440979003906,
              700.6853637695312
            ],
            [
              129.5999755859375,
              700.6853637695312
            ]
          ],
          "bbox": [
            129.5999755859375,
            617.5567626953125,
            412.0440979003906,
            700.6853637695312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "3": "/page/58/SectionHeader/5",
        "4": "/page/58/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/59/Page/166",
      "block_type": "Page",
      "html": "<content-ref src='/page/59/PageHeader/0'></content-ref><content-ref src='/page/59/PageHeader/17'></content-ref><content-ref src='/page/59/Text/1'></content-ref><content-ref src='/page/59/Text/2'></content-ref><content-ref src='/page/59/Text/3'></content-ref><content-ref src='/page/59/SectionHeader/4'></content-ref><content-ref src='/page/59/Text/5'></content-ref><content-ref src='/page/59/Text/6'></content-ref><content-ref src='/page/59/Text/7'></content-ref><content-ref src='/page/59/Text/8'></content-ref><content-ref src='/page/59/SectionHeader/9'></content-ref><content-ref src='/page/59/ListGroup/164'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/59/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.90625,
              60.8115234375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/59/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.83837890625,
              60.908203125
            ],
            [
              97.19384765625,
              60.908203125
            ],
            [
              97.19384765625,
              70.2861328125
            ],
            [
              85.83837890625,
              70.2861328125
            ]
          ],
          "bbox": [
            85.83837890625,
            60.908203125,
            97.19384765625,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/59/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This docstring is a triple-quoted string, also known as a multiline string because the triple quotes allow the string to span more than one line.</p>",
          "polygon": [
            [
              85.46484375,
              88.83526611328125
            ],
            [
              483.50390625,
              88.83526611328125
            ],
            [
              483.50390625,
              110.99188232421875
            ],
            [
              85.46484375,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.46484375,
            88.83526611328125,
            483.50390625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/59/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is terse, but it contains the essential information someone would need to use this function. It explains concisely what the function does (without getting into the details of how it does it). It explains what effect each parameter has on the behavior of the function and what type each parameter should be (if it is not obvious).</p>",
          "polygon": [
            [
              85.46484375,
              120.7529296875
            ],
            [
              482.90625,
              120.7529296875
            ],
            [
              482.90625,
              167.41497802734375
            ],
            [
              85.46484375,
              167.41497802734375
            ]
          ],
          "bbox": [
            85.46484375,
            120.7529296875,
            482.90625,
            167.41497802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/59/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Writing this kind of documentation is an important part of interface design. A welldesigned interface should be simple to explain; if you are having a hard time explaining one of your functions, that might be a sign that the interface could be improved.</p>",
          "polygon": [
            [
              85.6142578125,
              176.923828125
            ],
            [
              482.90625,
              176.923828125
            ],
            [
              482.90625,
              211.64404296875
            ],
            [
              85.6142578125,
              211.64404296875
            ]
          ],
          "bbox": [
            85.6142578125,
            176.923828125,
            482.90625,
            211.64404296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/58/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/59/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-59-0\"></span><b>4.10 Debugging</b></h4>",
          "polygon": [
            [
              85.46484375,
              240.56890869140625
            ],
            [
              201.2607421875,
              240.56890869140625
            ],
            [
              201.2607421875,
              255.234375
            ],
            [
              85.46484375,
              255.234375
            ]
          ],
          "bbox": [
            85.46484375,
            240.56890869140625,
            201.2607421875,
            255.234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/59/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An interface is like a contract between a function and a caller. The caller agrees to provide certain parameters and the function agrees to do certain work.</p>",
          "polygon": [
            [
              85.763671875,
              266.642578125
            ],
            [
              482.90625,
              266.642578125
            ],
            [
              482.90625,
              289.12005615234375
            ],
            [
              85.763671875,
              289.12005615234375
            ]
          ],
          "bbox": [
            85.763671875,
            266.642578125,
            482.90625,
            289.12005615234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/59/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, polyline requires four arguments: t has to be a Turtle; n is the number of line segments, so it has to be an integer; length should be a positive number; and angle has to be a number, which is understood to be in degrees.</p>",
          "polygon": [
            [
              85.9130859375,
              298.546875
            ],
            [
              482.90625,
              298.546875
            ],
            [
              482.90625,
              333.3480529785156
            ],
            [
              85.9130859375,
              333.3480529785156
            ]
          ],
          "bbox": [
            85.9130859375,
            298.546875,
            482.90625,
            333.3480529785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/59/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">These requirements are called <b>preconditions</b> because they are supposed to be true before the function starts executing. Conversely, conditions at the end of the function are <b>post</b><b>conditions</b>. Postconditions include the intended effect of the function (like drawing line segments) and any side effects (like moving the Turtle or making other changes in the World).</p>",
          "polygon": [
            [
              86.2119140625,
              343.01953125
            ],
            [
              482.4033203125,
              343.01953125
            ],
            [
              482.4033203125,
              401.966064453125
            ],
            [
              86.2119140625,
              401.966064453125
            ]
          ],
          "bbox": [
            86.2119140625,
            343.01953125,
            482.4033203125,
            401.966064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/59/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Preconditions are the responsibility of the caller. If the caller violates a (properly documented!) precondition and the function doesn't work correctly, the bug is in the caller, not the function.</p>",
          "polygon": [
            [
              85.763671875,
              411.46875
            ],
            [
              482.607421875,
              411.46875
            ],
            [
              482.607421875,
              446.1940612792969
            ],
            [
              85.763671875,
              446.1940612792969
            ]
          ],
          "bbox": [
            85.763671875,
            411.46875,
            482.607421875,
            446.1940612792969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/59/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-59-1\"></span><b>4.11 Glossary</b></h4>",
          "polygon": [
            [
              85.6142578125,
              474.890625
            ],
            [
              184.0259246826172,
              474.890625
            ],
            [
              184.0259246826172,
              489.46612548828125
            ],
            [
              85.6142578125,
              489.46612548828125
            ]
          ],
          "bbox": [
            85.6142578125,
            474.890625,
            184.0259246826172,
            489.46612548828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/59/ListGroup/164",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/59/ListItem/10'></content-ref><content-ref src='/page/59/ListItem/11'></content-ref><content-ref src='/page/59/ListItem/12'></content-ref><content-ref src='/page/59/ListItem/13'></content-ref><content-ref src='/page/59/ListItem/14'></content-ref><content-ref src='/page/59/ListItem/15'></content-ref><content-ref src='/page/59/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              85.46484375,
              498.09375
            ],
            [
              482.90625,
              498.09375
            ],
            [
              482.90625,
              700.8350448608398
            ],
            [
              85.46484375,
              700.8350448608398
            ]
          ],
          "bbox": [
            85.46484375,
            498.09375,
            482.90625,
            700.8350448608398
          ],
          "children": [
            {
              "id": "/page/59/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>instance:</b> A member of a set. The TurtleWorld in this chapter is a member of the set of TurtleWorlds.</li>",
              "polygon": [
                [
                  85.9130859375,
                  498.09375
                ],
                [
                  482.90625,
                  498.09375
                ],
                [
                  482.90625,
                  520.4000549316406
                ],
                [
                  85.9130859375,
                  520.4000549316406
                ]
              ],
              "bbox": [
                85.9130859375,
                498.09375,
                482.90625,
                520.4000549316406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/59/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>loop:</b> A part of a program that can execute repeatedly.</li>",
              "polygon": [
                [
                  85.6142578125,
                  530.19140625
                ],
                [
                  326.3203125,
                  530.19140625
                ],
                [
                  326.3203125,
                  540.31005859375
                ],
                [
                  85.6142578125,
                  540.31005859375
                ]
              ],
              "bbox": [
                85.6142578125,
                530.19140625,
                326.3203125,
                540.31005859375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/59/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>encapsulation:</b> The process of transforming a sequence of statements into a function definition.</li>",
              "polygon": [
                [
                  85.6142578125,
                  550.1613464355469
                ],
                [
                  482.4031982421875,
                  550.1613464355469
                ],
                [
                  482.4031982421875,
                  572.4150543212891
                ],
                [
                  85.6142578125,
                  572.4150543212891
                ]
              ],
              "bbox": [
                85.6142578125,
                550.1613464355469,
                482.4031982421875,
                572.4150543212891
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/59/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>generalization:</b> The process of replacing something unnecessarily specific (like a number) with something appropriately general (like a variable or parameter).</li>",
              "polygon": [
                [
                  85.46484375,
                  582.01171875
                ],
                [
                  482.607421875,
                  582.01171875
                ],
                [
                  482.607421875,
                  604.5200500488281
                ],
                [
                  85.46484375,
                  604.5200500488281
                ]
              ],
              "bbox": [
                85.46484375,
                582.01171875,
                482.607421875,
                604.5200500488281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/59/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>keyword argument:</b> An argument that includes the name of the parameter as a \"keyword.\"</li>",
              "polygon": [
                [
                  85.763671875,
                  614.371337890625
                ],
                [
                  482.402587890625,
                  614.371337890625
                ],
                [
                  482.402587890625,
                  636.6250457763672
                ],
                [
                  85.763671875,
                  636.6250457763672
                ]
              ],
              "bbox": [
                85.763671875,
                614.371337890625,
                482.402587890625,
                636.6250457763672
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/59/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>interface:</b> A description of how to use a function, including the name and descriptions of the arguments and return value.</li>",
              "polygon": [
                [
                  85.763671875,
                  646.4763336181641
                ],
                [
                  482.90625,
                  646.4763336181641
                ],
                [
                  482.90625,
                  668.7300491333008
                ],
                [
                  85.763671875,
                  668.7300491333008
                ]
              ],
              "bbox": [
                85.763671875,
                646.4763336181641,
                482.90625,
                668.7300491333008
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/59/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>refactoring:</b> The process of modifying a working program to improve function interfaces and other qualities of the code.</li>",
              "polygon": [
                [
                  85.9130859375,
                  678.5813293457031
                ],
                [
                  482.4034118652344,
                  678.5813293457031
                ],
                [
                  482.4034118652344,
                  700.8350448608398
                ],
                [
                  85.9130859375,
                  700.8350448608398
                ]
              ],
              "bbox": [
                85.9130859375,
                678.5813293457031,
                482.4034118652344,
                700.8350448608398
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "3": "/page/58/SectionHeader/5",
        "4": "/page/59/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/60/Page/190",
      "block_type": "Page",
      "html": "<content-ref src='/page/60/PageHeader/0'></content-ref><content-ref src='/page/60/PageHeader/18'></content-ref><content-ref src='/page/60/FigureGroup/185'></content-ref><content-ref src='/page/60/FigureGroup/186'></content-ref><content-ref src='/page/60/Text/5'></content-ref><content-ref src='/page/60/ListItem/6'></content-ref><content-ref src='/page/60/Text/7'></content-ref><content-ref src='/page/60/Text/8'></content-ref><content-ref src='/page/60/SectionHeader/9'></content-ref><content-ref src='/page/60/Text/10'></content-ref><content-ref src='/page/60/ListGroup/187'></content-ref><content-ref src='/page/60/Text/14'></content-ref><content-ref src='/page/60/Text/15'></content-ref><content-ref src='/page/60/Text/16'></content-ref><content-ref src='/page/60/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/60/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.49609375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.49609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.49609375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.1796875,
              61.05322265625
            ],
            [
              525.9375,
              61.05322265625
            ],
            [
              525.9375,
              70.43115234375
            ],
            [
              515.1796875,
              70.43115234375
            ]
          ],
          "bbox": [
            515.1796875,
            61.05322265625,
            525.9375,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/FigureGroup/185",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/60/Figure/1'></content-ref><content-ref src='/page/60/Caption/2'></content-ref>",
          "polygon": [
            [
              219.041015625,
              87.83349609375
            ],
            [
              433.001953125,
              87.83349609375
            ],
            [
              433.001953125,
              193.1529541015625
            ],
            [
              219.041015625,
              193.1529541015625
            ]
          ],
          "bbox": [
            219.041015625,
            87.83349609375,
            433.001953125,
            193.1529541015625
          ],
          "children": [
            {
              "id": "/page/60/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  219.041015625,
                  87.83349609375
                ],
                [
                  433.001953125,
                  87.83349609375
                ],
                [
                  433.001953125,
                  165.708984375
                ],
                [
                  219.041015625,
                  165.708984375
                ]
              ],
              "bbox": [
                219.041015625,
                87.83349609375,
                433.001953125,
                165.708984375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {
                "/page/60/Figure/1": "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"
              }
            },
            {
              "id": "/page/60/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-60-1\"></span>Figure 4.1: Turtle flowers.</p>",
              "polygon": [
                [
                  269.244140625,
                  182.91796875
                ],
                [
                  384.013427734375,
                  182.91796875
                ],
                [
                  384.013427734375,
                  193.1529541015625
                ],
                [
                  269.244140625,
                  193.1529541015625
                ]
              ],
              "bbox": [
                269.244140625,
                182.91796875,
                384.013427734375,
                193.1529541015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/60/FigureGroup/186",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/60/Figure/3'></content-ref><content-ref src='/page/60/Caption/4'></content-ref>",
          "polygon": [
            [
              233.982421875,
              205.927734375
            ],
            [
              419.255859375,
              205.927734375
            ],
            [
              419.255859375,
              288.3758850097656
            ],
            [
              233.982421875,
              288.3758850097656
            ]
          ],
          "bbox": [
            233.982421875,
            205.927734375,
            419.255859375,
            288.3758850097656
          ],
          "children": [
            {
              "id": "/page/60/Figure/3",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  233.982421875,
                  205.927734375
                ],
                [
                  419.255859375,
                  205.927734375
                ],
                [
                  419.255859375,
                  264.322265625
                ],
                [
                  233.982421875,
                  264.322265625
                ]
              ],
              "bbox": [
                233.982421875,
                205.927734375,
                419.255859375,
                264.322265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {
                "/page/60/Figure/3": "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"
              }
            },
            {
              "id": "/page/60/Caption/4",
              "block_type": "Caption",
              "html": "<p><span id=\"page-60-2\"></span>Figure 4.2: Turtle pies.</p>",
              "polygon": [
                [
                  277.013671875,
                  278.41326904296875
                ],
                [
                  376.58624267578125,
                  278.41326904296875
                ],
                [
                  376.58624267578125,
                  288.3758850097656
                ],
                [
                  277.013671875,
                  288.3758850097656
                ]
              ],
              "bbox": [
                277.013671875,
                278.41326904296875,
                376.58624267578125,
                288.3758850097656
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/59/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/60/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>development plan:</b> A process for writing programs.</p>",
          "polygon": [
            [
              129.31787109375,
              311.9531555175781
            ],
            [
              362.478515625,
              311.9531555175781
            ],
            [
              362.478515625,
              322.01287841796875
            ],
            [
              129.31787109375,
              322.01287841796875
            ]
          ],
          "bbox": [
            129.31787109375,
            311.9531555175781,
            362.478515625,
            322.01287841796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/ListItem/6",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>docstring:</b> A string that appears in a function definition to document the function's interface.</li>",
          "polygon": [
            [
              128.3466796875,
              333.9981689453125
            ],
            [
              525.6033935546875,
              333.9981689453125
            ],
            [
              525.6033935546875,
              356.25189208984375
            ],
            [
              128.3466796875,
              356.25189208984375
            ]
          ],
          "bbox": [
            128.3466796875,
            333.9981689453125,
            525.6033935546875,
            356.25189208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>precondition:</b> A requirement that should be satisfied by the caller before a function starts.</p>",
          "polygon": [
            [
              128.794921875,
              368.2371826171875
            ],
            [
              526.236328125,
              368.2371826171875
            ],
            [
              526.236328125,
              378.2969055175781
            ],
            [
              128.794921875,
              378.2969055175781
            ]
          ],
          "bbox": [
            128.794921875,
            368.2371826171875,
            526.236328125,
            378.2969055175781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>postcondition:</b> A requirement that should be satisfied by the function before it ends.</p>",
          "polygon": [
            [
              128.9443359375,
              401.4140625
            ],
            [
              503.2265625,
              401.4140625
            ],
            [
              503.2265625,
              412.5359191894531
            ],
            [
              128.9443359375,
              412.5359191894531
            ]
          ],
          "bbox": [
            128.9443359375,
            401.4140625,
            503.2265625,
            412.5359191894531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/59/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-60-0\"></span><b>4.12 Exercises</b></h4>",
          "polygon": [
            [
              127.97314453125,
              445.11328125
            ],
            [
              228.80401611328125,
              445.11328125
            ],
            [
              228.80401611328125,
              459.5309753417969
            ],
            [
              127.97314453125,
              459.5309753417969
            ]
          ],
          "bbox": [
            127.97314453125,
            445.11328125,
            228.80401611328125,
            459.5309753417969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 4.1.</b> <i>Download the code in this chapter from</i> <a href=\"http://thinkpython.com/code/polygon.py\">http:</a> <a href=\"http://thinkpython.com/code/polygon.py\">//</a> <a href=\"http://thinkpython.com/code/polygon.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/polygon.py\">com/</a> <a href=\"http://thinkpython.com/code/polygon.py\">code/</a> <a href=\"http://thinkpython.com/code/polygon.py\">polygon.</a> <a href=\"http://thinkpython.com/code/polygon.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              129.392578125,
              473.1658935546875
            ],
            [
              525.041015625,
              473.1658935546875
            ],
            [
              525.041015625,
              495.4031982421875
            ],
            [
              129.392578125,
              495.4031982421875
            ]
          ],
          "bbox": [
            129.392578125,
            473.1658935546875,
            525.041015625,
            495.4031982421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/ListGroup/187",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/60/ListItem/11'></content-ref><content-ref src='/page/60/ListItem/12'></content-ref><content-ref src='/page/60/ListItem/13'></content-ref></ul></p>",
          "polygon": [
            [
              140.0009765625,
              511.6186218261719
            ],
            [
              525.9375,
              511.6186218261719
            ],
            [
              525.9375,
              614.49609375
            ],
            [
              140.0009765625,
              614.49609375
            ]
          ],
          "bbox": [
            140.0009765625,
            511.6186218261719,
            525.9375,
            614.49609375
          ],
          "children": [
            {
              "id": "/page/60/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write appropriate docstrings for</i> polygon<i>,</i> arc <i>and</i> circle<i>.</i></li>",
              "polygon": [
                [
                  141.345703125,
                  511.6186218261719
                ],
                [
                  397.0846252441406,
                  511.6186218261719
                ],
                [
                  397.0846252441406,
                  521.6043395996094
                ],
                [
                  141.345703125,
                  521.6043395996094
                ]
              ],
              "bbox": [
                141.345703125,
                511.6186218261719,
                397.0846252441406,
                521.6043395996094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/60/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/60/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Draw a stack diagram that shows the state of the program while executing</i> circle(bob, radius)<i>. You can do the arithmetic by hand or add</i> print <i>statements to the code.</i></li>",
              "polygon": [
                [
                  141.1962890625,
                  533.28515625
                ],
                [
                  525.6139526367188,
                  533.28515625
                ],
                [
                  525.6139526367188,
                  555.8433532714844
                ],
                [
                  141.1962890625,
                  555.8433532714844
                ]
              ],
              "bbox": [
                141.1962890625,
                533.28515625,
                525.6139526367188,
                555.8433532714844
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/60/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/60/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. The version of</i> arc <i>in Section </i><i><a href=\"#page-57-0\">4.7</a></i><i> is not very accurate because the linear approximation of the</i> <i>circle is always outside the true circle. As a result, the turtle ends up a few units away from</i> <i>the correct destination. My solution shows a way to reduce the effect of this error. Read the</i> <i>code and see if it makes sense to you. If you draw a diagram, you might see how it works.</i></li>",
              "polygon": [
                [
                  140.0009765625,
                  567.31640625
                ],
                [
                  525.9375,
                  567.31640625
                ],
                [
                  525.9375,
                  614.49609375
                ],
                [
                  140.0009765625,
                  614.49609375
                ]
              ],
              "bbox": [
                140.0009765625,
                567.31640625,
                525.9375,
                614.49609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/52/SectionHeader/1",
                "3": "/page/58/SectionHeader/5",
                "4": "/page/60/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/60/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 4.2.</b> <i>Write an appropriately general set of functions that can draw flowers as in Figure </i><i><a href=\"#page-60-1\">4.1.</a></i></p>",
          "polygon": [
            [
              128.0478515625,
              621.6186065673828
            ],
            [
              525.5982055664062,
              621.6186065673828
            ],
            [
              525.5982055664062,
              631.8984375
            ],
            [
              128.0478515625,
              631.8984375
            ]
          ],
          "bbox": [
            128.0478515625,
            621.6186065673828,
            525.5982055664062,
            631.8984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/flower.py\">http:</a> <a href=\"http://thinkpython.com/code/flower.py\">//</a> <a href=\"http://thinkpython.com/code/flower.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/flower.py\">com/</a> <a href=\"http://thinkpython.com/code/flower.py\">code/</a> <a href=\"http://thinkpython.com/code/flower.py\">flower.</a> <a href=\"http://thinkpython.com/code/flower.py\">py</a> <i>, also requires</i> <a href=\"http://thinkpython.com/code/polygon.py\">http:</a> <a href=\"http://thinkpython.com/code/polygon.py\">//</a> <a href=\"http://thinkpython.com/code/polygon.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/polygon.py\">com/</a> <a href=\"http://thinkpython.com/code/polygon.py\">code/</a> <a href=\"http://thinkpython.com/code/polygon.py\">polygon.</a> <a href=\"http://thinkpython.com/code/polygon.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              129.09375,
              642.7265625
            ],
            [
              524.14453125,
              642.7265625
            ],
            [
              524.14453125,
              666.703125
            ],
            [
              129.09375,
              666.703125
            ]
          ],
          "bbox": [
            129.09375,
            642.7265625,
            524.14453125,
            666.703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 4.3.</b> <i>Write an appropriately general set of functions that can draw shapes as in Figure </i><i><a href=\"#page-60-2\">4.2.</a></i></p>",
          "polygon": [
            [
              129.5998992919922,
              667.2466201782227
            ],
            [
              525.6047973632812,
              667.2466201782227
            ],
            [
              525.6047973632812,
              677.2848052978516
            ],
            [
              129.5998992919922,
              677.2848052978516
            ]
          ],
          "bbox": [
            129.5998992919922,
            667.2466201782227,
            525.6047973632812,
            677.2848052978516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/60/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/pie.py\">http:</a> <a href=\"http://thinkpython.com/code/pie.py\">//</a> <a href=\"http://thinkpython.com/code/pie.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/pie.py\">com/</a> <a href=\"http://thinkpython.com/code/pie.py\">code/</a> <a href=\"http://thinkpython.com/code/pie.py\">pie.</a> <a href=\"http://thinkpython.com/code/pie.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              129.46728515625,
              688.4059295654297
            ],
            [
              361.884521484375,
              688.4059295654297
            ],
            [
              361.884521484375,
              698.4492263793945
            ],
            [
              129.46728515625,
              698.4492263793945
            ]
          ],
          "bbox": [
            129.46728515625,
            688.4059295654297,
            361.884521484375,
            698.4492263793945
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "3": "/page/58/SectionHeader/5",
        "4": "/page/60/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/61/Page/126",
      "block_type": "Page",
      "html": "<content-ref src='/page/61/PageHeader/0'></content-ref><content-ref src='/page/61/PageHeader/5'></content-ref><content-ref src='/page/61/Text/1'></content-ref><content-ref src='/page/61/Text/2'></content-ref><content-ref src='/page/61/Text/3'></content-ref><content-ref src='/page/61/Text/4'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/61/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.90625,
              60.71484375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/61/PageHeader/5",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.568359375,
              60.908203125
            ],
            [
              96.6708984375,
              60.908203125
            ],
            [
              96.6708984375,
              70.2861328125
            ],
            [
              84.568359375,
              70.2861328125
            ]
          ],
          "bbox": [
            84.568359375,
            60.908203125,
            96.6708984375,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/61/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 4.4.</b> <i>The letters of the alphabet can be constructed from a moderate number of basic ele</i><i>ments, like vertical and horizontal lines and a few curves. Design a font that can be drawn with a</i> <i>minimal number of basic elements and then write functions that draw letters of the alphabet.</i></p>",
          "polygon": [
            [
              84.7177734375,
              88.51025390625
            ],
            [
              482.4034423828125,
              88.51025390625
            ],
            [
              482.4034423828125,
              123.01416015625
            ],
            [
              84.7177734375,
              123.01416015625
            ]
          ],
          "bbox": [
            84.7177734375,
            88.51025390625,
            482.4034423828125,
            123.01416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/61/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You should write one function for each letter, with names</i> draw_a<i>,</i> draw_b<i>, etc., and put your</i> <i>functions in a file named</i> letters.py<i>. You can download a \"turtle typewriter\" from</i> <a href=\"http://thinkpython.com/code/typewriter.py\">http:</a> <a href=\"http://thinkpython.com/code/typewriter.py\">//</a> <a href=\"http://thinkpython.com/code/typewriter.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/typewriter.py\">com/</a> <a href=\"http://thinkpython.com/code/typewriter.py\">code/</a> <a href=\"http://thinkpython.com/code/typewriter.py\">typewriter.</a> <a href=\"http://thinkpython.com/code/typewriter.py\">py</a> <i>to help you test your code.</i></p>",
          "polygon": [
            [
              84.8671875,
              132.64453125
            ],
            [
              482.4041442871094,
              132.64453125
            ],
            [
              482.4041442871094,
              167.5401611328125
            ],
            [
              84.8671875,
              167.5401611328125
            ]
          ],
          "bbox": [
            84.8671875,
            132.64453125,
            482.4041442871094,
            167.5401611328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/61/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/letters.py\">http:</a> <a href=\"http://thinkpython.com/code/letters.py\">//</a> <a href=\"http://thinkpython.com/code/letters.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/letters.py\">com/</a> <a href=\"http://thinkpython.com/code/letters.py\">code/</a> <a href=\"http://thinkpython.com/code/letters.py\">letters.</a> <a href=\"http://thinkpython.com/code/letters.py\">py</a> <i>, also requires</i> <a href=\"http://thinkpython.com/code/polygon.py\">http:</a> <a href=\"http://thinkpython.com/code/polygon.py\">//</a> <a href=\"http://thinkpython.com/code/polygon.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/polygon.py\">com/</a> <a href=\"http://thinkpython.com/code/polygon.py\">code/</a> <a href=\"http://thinkpython.com/code/polygon.py\">polygon.</a> <a href=\"http://thinkpython.com/code/polygon.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              84.8671875,
              177.50390625
            ],
            [
              481.11328125,
              177.50390625
            ],
            [
              481.11328125,
              199.87115478515625
            ],
            [
              84.8671875,
              199.87115478515625
            ]
          ],
          "bbox": [
            84.8671875,
            177.50390625,
            481.11328125,
            199.87115478515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/61/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 4.5.</b> <i>Read about spirals at</i> <a href=\"http://en.wikipedia.org/wiki/Spiral\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Spiral\">//</a> <a href=\"http://en.wikipedia.org/wiki/Spiral\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Spiral\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Spiral\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Spiral\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Spiral\">Spiral</a> <i>; then write</i> <i>a program that draws an Archimedian spiral (or one of the other kinds). Solution:</i> <a href=\"http://thinkpython.com/code/spiral.py\">http:</a> <a href=\"http://thinkpython.com/code/spiral.py\">//</a> <a href=\"http://thinkpython.com/code/spiral.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/spiral.py\">com/</a> <a href=\"http://thinkpython.com/code/spiral.py\">code/</a> <a href=\"http://thinkpython.com/code/spiral.py\">spiral.</a> <a href=\"http://thinkpython.com/code/spiral.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.3154296875,
              202.02288818359375
            ],
            [
              482.3995056152344,
              202.02288818359375
            ],
            [
              482.3995056152344,
              236.45416259765625
            ],
            [
              85.3154296875,
              236.45416259765625
            ]
          ],
          "bbox": [
            85.3154296875,
            202.02288818359375,
            482.3995056152344,
            236.45416259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "3": "/page/58/SectionHeader/5",
            "4": "/page/60/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/52/SectionHeader/1",
        "3": "/page/58/SectionHeader/5",
        "4": "/page/60/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/62/Page/158",
      "block_type": "Page",
      "html": "<content-ref src='/page/62/SectionHeader/0'></content-ref><content-ref src='/page/62/SectionHeader/1'></content-ref><content-ref src='/page/62/SectionHeader/2'></content-ref><content-ref src='/page/62/Text/3'></content-ref><content-ref src='/page/62/Code/4'></content-ref><content-ref src='/page/62/Text/5'></content-ref><content-ref src='/page/62/Text/6'></content-ref><content-ref src='/page/62/SectionHeader/7'></content-ref><content-ref src='/page/62/Text/8'></content-ref><content-ref src='/page/62/Code/9'></content-ref><content-ref src='/page/62/Text/10'></content-ref><content-ref src='/page/62/Code/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/62/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-62-0\"></span><b>Chapter 5</b></h2>",
          "polygon": [
            [
              129.16845703125,
              162.37750244140625
            ],
            [
              221.1328125,
              162.37750244140625
            ],
            [
              221.1328125,
              183.3046875
            ],
            [
              129.16845703125,
              183.3046875
            ]
          ],
          "bbox": [
            129.16845703125,
            162.37750244140625,
            221.1328125,
            183.3046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/52/SectionHeader/1",
            "2": "/page/62/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/62/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Conditionals and recursion</b></h1>",
          "polygon": [
            [
              128.3466796875,
              215.7890625
            ],
            [
              438.6796875,
              215.7890625
            ],
            [
              438.6796875,
              240.775390625
            ],
            [
              128.3466796875,
              240.775390625
            ]
          ],
          "bbox": [
            128.3466796875,
            215.7890625,
            438.6796875,
            240.775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/62/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-62-1\"></span><b>5.1 Modulus operator</b></h4>",
          "polygon": [
            [
              127.8984375,
              287.9187927246094
            ],
            [
              280.2350769042969,
              287.9187927246094
            ],
            [
              280.2350769042969,
              302.2650146484375
            ],
            [
              127.8984375,
              302.2650146484375
            ]
          ],
          "bbox": [
            127.8984375,
            287.9187927246094,
            280.2350769042969,
            302.2650146484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/62/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The <b>modulus operator</b> works on integers and yields the remainder when the first operand is divided by the second. In Python, the modulus operator is a percent sign (%). The syntax is the same as for other operators:</p>",
          "polygon": [
            [
              128.197265625,
              312.08203125
            ],
            [
              526.833984375,
              312.08203125
            ],
            [
              526.833984375,
              347.2169494628906
            ],
            [
              128.197265625,
              347.2169494628906
            ]
          ],
          "bbox": [
            128.197265625,
            312.08203125,
            526.833984375,
            347.2169494628906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/62/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; quotient = 7 / 3\n&gt;&gt;&gt; print quotient\n2\n&gt;&gt;&gt; remainder = 7 % 3\n&gt;&gt;&gt; print remainder\n1\nSo 7 divided by 3 is 2 with 1 left over.</pre>",
          "polygon": [
            [
              128.86962890625,
              350.560546875
            ],
            [
              293.7537536621094,
              350.560546875
            ],
            [
              293.7537536621094,
              437.0319519042969
            ],
            [
              128.86962890625,
              437.0319519042969
            ]
          ],
          "bbox": [
            128.86962890625,
            350.560546875,
            293.7537536621094,
            437.0319519042969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/62/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The modulus operator turns out to be surprisingly useful. For example, you can check whether one number is divisible by another—if x % y is zero, then x is divisible by y.</p>",
          "polygon": [
            [
              128.0478515625,
              441.6328125
            ],
            [
              525.6033935546875,
              441.6328125
            ],
            [
              525.6033935546875,
              467.61895751953125
            ],
            [
              128.0478515625,
              467.61895751953125
            ]
          ],
          "bbox": [
            128.0478515625,
            441.6328125,
            525.6033935546875,
            467.61895751953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/62/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Also, you can extract the right-most digit or digits from a number. For example, x % 10 yields the right-most digit of x (in base 10). Similarly x % 100 yields the last two digits.</p>",
          "polygon": [
            [
              128.6455078125,
              474.50390625
            ],
            [
              525.9375,
              474.50390625
            ],
            [
              525.9375,
              498.20697021484375
            ],
            [
              128.6455078125,
              498.20697021484375
            ]
          ],
          "bbox": [
            128.6455078125,
            474.50390625,
            525.9375,
            498.20697021484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/62/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-62-2\"></span><b>5.2 Boolean expressions</b></h4>",
          "polygon": [
            [
              128.6455078125,
              524.77734375
            ],
            [
              295.3703918457031,
              524.77734375
            ],
            [
              295.3703918457031,
              539.4530181884766
            ],
            [
              128.6455078125,
              539.4530181884766
            ]
          ],
          "bbox": [
            128.6455078125,
            524.77734375,
            295.3703918457031,
            539.4530181884766
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/62/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>boolean expression</b> is an expression that is either true or false. The following examples use the operator ==, which compares two operands and produces True if they are equal and False otherwise:</p>",
          "polygon": [
            [
              129.09375,
              549.52734375
            ],
            [
              525.5968017578125,
              549.52734375
            ],
            [
              525.5968017578125,
              584.4049682617188
            ],
            [
              129.09375,
              584.4049682617188
            ]
          ],
          "bbox": [
            129.09375,
            549.52734375,
            525.5968017578125,
            584.4049682617188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/62/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; 5 == 5\nTrue\n&gt;&gt;&gt; 5 == 6\nFalse</pre>",
          "polygon": [
            [
              128.49609375,
              587.0390625
            ],
            [
              186.46875,
              587.0390625
            ],
            [
              186.46875,
              635.2594299316406
            ],
            [
              128.49609375,
              635.2594299316406
            ]
          ],
          "bbox": [
            128.49609375,
            587.0390625,
            186.46875,
            635.2594299316406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/62/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">True and False are special values that belong to the type bool; they are not strings:</p>",
          "polygon": [
            [
              128.3466796875,
              639.24609375
            ],
            [
              495.4980163574219,
              639.24609375
            ],
            [
              495.4980163574219,
              650.07421875
            ],
            [
              128.3466796875,
              650.07421875
            ]
          ],
          "bbox": [
            128.3466796875,
            639.24609375,
            495.4980163574219,
            650.07421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/62/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; type(True)\n&lt;type 'bool'&gt;\n&gt;&gt;&gt; type(False)\n&lt;type 'bool'&gt;</pre>",
          "polygon": [
            [
              129.5999755859375,
              653.16796875
            ],
            [
              208.06541442871094,
              653.16796875
            ],
            [
              208.06541442871094,
              700.6854248046875
            ],
            [
              129.5999755859375,
              700.6854248046875
            ]
          ],
          "bbox": [
            129.5999755859375,
            653.16796875,
            208.06541442871094,
            700.6854248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "4": "/page/62/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/63/Page/309",
      "block_type": "Page",
      "html": "<content-ref src='/page/63/PageHeader/0'></content-ref><content-ref src='/page/63/PageHeader/19'></content-ref><content-ref src='/page/63/Text/1'></content-ref><content-ref src='/page/63/Table/2'></content-ref><content-ref src='/page/63/Text/3'></content-ref><content-ref src='/page/63/SectionHeader/4'></content-ref><content-ref src='/page/63/Text/5'></content-ref><content-ref src='/page/63/Text/6'></content-ref><content-ref src='/page/63/Text/7'></content-ref><content-ref src='/page/63/Text/8'></content-ref><content-ref src='/page/63/Code/9'></content-ref><content-ref src='/page/63/Text/10'></content-ref><content-ref src='/page/63/Text/11'></content-ref><content-ref src='/page/63/SectionHeader/12'></content-ref><content-ref src='/page/63/Text/13'></content-ref><content-ref src='/page/63/Code/14'></content-ref><content-ref src='/page/63/Text/15'></content-ref><content-ref src='/page/63/Text/16'></content-ref><content-ref src='/page/63/Text/17'></content-ref><content-ref src='/page/63/Code/247'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/63/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.90625,
              60.8115234375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/63/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.46484375,
              60.27978515625
            ],
            [
              96.9697265625,
              60.27978515625
            ],
            [
              96.9697265625,
              70.23779296875
            ],
            [
              85.46484375,
              70.23779296875
            ]
          ],
          "bbox": [
            85.46484375,
            60.27978515625,
            96.9697265625,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The == operator is one of the <b>relational operators</b>; the others are:</p>",
          "polygon": [
            [
              85.83837890625,
              88.60693359375
            ],
            [
              370.546875,
              88.60693359375
            ],
            [
              370.546875,
              98.79791259765625
            ],
            [
              85.83837890625,
              98.79791259765625
            ]
          ],
          "bbox": [
            85.83837890625,
            88.60693359375,
            370.546875,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/63/Table/2",
          "block_type": "Table",
          "html": "<table><tbody><tr><td></td><td>x != y</td><td></td><td></td><td></td><td># x is not equal to y</td></tr><tr><td></td><td>x &gt; y</td><td></td><td></td><td></td><td># x is greater than y</td></tr><tr><td></td><td>x &lt; y</td><td></td><td></td><td></td><td># x is less than y</td></tr><tr><td></td><td>x &gt;= y</td><td></td><td></td><td></td><td># x is greater than or equal to y</td></tr><tr><td></td><td>x &lt;= y</td><td></td><td></td><td></td><td># x is less than or equal to y</td></tr></tbody></table>",
          "polygon": [
            [
              113.47998046875,
              102.673828125
            ],
            [
              400.1947937011719,
              102.673828125
            ],
            [
              400.1947937011719,
              162.01531982421875
            ],
            [
              113.47998046875,
              162.01531982421875
            ]
          ],
          "bbox": [
            113.47998046875,
            102.673828125,
            400.1947937011719,
            162.01531982421875
          ],
          "children": [
            {
              "id": "/page/63/TableCell/278",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  113.47998046875,
                  102.673828125
                ],
                [
                  114.47998046875,
                  102.673828125
                ],
                [
                  114.47998046875,
                  103.673828125
                ],
                [
                  113.47998046875,
                  103.673828125
                ]
              ],
              "bbox": [
                113.47998046875,
                102.673828125,
                114.47998046875,
                103.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/279",
              "block_type": "TableCell",
              "html": "<td>x != y</td>",
              "polygon": [
                [
                  114.47998046875,
                  102.673828125
                ],
                [
                  115.47998046875,
                  102.673828125
                ],
                [
                  115.47998046875,
                  103.673828125
                ],
                [
                  114.47998046875,
                  103.673828125
                ]
              ],
              "bbox": [
                114.47998046875,
                102.673828125,
                115.47998046875,
                103.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/280",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  115.47998046875,
                  102.673828125
                ],
                [
                  116.47998046875,
                  102.673828125
                ],
                [
                  116.47998046875,
                  103.673828125
                ],
                [
                  115.47998046875,
                  103.673828125
                ]
              ],
              "bbox": [
                115.47998046875,
                102.673828125,
                116.47998046875,
                103.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/281",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  116.47998046875,
                  102.673828125
                ],
                [
                  117.47998046875,
                  102.673828125
                ],
                [
                  117.47998046875,
                  103.673828125
                ],
                [
                  116.47998046875,
                  103.673828125
                ]
              ],
              "bbox": [
                116.47998046875,
                102.673828125,
                117.47998046875,
                103.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/282",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  117.47998046875,
                  102.673828125
                ],
                [
                  118.47998046875,
                  102.673828125
                ],
                [
                  118.47998046875,
                  103.673828125
                ],
                [
                  117.47998046875,
                  103.673828125
                ]
              ],
              "bbox": [
                117.47998046875,
                102.673828125,
                118.47998046875,
                103.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/283",
              "block_type": "TableCell",
              "html": "<td># x is not equal to y</td>",
              "polygon": [
                [
                  118.47998046875,
                  102.673828125
                ],
                [
                  119.47998046875,
                  102.673828125
                ],
                [
                  119.47998046875,
                  103.673828125
                ],
                [
                  118.47998046875,
                  103.673828125
                ]
              ],
              "bbox": [
                118.47998046875,
                102.673828125,
                119.47998046875,
                103.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/284",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  113.47998046875,
                  103.673828125
                ],
                [
                  114.47998046875,
                  103.673828125
                ],
                [
                  114.47998046875,
                  104.673828125
                ],
                [
                  113.47998046875,
                  104.673828125
                ]
              ],
              "bbox": [
                113.47998046875,
                103.673828125,
                114.47998046875,
                104.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/285",
              "block_type": "TableCell",
              "html": "<td>x &gt; y</td>",
              "polygon": [
                [
                  114.47998046875,
                  103.673828125
                ],
                [
                  115.47998046875,
                  103.673828125
                ],
                [
                  115.47998046875,
                  104.673828125
                ],
                [
                  114.47998046875,
                  104.673828125
                ]
              ],
              "bbox": [
                114.47998046875,
                103.673828125,
                115.47998046875,
                104.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/286",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  115.47998046875,
                  103.673828125
                ],
                [
                  116.47998046875,
                  103.673828125
                ],
                [
                  116.47998046875,
                  104.673828125
                ],
                [
                  115.47998046875,
                  104.673828125
                ]
              ],
              "bbox": [
                115.47998046875,
                103.673828125,
                116.47998046875,
                104.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/287",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  116.47998046875,
                  103.673828125
                ],
                [
                  117.47998046875,
                  103.673828125
                ],
                [
                  117.47998046875,
                  104.673828125
                ],
                [
                  116.47998046875,
                  104.673828125
                ]
              ],
              "bbox": [
                116.47998046875,
                103.673828125,
                117.47998046875,
                104.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/288",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  117.47998046875,
                  103.673828125
                ],
                [
                  118.47998046875,
                  103.673828125
                ],
                [
                  118.47998046875,
                  104.673828125
                ],
                [
                  117.47998046875,
                  104.673828125
                ]
              ],
              "bbox": [
                117.47998046875,
                103.673828125,
                118.47998046875,
                104.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/289",
              "block_type": "TableCell",
              "html": "<td># x is greater than y</td>",
              "polygon": [
                [
                  118.47998046875,
                  103.673828125
                ],
                [
                  119.47998046875,
                  103.673828125
                ],
                [
                  119.47998046875,
                  104.673828125
                ],
                [
                  118.47998046875,
                  104.673828125
                ]
              ],
              "bbox": [
                118.47998046875,
                103.673828125,
                119.47998046875,
                104.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/290",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  113.47998046875,
                  104.673828125
                ],
                [
                  114.47998046875,
                  104.673828125
                ],
                [
                  114.47998046875,
                  105.673828125
                ],
                [
                  113.47998046875,
                  105.673828125
                ]
              ],
              "bbox": [
                113.47998046875,
                104.673828125,
                114.47998046875,
                105.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/291",
              "block_type": "TableCell",
              "html": "<td>x &lt; y</td>",
              "polygon": [
                [
                  114.47998046875,
                  104.673828125
                ],
                [
                  115.47998046875,
                  104.673828125
                ],
                [
                  115.47998046875,
                  105.673828125
                ],
                [
                  114.47998046875,
                  105.673828125
                ]
              ],
              "bbox": [
                114.47998046875,
                104.673828125,
                115.47998046875,
                105.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/292",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  115.47998046875,
                  104.673828125
                ],
                [
                  116.47998046875,
                  104.673828125
                ],
                [
                  116.47998046875,
                  105.673828125
                ],
                [
                  115.47998046875,
                  105.673828125
                ]
              ],
              "bbox": [
                115.47998046875,
                104.673828125,
                116.47998046875,
                105.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/293",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  116.47998046875,
                  104.673828125
                ],
                [
                  117.47998046875,
                  104.673828125
                ],
                [
                  117.47998046875,
                  105.673828125
                ],
                [
                  116.47998046875,
                  105.673828125
                ]
              ],
              "bbox": [
                116.47998046875,
                104.673828125,
                117.47998046875,
                105.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/294",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  117.47998046875,
                  104.673828125
                ],
                [
                  118.47998046875,
                  104.673828125
                ],
                [
                  118.47998046875,
                  105.673828125
                ],
                [
                  117.47998046875,
                  105.673828125
                ]
              ],
              "bbox": [
                117.47998046875,
                104.673828125,
                118.47998046875,
                105.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/295",
              "block_type": "TableCell",
              "html": "<td># x is less than y</td>",
              "polygon": [
                [
                  118.47998046875,
                  104.673828125
                ],
                [
                  119.47998046875,
                  104.673828125
                ],
                [
                  119.47998046875,
                  105.673828125
                ],
                [
                  118.47998046875,
                  105.673828125
                ]
              ],
              "bbox": [
                118.47998046875,
                104.673828125,
                119.47998046875,
                105.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/296",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  113.47998046875,
                  105.673828125
                ],
                [
                  114.47998046875,
                  105.673828125
                ],
                [
                  114.47998046875,
                  106.673828125
                ],
                [
                  113.47998046875,
                  106.673828125
                ]
              ],
              "bbox": [
                113.47998046875,
                105.673828125,
                114.47998046875,
                106.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/297",
              "block_type": "TableCell",
              "html": "<td>x &gt;= y</td>",
              "polygon": [
                [
                  114.47998046875,
                  105.673828125
                ],
                [
                  115.47998046875,
                  105.673828125
                ],
                [
                  115.47998046875,
                  106.673828125
                ],
                [
                  114.47998046875,
                  106.673828125
                ]
              ],
              "bbox": [
                114.47998046875,
                105.673828125,
                115.47998046875,
                106.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/298",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  115.47998046875,
                  105.673828125
                ],
                [
                  116.47998046875,
                  105.673828125
                ],
                [
                  116.47998046875,
                  106.673828125
                ],
                [
                  115.47998046875,
                  106.673828125
                ]
              ],
              "bbox": [
                115.47998046875,
                105.673828125,
                116.47998046875,
                106.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/299",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  116.47998046875,
                  105.673828125
                ],
                [
                  117.47998046875,
                  105.673828125
                ],
                [
                  117.47998046875,
                  106.673828125
                ],
                [
                  116.47998046875,
                  106.673828125
                ]
              ],
              "bbox": [
                116.47998046875,
                105.673828125,
                117.47998046875,
                106.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/300",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  117.47998046875,
                  105.673828125
                ],
                [
                  118.47998046875,
                  105.673828125
                ],
                [
                  118.47998046875,
                  106.673828125
                ],
                [
                  117.47998046875,
                  106.673828125
                ]
              ],
              "bbox": [
                117.47998046875,
                105.673828125,
                118.47998046875,
                106.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/301",
              "block_type": "TableCell",
              "html": "<td># x is greater than or equal to y</td>",
              "polygon": [
                [
                  118.47998046875,
                  105.673828125
                ],
                [
                  119.47998046875,
                  105.673828125
                ],
                [
                  119.47998046875,
                  106.673828125
                ],
                [
                  118.47998046875,
                  106.673828125
                ]
              ],
              "bbox": [
                118.47998046875,
                105.673828125,
                119.47998046875,
                106.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/302",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  113.47998046875,
                  106.673828125
                ],
                [
                  114.47998046875,
                  106.673828125
                ],
                [
                  114.47998046875,
                  107.673828125
                ],
                [
                  113.47998046875,
                  107.673828125
                ]
              ],
              "bbox": [
                113.47998046875,
                106.673828125,
                114.47998046875,
                107.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/303",
              "block_type": "TableCell",
              "html": "<td>x &lt;= y</td>",
              "polygon": [
                [
                  114.47998046875,
                  106.673828125
                ],
                [
                  115.47998046875,
                  106.673828125
                ],
                [
                  115.47998046875,
                  107.673828125
                ],
                [
                  114.47998046875,
                  107.673828125
                ]
              ],
              "bbox": [
                114.47998046875,
                106.673828125,
                115.47998046875,
                107.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/304",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  115.47998046875,
                  106.673828125
                ],
                [
                  116.47998046875,
                  106.673828125
                ],
                [
                  116.47998046875,
                  107.673828125
                ],
                [
                  115.47998046875,
                  107.673828125
                ]
              ],
              "bbox": [
                115.47998046875,
                106.673828125,
                116.47998046875,
                107.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/305",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  116.47998046875,
                  106.673828125
                ],
                [
                  117.47998046875,
                  106.673828125
                ],
                [
                  117.47998046875,
                  107.673828125
                ],
                [
                  116.47998046875,
                  107.673828125
                ]
              ],
              "bbox": [
                116.47998046875,
                106.673828125,
                117.47998046875,
                107.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/306",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  117.47998046875,
                  106.673828125
                ],
                [
                  118.47998046875,
                  106.673828125
                ],
                [
                  118.47998046875,
                  107.673828125
                ],
                [
                  117.47998046875,
                  107.673828125
                ]
              ],
              "bbox": [
                117.47998046875,
                106.673828125,
                118.47998046875,
                107.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/63/TableCell/307",
              "block_type": "TableCell",
              "html": "<td># x is less than or equal to y</td>",
              "polygon": [
                [
                  118.47998046875,
                  106.673828125
                ],
                [
                  119.47998046875,
                  106.673828125
                ],
                [
                  119.47998046875,
                  107.673828125
                ],
                [
                  118.47998046875,
                  107.673828125
                ]
              ],
              "bbox": [
                118.47998046875,
                106.673828125,
                119.47998046875,
                107.673828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "4": "/page/62/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/63/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although these operations are probably familiar to you, the Python symbols are different from the mathematical symbols. A common error is to use a single equal sign (=) instead of a double equal sign (==). Remember that = is an assignment operator and == is a relational operator. There is no such thing as =&lt; or =&gt;.</p>",
          "polygon": [
            [
              85.6142578125,
              165.708984375
            ],
            [
              482.4033203125,
              165.708984375
            ],
            [
              482.4033203125,
              213.33697509765625
            ],
            [
              85.6142578125,
              213.33697509765625
            ]
          ],
          "bbox": [
            85.6142578125,
            165.708984375,
            482.4033203125,
            213.33697509765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/62/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/63/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-63-0\"></span><b>5.3 Logical operators</b></h4>",
          "polygon": [
            [
              85.763671875,
              239.958984375
            ],
            [
              231.890625,
              239.958984375
            ],
            [
              231.890625,
              254.8179931640625
            ],
            [
              85.763671875,
              254.8179931640625
            ]
          ],
          "bbox": [
            85.763671875,
            239.958984375,
            231.890625,
            254.8179931640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are three <b>logical operators</b>: and, or, and not. The semantics (meaning) of these operators is similar to their meaning in English. For example, x &gt; 0 and x &lt; 10 is true only if x is greater than 0 <i>and</i> less than 10.</p>",
          "polygon": [
            [
              85.6142578125,
              265.095703125
            ],
            [
              483.50390625,
              265.095703125
            ],
            [
              483.50390625,
              299.93792724609375
            ],
            [
              85.6142578125,
              299.93792724609375
            ]
          ],
          "bbox": [
            85.6142578125,
            265.095703125,
            483.50390625,
            299.93792724609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">n%2 == 0 or n%3 == 0 is true if <i>either</i> of the conditions is true, that is, if the number is divisible by 2 <i>or</i> 3.</p>",
          "polygon": [
            [
              85.46484375,
              307.828125
            ],
            [
              482.607421875,
              307.828125
            ],
            [
              482.607421875,
              330.69293212890625
            ],
            [
              85.46484375,
              330.69293212890625
            ]
          ],
          "bbox": [
            85.46484375,
            307.828125,
            482.607421875,
            330.69293212890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Finally, the not operator negates a boolean expression, so not (x &gt; y) is true if x &gt; y is false, that is, if x is less than or equal to y.</p>",
          "polygon": [
            [
              85.763671875,
              338.958984375
            ],
            [
              482.607421875,
              338.958984375
            ],
            [
              482.607421875,
              361.44793701171875
            ],
            [
              85.763671875,
              361.44793701171875
            ]
          ],
          "bbox": [
            85.763671875,
            338.958984375,
            482.607421875,
            361.44793701171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Strictly speaking, the operands of the logical operators should be boolean expressions, but Python is not very strict. Any nonzero number is interpreted as \"true.\"</p>",
          "polygon": [
            [
              85.46484375,
              369.31640625
            ],
            [
              482.90625,
              369.31640625
            ],
            [
              482.90625,
              392.2039489746094
            ],
            [
              85.46484375,
              392.2039489746094
            ]
          ],
          "bbox": [
            85.46484375,
            369.31640625,
            482.90625,
            392.2039489746094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; 17 and True</pre>",
          "polygon": [
            [
              85.763671875,
              396.6807861328125
            ],
            [
              165.251953125,
              396.6807861328125
            ],
            [
              165.251953125,
              407.21484375
            ],
            [
              85.763671875,
              407.21484375
            ]
          ],
          "bbox": [
            85.763671875,
            396.6807861328125,
            165.251953125,
            407.21484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">True</p>",
          "polygon": [
            [
              86.13720703125,
              408.8747863769531
            ],
            [
              109.74462890625,
              408.8747863769531
            ],
            [
              109.74462890625,
              419.58984375
            ],
            [
              86.13720703125,
              419.58984375
            ]
          ],
          "bbox": [
            86.13720703125,
            408.8747863769531,
            109.74462890625,
            419.58984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This flexibility can be useful, but there are some subtleties to it that might be confusing. You might want to avoid it (unless you know what you are doing).</p>",
          "polygon": [
            [
              85.763671875,
              422.68359375
            ],
            [
              482.4033203125,
              422.68359375
            ],
            [
              482.4033203125,
              445.77093505859375
            ],
            [
              85.763671875,
              445.77093505859375
            ]
          ],
          "bbox": [
            85.763671875,
            422.68359375,
            482.4033203125,
            445.77093505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "4": "/page/63/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/63/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-63-1\"></span><b>5.4 Conditional execution</b></h3>",
          "polygon": [
            [
              85.83837890625,
              471.796875
            ],
            [
              264.1640625,
              471.796875
            ],
            [
              264.1640625,
              487.25201416015625
            ],
            [
              85.83837890625,
              487.25201416015625
            ]
          ],
          "bbox": [
            85.83837890625,
            471.796875,
            264.1640625,
            487.25201416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In order to write useful programs, we almost always need the ability to check conditions and change the behavior of the program accordingly. <b>Conditional statements</b> give us this ability. The simplest form is the if statement:</p>",
          "polygon": [
            [
              85.763671875,
              497.3203125
            ],
            [
              482.90625,
              497.3203125
            ],
            [
              482.90625,
              532.3719482421875
            ],
            [
              85.763671875,
              532.3719482421875
            ]
          ],
          "bbox": [
            85.763671875,
            497.3203125,
            482.90625,
            532.3719482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/63/Code/14",
          "block_type": "Code",
          "html": "<pre>if x &gt; 0:\n    print 'x is positive'</pre>",
          "polygon": [
            [
              86.40007019042969,
              535.9921875
            ],
            [
              222.328125,
              535.9921875
            ],
            [
              222.328125,
              559.96875
            ],
            [
              86.40007019042969,
              559.96875
            ]
          ],
          "bbox": [
            86.40007019042969,
            535.9921875,
            222.328125,
            559.96875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The boolean expression after if is called the <b>condition</b>. If it is true, then the indented statement gets executed. If not, nothing happens.</p>",
          "polygon": [
            [
              85.9130859375,
              563.0625
            ],
            [
              482.90625,
              563.0625
            ],
            [
              482.90625,
              585.93896484375
            ],
            [
              85.9130859375,
              585.93896484375
            ]
          ],
          "bbox": [
            85.9130859375,
            563.0625,
            482.90625,
            585.93896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">if statements have the same structure as function definitions: a header followed by an indented body. Statements like this are called <b>compound statements</b>.</p>",
          "polygon": [
            [
              85.3154296875,
              594.0
            ],
            [
              482.90625,
              594.0
            ],
            [
              482.90625,
              616.6939697265625
            ],
            [
              85.3154296875,
              616.6939697265625
            ]
          ],
          "bbox": [
            85.3154296875,
            594.0,
            482.90625,
            616.6939697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/63/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There is no limit on the number of statements that can appear in the body, but there has to be at least one. Occasionally, it is useful to have a body with no statements (usually as a place keeper for code you haven't written yet). In that case, you can use the pass statement, which does nothing.</p>",
          "polygon": [
            [
              85.3154296875,
              624.55078125
            ],
            [
              482.40350341796875,
              624.55078125
            ],
            [
              482.40350341796875,
              671.8379898071289
            ],
            [
              85.3154296875,
              671.8379898071289
            ]
          ],
          "bbox": [
            85.3154296875,
            624.55078125,
            482.40350341796875,
            671.8379898071289
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/63/Code/247",
          "block_type": "Code",
          "html": "<pre>if x &lt; 0:\n   pass # need to handle negative values!</pre>",
          "polygon": [
            [
              86.361328125,
              674.82421875
            ],
            [
              353.1431579589844,
              674.82421875
            ],
            [
              353.1431579589844,
              699.57421875
            ],
            [
              86.361328125,
              699.57421875
            ]
          ],
          "bbox": [
            86.361328125,
            674.82421875,
            353.1431579589844,
            699.57421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/63/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/64/Page/191",
      "block_type": "Page",
      "html": "<content-ref src='/page/64/PageHeader/0'></content-ref><content-ref src='/page/64/PageHeader/14'></content-ref><content-ref src='/page/64/SectionHeader/1'></content-ref><content-ref src='/page/64/Text/2'></content-ref><content-ref src='/page/64/TextInlineMath/3'></content-ref><content-ref src='/page/64/Text/4'></content-ref><content-ref src='/page/64/SectionHeader/5'></content-ref><content-ref src='/page/64/Text/6'></content-ref><content-ref src='/page/64/Code/7'></content-ref><content-ref src='/page/64/Text/8'></content-ref><content-ref src='/page/64/Code/9'></content-ref><content-ref src='/page/64/Text/10'></content-ref><content-ref src='/page/64/SectionHeader/11'></content-ref><content-ref src='/page/64/Text/12'></content-ref><content-ref src='/page/64/Code/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/64/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.6455078125,
              60.908203125
            ],
            [
              525.6033935546875,
              60.908203125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.6455078125,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            60.908203125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/64/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.71484375
            ],
            [
              525.638671875,
              60.71484375
            ],
            [
              525.638671875,
              69.99609375
            ],
            [
              514.880859375,
              69.99609375
            ]
          ],
          "bbox": [
            514.880859375,
            60.71484375,
            525.638671875,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/64/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-64-0\"></span><b>5.5 Alternative execution</b></h4>",
          "polygon": [
            [
              128.794921875,
              85.95379638671875
            ],
            [
              302.712890625,
              85.95379638671875
            ],
            [
              302.712890625,
              100.29998779296875
            ],
            [
              128.794921875,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.794921875,
            85.95379638671875,
            302.712890625,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12",
            "4": "/page/64/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/64/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A second form of the if statement is <b>alternative execution</b>, in which there are two possibilities and the condition determines which one gets executed. The syntax looks like this:</p>",
          "polygon": [
            [
              129.2431640625,
              112.53515625
            ],
            [
              525.6006469726562,
              112.53515625
            ],
            [
              525.6006469726562,
              135.11395263671875
            ],
            [
              129.2431640625,
              135.11395263671875
            ]
          ],
          "bbox": [
            129.2431640625,
            112.53515625,
            525.6006469726562,
            135.11395263671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12",
            "4": "/page/64/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/64/TextInlineMath/3",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">if x%2 == 0: print 'x is even' else: print 'x is odd'</p>",
          "polygon": [
            [
              129.60000610351562,
              141.3907470703125
            ],
            [
              241.6025390625,
              141.3907470703125
            ],
            [
              241.6025390625,
              187.93634033203125
            ],
            [
              129.60000610351562,
              187.93634033203125
            ]
          ],
          "bbox": [
            129.60000610351562,
            141.3907470703125,
            241.6025390625,
            187.93634033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12",
            "4": "/page/64/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/64/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the remainder when x is divided by 2 is 0, then we know that x is even, and the program displays a message to that effect. If the condition is false, the second set of statements is executed. Since the condition must be true or false, exactly one of the alternatives will be executed. The alternatives are called <b>branches</b>, because they are branches in the flow of execution.</p>",
          "polygon": [
            [
              128.794921875,
              193.4560546875
            ],
            [
              525.638671875,
              193.4560546875
            ],
            [
              525.638671875,
              253.25091552734375
            ],
            [
              128.794921875,
              253.25091552734375
            ]
          ],
          "bbox": [
            128.794921875,
            193.4560546875,
            525.638671875,
            253.25091552734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/63/SectionHeader/12",
            "4": "/page/64/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/64/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-64-1\"></span><b>5.6 Chained conditionals</b></h3>",
          "polygon": [
            [
              128.6455078125,
              282.69140625
            ],
            [
              302.5634765625,
              282.69140625
            ],
            [
              302.5634765625,
              297.6069641113281
            ],
            [
              128.6455078125,
              297.6069641113281
            ]
          ],
          "bbox": [
            128.6455078125,
            282.69140625,
            302.5634765625,
            297.6069641113281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/64/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Sometimes there are more than two possibilities and we need more than two branches. One way to express a computation like that is a <b>chained conditional</b>:</p>",
          "polygon": [
            [
              129.392578125,
              309.181640625
            ],
            [
              525.6033935546875,
              309.181640625
            ],
            [
              525.6033935546875,
              332.4208984375
            ],
            [
              129.392578125,
              332.4208984375
            ]
          ],
          "bbox": [
            129.392578125,
            309.181640625,
            525.6033935546875,
            332.4208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/64/Code/7",
          "block_type": "Code",
          "html": "<pre>if x &lt; y:\n    print 'x is less than y'\nelif x &gt; y:\n    print 'x is greater than y'\nelse:\n    print 'x and y are equal'</pre>",
          "polygon": [
            [
              129.5999755859375,
              338.6967468261719
            ],
            [
              291.703369140625,
              338.6967468261719
            ],
            [
              291.703369140625,
              409.63134765625
            ],
            [
              129.5999755859375,
              409.63134765625
            ]
          ],
          "bbox": [
            129.5999755859375,
            338.6967468261719,
            291.703369140625,
            409.63134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/64/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">elif is an abbreviation of \"else if.\" Again, exactly one branch will be executed. There is no limit on the number of elif statements. If there is an else clause, it has to be at the end, but there doesn't have to be one.</p>",
          "polygon": [
            [
              129.59999084472656,
              414.94921875
            ],
            [
              525.9375,
              414.94921875
            ],
            [
              525.9375,
              450.55792236328125
            ],
            [
              129.59999084472656,
              450.55792236328125
            ]
          ],
          "bbox": [
            129.59999084472656,
            414.94921875,
            525.9375,
            450.55792236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/64/Code/9",
          "block_type": "Code",
          "html": "<pre>if choice == 'a':\n    draw_a()\nelif choice == 'b':\n    draw_b()\nelif choice == 'c':\n    draw_c()</pre>",
          "polygon": [
            [
              129.60000610351562,
              456.8337707519531
            ],
            [
              234.28125,
              456.8337707519531
            ],
            [
              234.28125,
              527.7683715820312
            ],
            [
              129.60000610351562,
              527.7683715820312
            ]
          ],
          "bbox": [
            129.60000610351562,
            456.8337707519531,
            234.28125,
            527.7683715820312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/64/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each condition is checked in order. If the first is false, the next is checked, and so on. If one of them is true, the corresponding branch executes, and the statement ends. Even if more than one condition is true, only the first true branch executes.</p>",
          "polygon": [
            [
              129.60003662109375,
              533.671875
            ],
            [
              525.603515625,
              533.671875
            ],
            [
              525.603515625,
              568.6949462890625
            ],
            [
              129.60003662109375,
              568.6949462890625
            ]
          ],
          "bbox": [
            129.60003662109375,
            533.671875,
            525.603515625,
            568.6949462890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/64/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-64-2\"></span><b>5.7 Nested conditionals</b></h3>",
          "polygon": [
            [
              128.3466796875,
              597.8671875
            ],
            [
              292.94586181640625,
              597.8671875
            ],
            [
              292.94586181640625,
              613.0500030517578
            ],
            [
              128.3466796875,
              613.0500030517578
            ]
          ],
          "bbox": [
            128.3466796875,
            597.8671875,
            292.94586181640625,
            613.0500030517578
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/64/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One conditional can also be nested within another. We could have written the trichotomy example like this:</p>",
          "polygon": [
            [
              128.3466796875,
              625.32421875
            ],
            [
              525.6033935546875,
              625.32421875
            ],
            [
              525.6033935546875,
              647.8639526367188
            ],
            [
              128.3466796875,
              647.8639526367188
            ]
          ],
          "bbox": [
            128.3466796875,
            625.32421875,
            525.6033935546875,
            647.8639526367188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/64/Code/13",
          "block_type": "Code",
          "html": "<pre>if x == y:\n    print 'x and y are equal'\nelse:\n    if x &lt; y:</pre>",
          "polygon": [
            [
              128.9443359375,
              654.1398010253906
            ],
            [
              281.2453918457031,
              654.1398010253906
            ],
            [
              281.2453918457031,
              701.5078125
            ],
            [
              128.9443359375,
              701.5078125
            ]
          ],
          "bbox": [
            128.9443359375,
            654.1398010253906,
            281.2453918457031,
            701.5078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/65/Page/233",
      "block_type": "Page",
      "html": "<content-ref src='/page/65/PageHeader/0'></content-ref><content-ref src='/page/65/PageHeader/18'></content-ref><content-ref src='/page/65/TextInlineMath/1'></content-ref><content-ref src='/page/65/Text/2'></content-ref><content-ref src='/page/65/Text/3'></content-ref><content-ref src='/page/65/Text/4'></content-ref><content-ref src='/page/65/Code/5'></content-ref><content-ref src='/page/65/Text/6'></content-ref><content-ref src='/page/65/Code/7'></content-ref><content-ref src='/page/65/SectionHeader/8'></content-ref><content-ref src='/page/65/Text/9'></content-ref><content-ref src='/page/65/Code/10'></content-ref><content-ref src='/page/65/Text/11'></content-ref><content-ref src='/page/65/Text/12'></content-ref><content-ref src='/page/65/Code/13'></content-ref><content-ref src='/page/65/Text/14'></content-ref><content-ref src='/page/65/Text/15'></content-ref><content-ref src='/page/65/Text/16'></content-ref><content-ref src='/page/65/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/65/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.521484375
            ],
            [
              482.607421875,
              60.521484375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.521484375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.46484375,
              60.6181640625
            ],
            [
              96.22265625,
              60.6181640625
            ],
            [
              96.22265625,
              69.8994140625
            ],
            [
              85.46484375,
              69.8994140625
            ]
          ],
          "bbox": [
            85.46484375,
            60.6181640625,
            96.22265625,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/TextInlineMath/1",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">print 'x is less than y' else: print 'x is greater than y'</p>",
          "polygon": [
            [
              107.31599426269531,
              87.6884765625
            ],
            [
              269.4203796386719,
              87.6884765625
            ],
            [
              269.4203796386719,
              123.03729248046875
            ],
            [
              107.31599426269531,
              123.03729248046875
            ]
          ],
          "bbox": [
            107.31599426269531,
            87.6884765625,
            269.4203796386719,
            123.03729248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The outer conditional contains two branches. The first branch contains a simple statement. The second branch contains another if statement, which has two branches of its own. Those two branches are both simple statements, although they could have been conditional statements as well.</p>",
          "polygon": [
            [
              86.0625,
              127.810546875
            ],
            [
              482.4034118652344,
              127.810546875
            ],
            [
              482.4034118652344,
              175.0548095703125
            ],
            [
              86.0625,
              175.0548095703125
            ]
          ],
          "bbox": [
            86.0625,
            127.810546875,
            482.4034118652344,
            175.0548095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although the indentation of the statements makes the structure apparent, <b>nested condi</b><b>tionals</b> become difficult to read very quickly. In general, it is a good idea to avoid them when you can.</p>",
          "polygon": [
            [
              85.763671875,
              183.5947265625
            ],
            [
              482.39678955078125,
              183.5947265625
            ],
            [
              482.39678955078125,
              218.69976806640625
            ],
            [
              85.763671875,
              218.69976806640625
            ]
          ],
          "bbox": [
            85.763671875,
            183.5947265625,
            482.39678955078125,
            218.69976806640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Logical operators often provide a way to simplify nested conditional statements. For example, we can rewrite the following code using a single conditional:</p>",
          "polygon": [
            [
              85.46484375,
              227.197265625
            ],
            [
              482.4033508300781,
              227.197265625
            ],
            [
              482.4033508300781,
              250.15081787109375
            ],
            [
              85.46484375,
              250.15081787109375
            ]
          ],
          "bbox": [
            85.46484375,
            227.197265625,
            482.4033508300781,
            250.15081787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/Code/5",
          "block_type": "Code",
          "html": "<pre>if 0 &lt; x:\n    if x &lt; 10:\n        print 'x is a positive single-digit number.'</pre>",
          "polygon": [
            [
              86.4000244140625,
              254.84765625
            ],
            [
              358.3153991699219,
              254.84765625
            ],
            [
              358.3153991699219,
              290.0390625
            ],
            [
              86.4000244140625,
              290.0390625
            ]
          ],
          "bbox": [
            86.4000244140625,
            254.84765625,
            358.3153991699219,
            290.0390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The print statement is executed only if we make it past both conditionals, so we can get the same effect with the and operator:</p>",
          "polygon": [
            [
              85.9130859375,
              294.099609375
            ],
            [
              482.39959716796875,
              294.099609375
            ],
            [
              482.39959716796875,
              317.3047790527344
            ],
            [
              85.9130859375,
              317.3047790527344
            ]
          ],
          "bbox": [
            85.9130859375,
            294.099609375,
            482.39959716796875,
            317.3047790527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/Code/7",
          "block_type": "Code",
          "html": "<pre>if 0 &lt; x and x &lt; 10:\n    print 'x is a positive single-digit number.'</pre>",
          "polygon": [
            [
              85.98779296875,
              322.4776306152344
            ],
            [
              337.974609375,
              322.4776306152344
            ],
            [
              337.974609375,
              344.6352233886719
            ],
            [
              85.98779296875,
              344.6352233886719
            ]
          ],
          "bbox": [
            85.98779296875,
            322.4776306152344,
            337.974609375,
            344.6352233886719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/65/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-65-0\"></span><b>5.8 Recursion</b></h4>",
          "polygon": [
            [
              86.0625,
              372.603515625
            ],
            [
              184.81497192382812,
              372.603515625
            ],
            [
              184.81497192382812,
              387.2398681640625
            ],
            [
              86.0625,
              387.2398681640625
            ]
          ],
          "bbox": [
            86.0625,
            372.603515625,
            184.81497192382812,
            387.2398681640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is legal for one function to call another; it is also legal for a function to call itself. It may not be obvious why that is a good thing, but it turns out to be one of the most magical things a program can do. For example, look at the following function:</p>",
          "polygon": [
            [
              85.9130859375,
              397.93359375
            ],
            [
              482.4033203125,
              397.93359375
            ],
            [
              482.4033203125,
              433.51171875
            ],
            [
              85.9130859375,
              433.51171875
            ]
          ],
          "bbox": [
            85.9130859375,
            397.93359375,
            482.4033203125,
            433.51171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Code/10",
          "block_type": "Code",
          "html": "<pre>def countdown(n):\n    if n &lt;= 0:\n        print 'Blastoff!'\n    else:\n        print n\n        countdown(n-1)</pre>",
          "polygon": [
            [
              86.40003967285156,
              438.2286682128906
            ],
            [
              218.8916015625,
              438.2286682128906
            ],
            [
              218.8916015625,
              509.16326904296875
            ],
            [
              86.40003967285156,
              509.16326904296875
            ]
          ],
          "bbox": [
            86.40003967285156,
            438.2286682128906,
            218.8916015625,
            509.16326904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If n is 0 or negative, it outputs the word, \"Blastoff!\" Otherwise, it outputs n and then calls a function named countdown—itself—passing n-1 as an argument.</p>",
          "polygon": [
            [
              85.9130859375,
              514.3359375
            ],
            [
              482.4001159667969,
              514.3359375
            ],
            [
              482.4001159667969,
              536.7918395996094
            ],
            [
              85.9130859375,
              536.7918395996094
            ]
          ],
          "bbox": [
            85.9130859375,
            514.3359375,
            482.4001159667969,
            536.7918395996094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">What happens if we call this function like this?</p>",
          "polygon": [
            [
              85.83837890625,
              545.66015625
            ],
            [
              292.16754150390625,
              545.66015625
            ],
            [
              292.16754150390625,
              556.0488433837891
            ],
            [
              85.83837890625,
              556.0488433837891
            ]
          ],
          "bbox": [
            85.83837890625,
            545.66015625,
            292.16754150390625,
            556.0488433837891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Code/13",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; countdown(3)</pre>",
          "polygon": [
            [
              85.46484375,
              560.35546875
            ],
            [
              170.0958709716797,
              560.35546875
            ],
            [
              170.0958709716797,
              571.1842956542969
            ],
            [
              85.46484375,
              571.1842956542969
            ]
          ],
          "bbox": [
            85.46484375,
            560.35546875,
            170.0958709716797,
            571.1842956542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The execution of countdown begins with n=3, and since n is greater than 0, it outputs the value 3, and then calls itself...</p>",
          "polygon": [
            [
              85.6142578125,
              575.82421875
            ],
            [
              482.39666748046875,
              575.82421875
            ],
            [
              482.39666748046875,
              598.8138427734375
            ],
            [
              85.6142578125,
              598.8138427734375
            ]
          ],
          "bbox": [
            85.6142578125,
            575.82421875,
            482.39666748046875,
            598.8138427734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/15",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\">The execution of countdown begins with n=2, and since n is greater than 0, it outputs the value 2, and then calls itself...</p></blockquote>",
          "polygon": [
            [
              110.865234375,
              610.2421875
            ],
            [
              458.701171875,
              610.2421875
            ],
            [
              458.701171875,
              632.7618560791016
            ],
            [
              110.865234375,
              632.7618560791016
            ]
          ],
          "bbox": [
            110.865234375,
            610.2421875,
            458.701171875,
            632.7618560791016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/16",
          "block_type": "Text",
          "html": "<blockquote><blockquote><p block-type=\"Text\">The execution of countdown begins with n=1, and since n is greater than 0, it outputs the value 1, and then calls itself...</p></blockquote></blockquote>",
          "polygon": [
            [
              132.6796875,
              637.69921875
            ],
            [
              436.2890625,
              637.69921875
            ],
            [
              436.2890625,
              660.3978576660156
            ],
            [
              132.6796875,
              660.3978576660156
            ]
          ],
          "bbox": [
            132.6796875,
            637.69921875,
            436.2890625,
            660.3978576660156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/65/Text/17",
          "block_type": "Text",
          "html": "<blockquote><blockquote><blockquote><p block-type=\"Text\">The execution of countdown begins with n=0, and since n is not greater than 0, it outputs the word, \"Blastoff!\" and then returns.</p></blockquote></blockquote></blockquote>",
          "polygon": [
            [
              150.23583984375,
              665.9296875
            ],
            [
              418.060546875,
              665.9296875
            ],
            [
              418.060546875,
              700.8348693847656
            ],
            [
              150.23583984375,
              700.8348693847656
            ]
          ],
          "bbox": [
            150.23583984375,
            665.9296875,
            418.060546875,
            700.8348693847656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11",
        "4": "/page/65/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/66/Page/270",
      "block_type": "Page",
      "html": "<content-ref src='/page/66/PageHeader/0'></content-ref><content-ref src='/page/66/PageHeader/19'></content-ref><content-ref src='/page/66/Text/1'></content-ref><content-ref src='/page/66/Text/2'></content-ref><content-ref src='/page/66/Text/3'></content-ref><content-ref src='/page/66/Text/4'></content-ref><content-ref src='/page/66/Code/5'></content-ref><content-ref src='/page/66/Text/6'></content-ref><content-ref src='/page/66/Text/7'></content-ref><content-ref src='/page/66/Code/8'></content-ref><content-ref src='/page/66/Text/9'></content-ref><content-ref src='/page/66/Text/10'></content-ref><content-ref src='/page/66/Text/11'></content-ref><content-ref src='/page/66/SectionHeader/12'></content-ref><content-ref src='/page/66/Text/13'></content-ref><content-ref src='/page/66/Text/14'></content-ref><content-ref src='/page/66/Text/15'></content-ref><content-ref src='/page/66/Text/16'></content-ref><content-ref src='/page/66/Text/17'></content-ref><content-ref src='/page/66/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/66/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.72021484375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.72021484375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.72021484375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.478515625,
              61.0048828125
            ],
            [
              526.236328125,
              61.0048828125
            ],
            [
              526.236328125,
              69.99609375
            ],
            [
              515.478515625,
              69.99609375
            ]
          ],
          "bbox": [
            515.478515625,
            61.0048828125,
            526.236328125,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The countdown that got n=1 returns.</p>",
          "polygon": [
            [
              171.6767578125,
              88.365234375
            ],
            [
              334.0375061035156,
              88.365234375
            ],
            [
              334.0375061035156,
              98.79791259765625
            ],
            [
              171.6767578125,
              98.79791259765625
            ]
          ],
          "bbox": [
            171.6767578125,
            88.365234375,
            334.0375061035156,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The countdown that got n=2 returns.</p>",
          "polygon": [
            [
              151.8046875,
              105.8287353515625
            ],
            [
              312.275390625,
              105.8287353515625
            ],
            [
              312.275390625,
              115.94091796875
            ],
            [
              151.8046875,
              115.94091796875
            ]
          ],
          "bbox": [
            151.8046875,
            105.8287353515625,
            312.275390625,
            115.94091796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The countdown that got n=3 returns.</p>",
          "polygon": [
            [
              128.42138671875,
              130.6142578125
            ],
            [
              287.2125244140625,
              130.6142578125
            ],
            [
              287.2125244140625,
              141.10894775390625
            ],
            [
              128.42138671875,
              141.10894775390625
            ]
          ],
          "bbox": [
            128.42138671875,
            130.6142578125,
            287.2125244140625,
            141.10894775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And then you're back in __main__. So, the total output looks like this:</p>",
          "polygon": [
            [
              127.599609375,
              151.4970703125
            ],
            [
              436.2890625,
              151.4970703125
            ],
            [
              436.2890625,
              161.803955078125
            ],
            [
              127.599609375,
              161.803955078125
            ]
          ],
          "bbox": [
            127.599609375,
            151.4970703125,
            436.2890625,
            161.803955078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Code/5",
          "block_type": "Code",
          "html": "<pre>3\n2\n1\nBlastoff!</pre>",
          "polygon": [
            [
              127.67431640625,
              168.414794921875
            ],
            [
              176.67333984375,
              168.414794921875
            ],
            [
              176.67333984375,
              215.40234375
            ],
            [
              127.67431640625,
              215.40234375
            ]
          ],
          "bbox": [
            127.67431640625,
            168.414794921875,
            176.67333984375,
            215.40234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A function that calls itself is <b>recursive</b>; the process is called <b>recursion</b>.</p>",
          "polygon": [
            [
              128.3466796875,
              221.396484375
            ],
            [
              435.7877197265625,
              221.396484375
            ],
            [
              435.7877197265625,
              231.83306884765625
            ],
            [
              128.3466796875,
              231.83306884765625
            ]
          ],
          "bbox": [
            128.3466796875,
            221.396484375,
            435.7877197265625,
            231.83306884765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As another example, we can write a function that prints a string n times.</p>",
          "polygon": [
            [
              128.3466796875,
              242.279296875
            ],
            [
              446.7758483886719,
              242.279296875
            ],
            [
              446.7758483886719,
              252.52703857421875
            ],
            [
              128.3466796875,
              252.52703857421875
            ]
          ],
          "bbox": [
            128.3466796875,
            242.279296875,
            446.7758483886719,
            252.52703857421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Code/8",
          "block_type": "Code",
          "html": "<pre>def print_n(s, n):\n    if n &lt;= 0:\n        return\n    print s\n    print_n(s, n-1)</pre>",
          "polygon": [
            [
              129.60003662109375,
              259.13787841796875
            ],
            [
              232.189453125,
              259.13787841796875
            ],
            [
              232.189453125,
              317.87847900390625
            ],
            [
              129.60003662109375,
              317.87847900390625
            ]
          ],
          "bbox": [
            129.60003662109375,
            259.13787841796875,
            232.189453125,
            317.87847900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If n &lt;= 0 the return statement exits the function. The flow of execution immediately returns to the caller, and the remaining lines of the function are not executed.</p>",
          "polygon": [
            [
              129.5419921875,
              324.45703125
            ],
            [
              525.6012573242188,
              324.45703125
            ],
            [
              525.6012573242188,
              346.9450378417969
            ],
            [
              129.5419921875,
              346.9450378417969
            ]
          ],
          "bbox": [
            129.5419921875,
            324.45703125,
            525.6012573242188,
            346.9450378417969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The rest of the function is similar to countdown: if n is greater than 0, it displays s and then calls itself to display s <i>n</i> − 1 additional times. So the number of lines of output is 1 + (n - 1), which adds up to n.</p>",
          "polygon": [
            [
              128.6455078125,
              357.52789306640625
            ],
            [
              526.53515625,
              357.52789306640625
            ],
            [
              526.53515625,
              392.0280456542969
            ],
            [
              128.6455078125,
              392.0280456542969
            ]
          ],
          "bbox": [
            128.6455078125,
            357.52789306640625,
            526.53515625,
            392.0280456542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For simple examples like this, it is probably easier to use a for loop. But we will see examples later that are hard to write with a for loop and easy to write with recursion, so it is good to start early.</p>",
          "polygon": [
            [
              128.794921875,
              402.61090087890625
            ],
            [
              525.638671875,
              402.61090087890625
            ],
            [
              525.638671875,
              437.1110534667969
            ],
            [
              128.794921875,
              437.1110534667969
            ]
          ],
          "bbox": [
            128.794921875,
            402.61090087890625,
            525.638671875,
            437.1110534667969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/65/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/66/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-66-0\"></span><b>5.9 Stack diagrams for recursive functions</b></h4>",
          "polygon": [
            [
              128.12255859375,
              468.1249084472656
            ],
            [
              413.6979064941406,
              468.1249084472656
            ],
            [
              413.6979064941406,
              482.47113037109375
            ],
            [
              128.12255859375,
              482.47113037109375
            ]
          ],
          "bbox": [
            128.12255859375,
            468.1249084472656,
            413.6979064941406,
            482.47113037109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Section <a href=\"#page-46-0\">3.10,</a> we used a stack diagram to represent the state of a program during a function call. The same kind of diagram can help interpret a recursive function.</p>",
          "polygon": [
            [
              129.392578125,
              495.38671875
            ],
            [
              525.638671875,
              495.38671875
            ],
            [
              525.638671875,
              517.7530517578125
            ],
            [
              129.392578125,
              517.7530517578125
            ]
          ],
          "bbox": [
            129.392578125,
            495.38671875,
            525.638671875,
            517.7530517578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Every time a function gets called, Python creates a new function frame, which contains the function's local variables and parameters. For a recursive function, there might be more than one frame on the stack at the same time.</p>",
          "polygon": [
            [
              129.09375,
              527.87109375
            ],
            [
              525.9375,
              527.87109375
            ],
            [
              525.9375,
              562.8360595703125
            ],
            [
              129.09375,
              562.8360595703125
            ]
          ],
          "bbox": [
            129.09375,
            527.87109375,
            525.9375,
            562.8360595703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-67-2\">5.1</a> shows a stack diagram for countdown called with n = 3.</p>",
          "polygon": [
            [
              128.12255859375,
              573.1171875
            ],
            [
              422.841796875,
              573.1171875
            ],
            [
              422.841796875,
              583.5310668945312
            ],
            [
              128.12255859375,
              583.5310668945312
            ]
          ],
          "bbox": [
            128.12255859375,
            573.1171875,
            422.841796875,
            583.5310668945312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As usual, the top of the stack is the frame for __main__. It is empty because we did not create any variables in __main__ or pass any arguments to it.</p>",
          "polygon": [
            [
              127.8984375,
              594.1129150390625
            ],
            [
              525.59716796875,
              594.1129150390625
            ],
            [
              525.59716796875,
              616.4200744628906
            ],
            [
              127.8984375,
              616.4200744628906
            ]
          ],
          "bbox": [
            127.8984375,
            594.1129150390625,
            525.59716796875,
            616.4200744628906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The four countdown frames have different values for the parameter n. The bottom of the stack, where n=0, is called the <b>base case</b>. It does not make a recursive call, so there are no more frames.</p>",
          "polygon": [
            [
              128.6455078125,
              627.0019226074219
            ],
            [
              525.9375,
              627.0019226074219
            ],
            [
              525.9375,
              661.5030822753906
            ],
            [
              128.6455078125,
              661.5030822753906
            ]
          ],
          "bbox": [
            128.6455078125,
            627.0019226074219,
            525.9375,
            661.5030822753906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/66/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 5.1.</b> <i>Draw a stack diagram for</i> print_n <i>called with</i> s = 'Hello' <i>and</i> n=2<i>.</i> <b>Exercise 5.2.</b> <i>Write a function called</i> do_n <i>that takes a function object and a number,</i> n<i>, as argu</i><i>ments, and that calls the given function</i> n <i>times.</i></p>",
          "polygon": [
            [
              128.3466796875,
              663.5617828369141
            ],
            [
              525.5953979492188,
              663.5617828369141
            ],
            [
              525.5953979492188,
              697.9365234375
            ],
            [
              128.3466796875,
              697.9365234375
            ]
          ],
          "bbox": [
            128.3466796875,
            663.5617828369141,
            525.5953979492188,
            697.9365234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11",
        "4": "/page/66/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/67/Page/162",
      "block_type": "Page",
      "html": "<content-ref src='/page/67/PageHeader/0'></content-ref><content-ref src='/page/67/PageHeader/13'></content-ref><content-ref src='/page/67/FigureGroup/159'></content-ref><content-ref src='/page/67/SectionHeader/3'></content-ref><content-ref src='/page/67/Text/4'></content-ref><content-ref src='/page/67/Code/158'></content-ref><content-ref src='/page/67/Text/6'></content-ref><content-ref src='/page/67/Code/7'></content-ref><content-ref src='/page/67/Text/8'></content-ref><content-ref src='/page/67/SectionHeader/9'></content-ref><content-ref src='/page/67/Text/10'></content-ref><content-ref src='/page/67/Text/11'></content-ref><content-ref src='/page/67/Code/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/67/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.4034423828125,
              60.85986328125
            ],
            [
              482.4034423828125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.4034423828125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/67/PageHeader/13",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              61.05322265625
            ],
            [
              95.625,
              61.05322265625
            ],
            [
              95.625,
              70.14111328125
            ],
            [
              85.3154296875,
              70.14111328125
            ]
          ],
          "bbox": [
            85.3154296875,
            61.05322265625,
            95.625,
            70.14111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/67/FigureGroup/159",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/67/Figure/1'></content-ref><content-ref src='/page/67/Caption/2'></content-ref>",
          "polygon": [
            [
              227.07000732421875,
              84.5947265625
            ],
            [
              345.744140625,
              84.5947265625
            ],
            [
              345.744140625,
              230.7529296875
            ],
            [
              227.07000732421875,
              230.7529296875
            ]
          ],
          "bbox": [
            227.07000732421875,
            84.5947265625,
            345.744140625,
            230.7529296875
          ],
          "children": [
            {
              "id": "/page/67/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  228.7529296875,
                  84.5947265625
                ],
                [
                  345.744140625,
                  84.5947265625
                ],
                [
                  345.744140625,
                  201.8671875
                ],
                [
                  228.7529296875,
                  201.8671875
                ]
              ],
              "bbox": [
                228.7529296875,
                84.5947265625,
                345.744140625,
                201.8671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/66/SectionHeader/12"
              },
              "images": {
                "/page/67/Figure/1": "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"
              }
            },
            {
              "id": "/page/67/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-67-2\"></span>Figure 5.1: Stack diagram.</p>",
              "polygon": [
                [
                  227.07000732421875,
                  220.790283203125
                ],
                [
                  341.7295837402344,
                  220.790283203125
                ],
                [
                  341.7295837402344,
                  230.7529296875
                ],
                [
                  227.07000732421875,
                  230.7529296875
                ]
              ],
              "bbox": [
                227.07000732421875,
                220.790283203125,
                341.7295837402344,
                230.7529296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/66/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/66/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/67/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-67-0\"></span><b>5.10 Infinite recursion</b></h4>",
          "polygon": [
            [
              85.46484375,
              251.61279296875
            ],
            [
              239.4022216796875,
              251.61279296875
            ],
            [
              239.4022216796875,
              265.958984375
            ],
            [
              85.46484375,
              265.958984375
            ]
          ],
          "bbox": [
            85.46484375,
            251.61279296875,
            239.4022216796875,
            265.958984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/67/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If a recursion never reaches a base case, it goes on making recursive calls forever, and the program never terminates. This is known as <b>infinite recursion</b>, and it is generally not a good idea. Here is a minimal program with an infinite recursion:</p>",
          "polygon": [
            [
              85.46484375,
              279.59765625
            ],
            [
              482.90625,
              279.59765625
            ],
            [
              482.90625,
              314.305908203125
            ],
            [
              85.46484375,
              314.305908203125
            ]
          ],
          "bbox": [
            85.46484375,
            279.59765625,
            482.90625,
            314.305908203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/67/Code/158",
          "block_type": "Code",
          "html": "<pre>def recurse():\n    recurse()</pre>",
          "polygon": [
            [
              86.4000244140625,
              321.53875732421875
            ],
            [
              159.62513732910156,
              321.53875732421875
            ],
            [
              159.62513732910156,
              343.6953430175781
            ],
            [
              86.4000244140625,
              343.6953430175781
            ]
          ],
          "bbox": [
            86.4000244140625,
            321.53875732421875,
            159.62513732910156,
            343.6953430175781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/67/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In most programming environments, a program with infinite recursion does not really run forever. Python reports an error message when the maximum recursion depth is reached:</p>",
          "polygon": [
            [
              85.6142578125,
              351.2273254394531
            ],
            [
              482.4034423828125,
              351.2273254394531
            ],
            [
              482.4034423828125,
              373.3849182128906
            ],
            [
              85.6142578125,
              373.3849182128906
            ]
          ],
          "bbox": [
            85.6142578125,
            351.2273254394531,
            482.4034423828125,
            373.3849182128906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/67/Code/7",
          "block_type": "Code",
          "html": "<pre>File \"&lt;stdin&gt;\", line 2, in recurse\n  File \"&lt;stdin&gt;\", line 2, in recurse\n  File \"&lt;stdin&gt;\", line 2, in recurse\n                  .\n                  .\n                  .\n  File \"&lt;stdin&gt;\", line 2, in recurse\nRuntimeError: Maximum recursion depth exceeded</pre>",
          "polygon": [
            [
              86.4000244140625,
              380.6177673339844
            ],
            [
              327.01666259765625,
              380.6177673339844
            ],
            [
              327.01666259765625,
              475.94036865234375
            ],
            [
              86.4000244140625,
              475.94036865234375
            ]
          ],
          "bbox": [
            86.4000244140625,
            380.6177673339844,
            327.01666259765625,
            475.94036865234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/67/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This traceback is a little bigger than the one we saw in the previous chapter. When the error occurs, there are 1000 recurse frames on the stack!</p>",
          "polygon": [
            [
              85.46484375,
              483.01171875
            ],
            [
              482.40350341796875,
              483.01171875
            ],
            [
              482.40350341796875,
              505.6289367675781
            ],
            [
              85.46484375,
              505.6289367675781
            ]
          ],
          "bbox": [
            85.46484375,
            483.01171875,
            482.40350341796875,
            505.6289367675781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/67/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-67-1\"></span><b>5.11 Keyboard input</b></h4>",
          "polygon": [
            [
              85.53955078125,
              538.5088043212891
            ],
            [
              229.8620147705078,
              538.5088043212891
            ],
            [
              229.8620147705078,
              552.8549957275391
            ],
            [
              85.53955078125,
              552.8549957275391
            ]
          ],
          "bbox": [
            85.53955078125,
            538.5088043212891,
            229.8620147705078,
            552.8549957275391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/67/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The programs we have written so far are a bit rude in the sense that they accept no input from the user. They just do the same thing every time.</p>",
          "polygon": [
            [
              85.46484375,
              566.15625
            ],
            [
              482.4033508300781,
              566.15625
            ],
            [
              482.4033508300781,
              589.0079498291016
            ],
            [
              85.46484375,
              589.0079498291016
            ]
          ],
          "bbox": [
            85.46484375,
            566.15625,
            482.4033508300781,
            589.0079498291016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/67/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python 2 provides a built-in function called raw_input that gets input from the keyboard. In Python 3, it is called input. When this function is called, the program stops and waits for the user to type something. When the user presses Return or Enter, the program resumes and raw_input returns what the user typed as a string.</p>",
          "polygon": [
            [
              85.6142578125,
              600.1875
            ],
            [
              482.4004821777344,
              600.1875
            ],
            [
              482.4004821777344,
              646.9069519042969
            ],
            [
              85.6142578125,
              646.9069519042969
            ]
          ],
          "bbox": [
            85.6142578125,
            600.1875,
            482.4004821777344,
            646.9069519042969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/67/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; text = raw_input()\nWhat are you waiting for?\n&gt;&gt;&gt; print text\nWhat are you waiting for?</pre>",
          "polygon": [
            [
              85.98779296875,
              654.1398010253906
            ],
            [
              222.029296875,
              654.1398010253906
            ],
            [
              222.029296875,
              700.6853942871094
            ],
            [
              85.98779296875,
              700.6853942871094
            ]
          ],
          "bbox": [
            85.98779296875,
            654.1398010253906,
            222.029296875,
            700.6853942871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11",
        "4": "/page/67/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/68/Page/163",
      "block_type": "Page",
      "html": "<content-ref src='/page/68/PageHeader/0'></content-ref><content-ref src='/page/68/PageHeader/17'></content-ref><content-ref src='/page/68/Text/1'></content-ref><content-ref src='/page/68/Code/2'></content-ref><content-ref src='/page/68/Text/3'></content-ref><content-ref src='/page/68/Text/4'></content-ref><content-ref src='/page/68/Code/5'></content-ref><content-ref src='/page/68/Text/6'></content-ref><content-ref src='/page/68/Code/7'></content-ref><content-ref src='/page/68/Text/8'></content-ref><content-ref src='/page/68/SectionHeader/9'></content-ref><content-ref src='/page/68/Text/10'></content-ref><content-ref src='/page/68/ListGroup/162'></content-ref><content-ref src='/page/68/Text/13'></content-ref><content-ref src='/page/68/Code/14'></content-ref><content-ref src='/page/68/Text/15'></content-ref><content-ref src='/page/68/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/68/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.6455078125,
              60.95654296875
            ],
            [
              525.6033935546875,
              60.95654296875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.6455078125,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            60.95654296875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              60.56982421875
            ],
            [
              525.33984375,
              60.56982421875
            ],
            [
              525.33984375,
              69.94775390625
            ],
            [
              514.58203125,
              69.94775390625
            ]
          ],
          "bbox": [
            514.58203125,
            60.56982421875,
            525.33984375,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Before getting input from the user, it is a good idea to print a prompt telling the user what to input. raw_input can take a prompt as an argument:</p>",
          "polygon": [
            [
              128.3466796875,
              88.55859375
            ],
            [
              525.9375,
              88.55859375
            ],
            [
              525.9375,
              110.99188232421875
            ],
            [
              128.3466796875,
              110.99188232421875
            ]
          ],
          "bbox": [
            128.3466796875,
            88.55859375,
            525.9375,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Code/2",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; name = raw_input('What...is your name?\\n')\nWhat...is your name?\nArthur, King of the Britons!\n&gt;&gt;&gt; print name\nArthur, King of the Britons!</pre>",
          "polygon": [
            [
              129.5419921875,
              117.10369873046875
            ],
            [
              370.1404113769531,
              117.10369873046875
            ],
            [
              370.1404113769531,
              175.84326171875
            ],
            [
              129.5419921875,
              175.84326171875
            ]
          ],
          "bbox": [
            129.5419921875,
            117.10369873046875,
            370.1404113769531,
            175.84326171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The sequence \\n at the end of the prompt represents a <b>newline</b>, which is a special character that causes a line break. That's why the user's input appears below the prompt.</p>",
          "polygon": [
            [
              129.2431640625,
              181.8544921875
            ],
            [
              525.5984497070312,
              181.8544921875
            ],
            [
              525.5984497070312,
              204.41082763671875
            ],
            [
              129.2431640625,
              204.41082763671875
            ]
          ],
          "bbox": [
            129.2431640625,
            181.8544921875,
            525.5984497070312,
            204.41082763671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you expect the user to type an integer, you can try to convert the return value to int:</p>",
          "polygon": [
            [
              128.6455078125,
              214.435546875
            ],
            [
              510.2536926269531,
              214.435546875
            ],
            [
              510.2536926269531,
              224.6068115234375
            ],
            [
              128.6455078125,
              224.6068115234375
            ]
          ],
          "bbox": [
            128.6455078125,
            214.435546875,
            510.2536926269531,
            224.6068115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; prompt = 'What...is the airspeed velocity of an unladen swallow?\\n'\n&gt;&gt;&gt; speed = raw_input(prompt)\nWhat...is the airspeed velocity of an unladen swallow?\n17\n&gt;&gt;&gt; int(speed)\n17</pre>",
          "polygon": [
            [
              129.60000610351562,
              230.7176513671875
            ],
            [
              500.8683776855469,
              230.7176513671875
            ],
            [
              500.8683776855469,
              304.34765625
            ],
            [
              129.60000610351562,
              304.34765625
            ]
          ],
          "bbox": [
            129.60000610351562,
            230.7176513671875,
            500.8683776855469,
            304.34765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if the user types something other than a string of digits, you get an error:</p>",
          "polygon": [
            [
              128.49609375,
              308.06317138671875
            ],
            [
              467.0034484863281,
              308.06317138671875
            ],
            [
              467.0034484863281,
              318.0257568359375
            ],
            [
              128.49609375,
              318.0257568359375
            ]
          ],
          "bbox": [
            128.49609375,
            308.06317138671875,
            467.0034484863281,
            318.0257568359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; speed = raw_input(prompt)\nWhat...is the airspeed velocity of an unladen swallow?\nWhat do you mean, an African or a European swallow?\n&gt;&gt;&gt; int(speed)\nValueError: invalid literal for int() with base 10</pre>",
          "polygon": [
            [
              129.46728515625,
              324.1365966796875
            ],
            [
              412.083984375,
              324.1365966796875
            ],
            [
              412.083984375,
              386.71875
            ],
            [
              129.46728515625,
              386.71875
            ]
          ],
          "bbox": [
            129.46728515625,
            324.1365966796875,
            412.083984375,
            386.71875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We will see how to handle this kind of error later.</p>",
          "polygon": [
            [
              128.9443359375,
              389.28717041015625
            ],
            [
              346.640625,
              389.28717041015625
            ],
            [
              346.640625,
              399.249755859375
            ],
            [
              128.9443359375,
              399.249755859375
            ]
          ],
          "bbox": [
            128.9443359375,
            389.28717041015625,
            346.640625,
            399.249755859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/67/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-68-0\"></span><b>5.12 Debugging</b></h4>",
          "polygon": [
            [
              127.82373046875,
              428.7655944824219
            ],
            [
              243.17886352539062,
              428.7655944824219
            ],
            [
              243.17886352539062,
              443.1796875
            ],
            [
              127.82373046875,
              443.1796875
            ]
          ],
          "bbox": [
            127.82373046875,
            428.7655944824219,
            243.17886352539062,
            443.1796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The traceback Python displays when an error occurs contains a lot of information, but it can be overwhelming, especially when there are many frames on the stack. The most useful parts are usually:</p>",
          "polygon": [
            [
              128.49609375,
              455.5381774902344
            ],
            [
              525.9375,
              455.5381774902344
            ],
            [
              525.9375,
              489.8897705078125
            ],
            [
              128.49609375,
              489.8897705078125
            ]
          ],
          "bbox": [
            128.49609375,
            455.5381774902344,
            525.9375,
            489.8897705078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/ListGroup/162",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/68/ListItem/11'></content-ref><content-ref src='/page/68/ListItem/12'></content-ref></ul></p>",
          "polygon": [
            [
              141.943359375,
              503.5078125
            ],
            [
              287.3778076171875,
              503.5078125
            ],
            [
              287.3778076171875,
              534.3957824707031
            ],
            [
              141.943359375,
              534.3957824707031
            ]
          ],
          "bbox": [
            141.943359375,
            503.5078125,
            287.3778076171875,
            534.3957824707031
          ],
          "children": [
            {
              "id": "/page/68/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> What kind of error it was, and</li>",
              "polygon": [
                [
                  142.6904296875,
                  503.5078125
                ],
                [
                  287.3778076171875,
                  503.5078125
                ],
                [
                  287.3778076171875,
                  514.1327819824219
                ],
                [
                  142.6904296875,
                  514.1327819824219
                ]
              ],
              "bbox": [
                142.6904296875,
                503.5078125,
                287.3778076171875,
                514.1327819824219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/68/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/68/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Where it occurred.</li>",
              "polygon": [
                [
                  141.943359375,
                  523.6171875
                ],
                [
                  236.671875,
                  523.6171875
                ],
                [
                  236.671875,
                  534.3957824707031
                ],
                [
                  141.943359375,
                  534.3957824707031
                ]
              ],
              "bbox": [
                141.943359375,
                523.6171875,
                236.671875,
                534.3957824707031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/68/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/68/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Syntax errors are usually easy to find, but there are a few gotchas. Whitespace errors can be tricky because spaces and tabs are invisible and we are used to ignoring them.</p>",
          "polygon": [
            [
              127.8984375,
              548.3671875
            ],
            [
              525.6034545898438,
              548.3671875
            ],
            [
              525.6034545898438,
              570.8327789306641
            ],
            [
              127.8984375,
              570.8327789306641
            ]
          ],
          "bbox": [
            127.8984375,
            548.3671875,
            525.6034545898438,
            570.8327789306641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; x = 5\n&gt;&gt;&gt; y = 6\n  File \"&lt;stdin&gt;\", line 1\n    y = 6\n    ^</pre>",
          "polygon": [
            [
              129.60000610351562,
              576.9446258544922
            ],
            [
              258.9345703125,
              576.9446258544922
            ],
            [
              258.9345703125,
              635.6842346191406
            ],
            [
              129.60000610351562,
              635.6842346191406
            ]
          ],
          "bbox": [
            129.60000610351562,
            576.9446258544922,
            258.9345703125,
            635.6842346191406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">IndentationError: unexpected indent</p>",
          "polygon": [
            [
              128.57080078125,
              637.9166412353516
            ],
            [
              312.6726989746094,
              637.9166412353516
            ],
            [
              312.6726989746094,
              647.8792419433594
            ],
            [
              128.57080078125,
              647.8792419433594
            ]
          ],
          "bbox": [
            128.57080078125,
            637.9166412353516,
            312.6726989746094,
            647.8792419433594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/68/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this example, the problem is that the second line is indented by one space. But the error message points to y, which is misleading. In general, error messages indicate where the problem was discovered, but the actual error might be earlier in the code, sometimes on a previous line.</p>",
          "polygon": [
            [
              128.6455078125,
              654.2891998291016
            ],
            [
              525.603515625,
              654.2891998291016
            ],
            [
              525.603515625,
              700.8348083496094
            ],
            [
              128.6455078125,
              700.8348083496094
            ]
          ],
          "bbox": [
            128.6455078125,
            654.2891998291016,
            525.603515625,
            700.8348083496094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11",
        "4": "/page/68/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/69/Page/212",
      "block_type": "Page",
      "html": "<content-ref src='/page/69/PageHeader/0'></content-ref><content-ref src='/page/69/PageHeader/19'></content-ref><content-ref src='/page/69/Text/1'></content-ref><content-ref src='/page/69/TextInlineMath/2'></content-ref><content-ref src='/page/69/Code/3'></content-ref><content-ref src='/page/69/Text/4'></content-ref><content-ref src='/page/69/Code/5'></content-ref><content-ref src='/page/69/Text/6'></content-ref><content-ref src='/page/69/Text/7'></content-ref><content-ref src='/page/69/Text/8'></content-ref><content-ref src='/page/69/SectionHeader/9'></content-ref><content-ref src='/page/69/ListGroup/202'></content-ref><content-ref src='/page/69/Text/17'></content-ref><content-ref src='/page/69/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/69/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.607421875,
              60.66650390625
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              61.05322265625
            ],
            [
              97.64208984375,
              61.05322265625
            ],
            [
              97.64208984375,
              70.14111328125
            ],
            [
              85.68896484375,
              70.14111328125
            ]
          ],
          "bbox": [
            85.68896484375,
            61.05322265625,
            97.64208984375,
            70.14111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The same is true of runtime errors.</p>",
          "polygon": [
            [
              86.2119140625,
              88.365234375
            ],
            [
              238.6142578125,
              88.365234375
            ],
            [
              238.6142578125,
              98.79791259765625
            ],
            [
              86.2119140625,
              98.79791259765625
            ]
          ],
          "bbox": [
            86.2119140625,
            88.365234375,
            238.6142578125,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/TextInlineMath/2",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">Suppose you are trying to compute a signal-to-noise ratio in decibels. The formula is <i>SNRdb</i> = 10 log10(<i>Psignal</i>/<i>Pnoise</i>). In Python, you might write something like this:</p>",
          "polygon": [
            [
              85.3154296875,
              108.861328125
            ],
            [
              484.1015625,
              108.861328125
            ],
            [
              484.1015625,
              134.007568359375
            ],
            [
              85.3154296875,
              134.007568359375
            ]
          ],
          "bbox": [
            85.3154296875,
            108.861328125,
            484.1015625,
            134.007568359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Code/3",
          "block_type": "Code",
          "html": "<pre>import math\nsignal_power = 9\nnoise_power = 10\nratio = signal_power / noise_power\ndecibels = 10 * math.log10(ratio)\nprint decibels</pre>",
          "polygon": [
            [
              85.763671875,
              137.5751953125
            ],
            [
              265.359375,
              137.5751953125
            ],
            [
              265.359375,
              209.98828125
            ],
            [
              85.763671875,
              209.98828125
            ]
          ],
          "bbox": [
            85.763671875,
            137.5751953125,
            265.359375,
            209.98828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But when you run it in Python 2, you get an error message.</p>",
          "polygon": [
            [
              85.24072265625,
              215.40234375
            ],
            [
              346.341796875,
              215.40234375
            ],
            [
              346.341796875,
              225.532958984375
            ],
            [
              85.24072265625,
              225.532958984375
            ]
          ],
          "bbox": [
            85.24072265625,
            215.40234375,
            346.341796875,
            225.532958984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Code/5",
          "block_type": "Code",
          "html": "<pre>Traceback (most recent call last):\n  File \"snr.py\", line 5, in ?\n    decibels = 10 * math.log10(ratio)\nValueError: math domain error</pre>",
          "polygon": [
            [
              85.3154296875,
              231.9527587890625
            ],
            [
              279.9280090332031,
              231.9527587890625
            ],
            [
              279.9280090332031,
              278.4984130859375
            ],
            [
              85.3154296875,
              278.4984130859375
            ]
          ],
          "bbox": [
            85.3154296875,
            231.9527587890625,
            279.9280090332031,
            278.4984130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The error message indicates line 5, but there is nothing wrong with that line. To find the real error, it might be useful to print the value of ratio, which turns out to be 0. The problem is in line 4, because dividing two integers does floor division. The solution is to represent signal power and noise power with floating-point values.</p>",
          "polygon": [
            [
              85.9130859375,
              285.01171875
            ],
            [
              482.90625,
              285.01171875
            ],
            [
              482.90625,
              331.76397705078125
            ],
            [
              85.9130859375,
              331.76397705078125
            ]
          ],
          "bbox": [
            85.9130859375,
            285.01171875,
            482.90625,
            331.76397705078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In general, error messages tell you where the problem was discovered, but that is often not where it was caused.</p>",
          "polygon": [
            [
              85.763671875,
              341.666015625
            ],
            [
              482.607421875,
              341.666015625
            ],
            [
              482.607421875,
              364.46197509765625
            ],
            [
              85.763671875,
              364.46197509765625
            ]
          ],
          "bbox": [
            85.763671875,
            341.666015625,
            482.607421875,
            364.46197509765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Python 3, this example does not cause an error; the division operator performs floatingpoint division even with integer operands.</p>",
          "polygon": [
            [
              85.9130859375,
              374.923828125
            ],
            [
              482.40338134765625,
              374.923828125
            ],
            [
              482.40338134765625,
              397.15997314453125
            ],
            [
              85.9130859375,
              397.15997314453125
            ]
          ],
          "bbox": [
            85.9130859375,
            374.923828125,
            482.40338134765625,
            397.15997314453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/68/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-69-0\"></span><b>5.13 Glossary</b></h4>",
          "polygon": [
            [
              86.0625,
              427.601806640625
            ],
            [
              184.0259246826172,
              427.601806640625
            ],
            [
              184.0259246826172,
              441.9480285644531
            ],
            [
              86.0625,
              441.9480285644531
            ]
          ],
          "bbox": [
            86.0625,
            427.601806640625,
            184.0259246826172,
            441.9480285644531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/ListGroup/202",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/69/ListItem/10'></content-ref><content-ref src='/page/69/ListItem/11'></content-ref><content-ref src='/page/69/ListItem/12'></content-ref><content-ref src='/page/69/ListItem/13'></content-ref><content-ref src='/page/69/ListItem/14'></content-ref><content-ref src='/page/69/ListItem/15'></content-ref><content-ref src='/page/69/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              85.9130859375,
              451.23980712890625
            ],
            [
              482.403564453125,
              451.23980712890625
            ],
            [
              482.403564453125,
              659.2560119628906
            ],
            [
              85.9130859375,
              659.2560119628906
            ]
          ],
          "bbox": [
            85.9130859375,
            451.23980712890625,
            482.403564453125,
            659.2560119628906
          ],
          "children": [
            {
              "id": "/page/69/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>modulus operator:</b> An operator, denoted with a percent sign (%), that works on integers and yields the remainder when one number is divided by another.</li>",
              "polygon": [
                [
                  86.4000244140625,
                  451.23980712890625
                ],
                [
                  482.3994140625,
                  451.23980712890625
                ],
                [
                  482.3994140625,
                  473.54595947265625
                ],
                [
                  86.4000244140625,
                  473.54595947265625
                ]
              ],
              "bbox": [
                86.4000244140625,
                451.23980712890625,
                482.3994140625,
                473.54595947265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/69/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/69/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>boolean expression:</b> An expression whose value is either True or False.</li>",
              "polygon": [
                [
                  85.9130859375,
                  483.78515625
                ],
                [
                  406.40625,
                  483.78515625
                ],
                [
                  406.40625,
                  494.3359680175781
                ],
                [
                  85.9130859375,
                  494.3359680175781
                ]
              ],
              "bbox": [
                85.9130859375,
                483.78515625,
                406.40625,
                494.3359680175781
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/69/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/69/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>relational operator:</b> One of the operators that compares its operands: ==, !=, &gt;, &lt;, &gt;=, and &lt;=.</li>",
              "polygon": [
                [
                  86.40005493164062,
                  504.66796875
                ],
                [
                  482.39703369140625,
                  504.66796875
                ],
                [
                  482.39703369140625,
                  527.3199768066406
                ],
                [
                  86.40005493164062,
                  527.3199768066406
                ]
              ],
              "bbox": [
                86.40005493164062,
                504.66796875,
                482.39703369140625,
                527.3199768066406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/69/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/69/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>logical operator:</b> One of the operators that combines boolean expressions: and, or, and not.</li>",
              "polygon": [
                [
                  86.0625,
                  537.9978332519531
                ],
                [
                  482.40264892578125,
                  537.9978332519531
                ],
                [
                  482.40264892578125,
                  560.3039855957031
                ],
                [
                  86.0625,
                  560.3039855957031
                ]
              ],
              "bbox": [
                86.0625,
                537.9978332519531,
                482.40264892578125,
                560.3039855957031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/69/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/69/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>conditional statement:</b> A statement that controls the flow of execution depending on some condition.</li>",
              "polygon": [
                [
                  86.361328125,
                  571.0342864990234
                ],
                [
                  482.4032287597656,
                  571.0342864990234
                ],
                [
                  482.4032287597656,
                  593.2879943847656
                ],
                [
                  86.361328125,
                  593.2879943847656
                ]
              ],
              "bbox": [
                86.361328125,
                571.0342864990234,
                482.4032287597656,
                593.2879943847656
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/69/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/69/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>condition:</b> The boolean expression in a conditional statement that determines which branch is executed.</li>",
              "polygon": [
                [
                  86.40008544921875,
                  603.66796875
                ],
                [
                  482.403564453125,
                  603.66796875
                ],
                [
                  482.403564453125,
                  626.2720031738281
                ],
                [
                  86.40008544921875,
                  626.2720031738281
                ]
              ],
              "bbox": [
                86.40008544921875,
                603.66796875,
                482.403564453125,
                626.2720031738281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/69/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/69/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>compound statement:</b> A statement that consists of a header and a body. The header ends with a colon (:). The body is indented relative to the header.</li>",
              "polygon": [
                [
                  86.0625,
                  637.0023040771484
                ],
                [
                  482.40289306640625,
                  637.0023040771484
                ],
                [
                  482.40289306640625,
                  659.2560119628906
                ],
                [
                  86.0625,
                  659.2560119628906
                ]
              ],
              "bbox": [
                86.0625,
                637.0023040771484,
                482.40289306640625,
                659.2560119628906
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/69/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/69/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>branch:</b> One of the alternative sequences of statements in a conditional statement.</p>",
          "polygon": [
            [
              85.6142578125,
              669.9863052368164
            ],
            [
              448.27203369140625,
              669.9863052368164
            ],
            [
              448.27203369140625,
              680.0460205078125
            ],
            [
              85.6142578125,
              680.0460205078125
            ]
          ],
          "bbox": [
            85.6142578125,
            669.9863052368164,
            448.27203369140625,
            680.0460205078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/69/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>chained conditional:</b> A conditional statement with a series of alternative branches.</p>",
          "polygon": [
            [
              85.46484375,
              690.7753067016602
            ],
            [
              452.93377685546875,
              690.7753067016602
            ],
            [
              452.93377685546875,
              700.8350219726562
            ],
            [
              85.46484375,
              700.8350219726562
            ]
          ],
          "bbox": [
            85.46484375,
            690.7753067016602,
            452.93377685546875,
            700.8350219726562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11",
        "4": "/page/69/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/70/Page/210",
      "block_type": "Page",
      "html": "<content-ref src='/page/70/PageHeader/0'></content-ref><content-ref src='/page/70/PageHeader/19'></content-ref><content-ref src='/page/70/ListItem/1'></content-ref><content-ref src='/page/70/Text/2'></content-ref><content-ref src='/page/70/Text/3'></content-ref><content-ref src='/page/70/ListItem/4'></content-ref><content-ref src='/page/70/SectionHeader/5'></content-ref><content-ref src='/page/70/Text/6'></content-ref><content-ref src='/page/70/Equation/7'></content-ref><content-ref src='/page/70/Text/8'></content-ref><content-ref src='/page/70/ListItem/9'></content-ref><content-ref src='/page/70/Equation/10'></content-ref><content-ref src='/page/70/Text/11'></content-ref><content-ref src='/page/70/ListItem/12'></content-ref><content-ref src='/page/70/Text/13'></content-ref><content-ref src='/page/70/Text/14'></content-ref><content-ref src='/page/70/ListGroup/209'></content-ref><content-ref src='/page/70/Text/17'></content-ref><content-ref src='/page/70/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/70/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/70/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.76318359375
            ],
            [
              525.041015625,
              60.76318359375
            ],
            [
              525.041015625,
              69.75439453125
            ],
            [
              514.880859375,
              69.75439453125
            ]
          ],
          "bbox": [
            514.880859375,
            60.76318359375,
            525.041015625,
            69.75439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/70/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>nested conditional:</b> A conditional statement that appears in one of the branches of another conditional statement.</li>",
          "polygon": [
            [
              128.794921875,
              88.7381591796875
            ],
            [
              525.6031494140625,
              88.7381591796875
            ],
            [
              525.6031494140625,
              110.99188232421875
            ],
            [
              128.794921875,
              110.99188232421875
            ]
          ],
          "bbox": [
            128.794921875,
            88.7381591796875,
            525.6031494140625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>recursion:</b> The process of calling the function that is currently executing.</p>",
          "polygon": [
            [
              128.197265625,
              123.2666015625
            ],
            [
              450.6328125,
              123.2666015625
            ],
            [
              450.6328125,
              133.3428955078125
            ],
            [
              128.197265625,
              133.3428955078125
            ]
          ],
          "bbox": [
            128.197265625,
            123.2666015625,
            450.6328125,
            133.3428955078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>base case:</b> A conditional branch in a recursive function that does not make a recursive call.</p>",
          "polygon": [
            [
              128.794921875,
              145.6341552734375
            ],
            [
              525.603271484375,
              145.6341552734375
            ],
            [
              525.603271484375,
              155.69390869140625
            ],
            [
              128.794921875,
              155.69390869140625
            ]
          ],
          "bbox": [
            128.794921875,
            145.6341552734375,
            525.603271484375,
            155.69390869140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/70/ListItem/4",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>infinite recursion:</b> A recursion that doesn't have a base case, or never reaches it. Eventually, an infinite recursion causes a runtime error.</li>",
          "polygon": [
            [
              127.7490234375,
              179.9208984375
            ],
            [
              525.6033935546875,
              179.9208984375
            ],
            [
              525.6033935546875,
              202.43292236328125
            ],
            [
              127.7490234375,
              202.43292236328125
            ]
          ],
          "bbox": [
            127.7490234375,
            179.9208984375,
            525.6033935546875,
            202.43292236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/69/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/70/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-70-0\"></span><b>5.14 Exercises</b></h4>",
          "polygon": [
            [
              129.01904296875,
              235.6197509765625
            ],
            [
              228.80401611328125,
              235.6197509765625
            ],
            [
              228.80401611328125,
              249.9659423828125
            ],
            [
              129.01904296875,
              249.9659423828125
            ]
          ],
          "bbox": [
            129.01904296875,
            235.6197509765625,
            228.80401611328125,
            249.9659423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 5.3.</b> <i>Fermat's Last Theorem says that there are no positive integers a, b, and c such that</i></p>",
          "polygon": [
            [
              129.6000518798828,
              263.93359375
            ],
            [
              519.9609375,
              263.93359375
            ],
            [
              519.9609375,
              273.97174072265625
            ],
            [
              129.6000518798828,
              273.97174072265625
            ]
          ],
          "bbox": [
            129.6000518798828,
            263.93359375,
            519.9609375,
            273.97174072265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Equation/7",
          "block_type": "Equation",
          "html": "<p block-type=\"Equation\"><math display=\"block\">a^n + b^n = c^n</math></p>",
          "polygon": [
            [
              299.126953125,
              294.873046875
            ],
            [
              355.904296875,
              294.873046875
            ],
            [
              355.904296875,
              307.5091857910156
            ],
            [
              299.126953125,
              307.5091857910156
            ]
          ],
          "bbox": [
            299.126953125,
            294.873046875,
            355.904296875,
            307.5091857910156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>for any values of n greater than 2.</i></p>",
          "polygon": [
            [
              127.599609375,
              315.755859375
            ],
            [
              265.270751953125,
              315.755859375
            ],
            [
              265.270751953125,
              325.8002014160156
            ],
            [
              127.599609375,
              325.8002014160156
            ]
          ],
          "bbox": [
            127.599609375,
            315.755859375,
            265.270751953125,
            325.8002014160156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/ListItem/9",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>1. Write a function named</i> check_fermat <i>that takes four parameters—</i>a<i>,</i> b<i>,</i> c <i>and</i> n<i>—and that</i> <i>checks to see if Fermat's theorem holds. If n is greater than 2 and it turns out to be true that</i></li>",
          "polygon": [
            [
              141.1962890625,
              341.859375
            ],
            [
              525.9375,
              341.859375
            ],
            [
              525.9375,
              364.5061950683594
            ],
            [
              141.1962890625,
              364.5061950683594
            ]
          ],
          "bbox": [
            141.1962890625,
            341.859375,
            525.9375,
            364.5061950683594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Equation/10",
          "block_type": "Equation",
          "html": "<p block-type=\"Equation\"><math display=\"block\">a^n + b^n = c^n</math></p>",
          "polygon": [
            [
              312.275390625,
              381.6517333984375
            ],
            [
              368.455078125,
              381.6517333984375
            ],
            [
              368.455078125,
              393.9721984863281
            ],
            [
              312.275390625,
              393.9721984863281
            ]
          ],
          "bbox": [
            312.275390625,
            381.6517333984375,
            368.455078125,
            393.9721984863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>the program should print, \"Holy smokes, Fermat was wrong!\" Otherwise the program should</i> <i>print, \"No, that doesn't work.\"</i></p>",
          "polygon": [
            [
              153.1494140625,
              402.1875
            ],
            [
              525.9375,
              402.1875
            ],
            [
              525.9375,
              424.45819091796875
            ],
            [
              153.1494140625,
              424.45819091796875
            ]
          ],
          "bbox": [
            153.1494140625,
            402.1875,
            525.9375,
            424.45819091796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/ListItem/12",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>2. Write a function that prompts the user to input values for</i> a<i>,</i> b<i>,</i> c <i>and</i> n<i>, converts them to</i> <i>integers, and uses</i> check_fermat <i>to check whether they violate Fermat's theorem.</i></li>",
          "polygon": [
            [
              141.7939453125,
              436.21875
            ],
            [
              525.9375,
              436.21875
            ],
            [
              525.9375,
              459.0263366699219
            ],
            [
              141.7939453125,
              459.0263366699219
            ]
          ],
          "bbox": [
            141.7939453125,
            436.21875,
            525.9375,
            459.0263366699219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 5.4.</b> <i>If you are given three sticks, you may or may not be able to arrange them in a triangle.</i> <i>For example, if one of the sticks is 12 inches long and the other two are one inch long, it is clear that</i> <i>you will not be able to get the short sticks to meet in the middle. For any three lengths, there is a</i> <i>simple test to see if it is possible to form a triangle:</i></p>",
          "polygon": [
            [
              128.794921875,
              466.3266296386719
            ],
            [
              526.236328125,
              466.3266296386719
            ],
            [
              526.236328125,
              512.8722229003906
            ],
            [
              128.794921875,
              512.8722229003906
            ]
          ],
          "bbox": [
            128.794921875,
            466.3266296386719,
            526.236328125,
            512.8722229003906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/14",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>If any of the three lengths is greater than the sum of the other two, then you cannot</i> <i>form a triangle. Otherwise, you can. (If the sum of two lengths equals the third, they</i> <i>form what is called a \"degenerate\" triangle.)</i></p></blockquote>",
          "polygon": [
            [
              153.4482421875,
              529.8046875
            ],
            [
              500.8359375,
              529.8046875
            ],
            [
              500.8359375,
              564.3182220458984
            ],
            [
              153.4482421875,
              564.3182220458984
            ]
          ],
          "bbox": [
            153.4482421875,
            529.8046875,
            500.8359375,
            564.3182220458984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/ListGroup/209",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/70/ListItem/15'></content-ref><content-ref src='/page/70/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              140.150390625,
              580.46484375
            ],
            [
              525.638671875,
              580.46484375
            ],
            [
              525.638671875,
              649.7863922119141
            ],
            [
              140.150390625,
              649.7863922119141
            ]
          ],
          "bbox": [
            140.150390625,
            580.46484375,
            525.638671875,
            649.7863922119141
          ],
          "children": [
            {
              "id": "/page/70/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write a function named</i> is_triangle <i>that takes three integers as arguments, and that prints</i> <i>either \"Yes\" or \"No,\" depending on whether you can or cannot form a triangle from sticks</i> <i>with the given lengths.</i></li>",
              "polygon": [
                [
                  140.150390625,
                  580.46484375
                ],
                [
                  525.638671875,
                  580.46484375
                ],
                [
                  525.638671875,
                  615.2182312011719
                ],
                [
                  140.150390625,
                  615.2182312011719
                ]
              ],
              "bbox": [
                140.150390625,
                580.46484375,
                525.638671875,
                615.2182312011719
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/70/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Write a function that prompts the user to input three stick lengths, converts them to integers,</i> <i>and uses</i> is_triangle <i>to check whether sticks with the given lengths can form a triangle.</i></li>",
              "polygon": [
                [
                  141.943359375,
                  627.6056365966797
                ],
                [
                  525.638671875,
                  627.6056365966797
                ],
                [
                  525.638671875,
                  649.7863922119141
                ],
                [
                  141.943359375,
                  649.7863922119141
                ]
              ],
              "bbox": [
                141.943359375,
                627.6056365966797,
                525.638671875,
                649.7863922119141
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/70/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following exercises use TurtleWorld from Chapter <a href=\"#page-52-0\">4:</a></p>",
          "polygon": [
            [
              128.6455078125,
              665.9296875
            ],
            [
              378.31640625,
              665.9296875
            ],
            [
              378.31640625,
              676.4469528198242
            ],
            [
              128.6455078125,
              676.4469528198242
            ]
          ],
          "bbox": [
            128.6455078125,
            665.9296875,
            378.31640625,
            676.4469528198242
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/70/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 5.5.</b> <i>Read the following function and see if you can figure out what it does. Then run it</i> <i>(see the examples in Chapter </i><i><a href=\"#page-52-0\">4)</a></i><i>.</i></p>",
          "polygon": [
            [
              129.60000610351562,
              678.3046875
            ],
            [
              525.6011962890625,
              678.3046875
            ],
            [
              525.6011962890625,
              700.6622543334961
            ],
            [
              129.60000610351562,
              700.6622543334961
            ]
          ],
          "bbox": [
            129.60000610351562,
            678.3046875,
            525.6011962890625,
            700.6622543334961
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11",
        "4": "/page/70/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/71/Page/162",
      "block_type": "Page",
      "html": "<content-ref src='/page/71/PageHeader/0'></content-ref><content-ref src='/page/71/PageHeader/17'></content-ref><content-ref src='/page/71/FigureGroup/159'></content-ref><content-ref src='/page/71/Code/3'></content-ref><content-ref src='/page/71/Text/4'></content-ref><content-ref src='/page/71/ListGroup/160'></content-ref><content-ref src='/page/71/Text/12'></content-ref><content-ref src='/page/71/ListGroup/161'></content-ref><content-ref src='/page/71/Text/15'></content-ref><content-ref src='/page/71/ListItem/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/71/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.6181640625
            ],
            [
              482.90625,
              60.6181640625
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.6181640625,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/71/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.95654296875
            ],
            [
              96.74560546875,
              60.95654296875
            ],
            [
              96.74560546875,
              70.04443359375
            ],
            [
              85.53955078125,
              70.04443359375
            ]
          ],
          "bbox": [
            85.53955078125,
            60.95654296875,
            96.74560546875,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/71/FigureGroup/159",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/71/Figure/1'></content-ref><content-ref src='/page/71/Caption/2'></content-ref>",
          "polygon": [
            [
              183.181640625,
              85.1748046875
            ],
            [
              388.775390625,
              85.1748046875
            ],
            [
              388.775390625,
              173.1529541015625
            ],
            [
              183.181640625,
              173.1529541015625
            ]
          ],
          "bbox": [
            183.181640625,
            85.1748046875,
            388.775390625,
            173.1529541015625
          ],
          "children": [
            {
              "id": "/page/71/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  183.181640625,
                  85.1748046875
                ],
                [
                  388.775390625,
                  85.1748046875
                ],
                [
                  388.775390625,
                  152.8505859375
                ],
                [
                  183.181640625,
                  152.8505859375
                ]
              ],
              "bbox": [
                183.181640625,
                85.1748046875,
                388.775390625,
                152.8505859375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {
                "/page/71/Figure/1": "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IcA5HpjB5qjpXw4vbXW9MvNT8U3ur22myPPbRXcStIJWXaSZDklehC9iK7+igAqpqenw6tpV5p1xnybqF4XxjIDAg4z9at0UAeYr8MNfWw+xjx3d/ZhbfYFtvsaeT9l27dpjzgyY/wCWnX2rc1bwELnRdBtNK1I6feaFt+x3TW6TDhNh3IcA5HPGOa7KigDz/TPhxfW2tabd6p4qvdWtdOma5ghu4laQTFdpPmHJ29wvYivQKKKACiiigAooooAKr31nFqGn3NlOCYbiJonx/dYYP86sUUAeZQ/DDX7exW0i8d3a28UBsobcWaeT9mwRtaPOGfBPz9elbWpfD+Ofw3oWmabqDWV1obpJZ3TQJL8yqVyyHAOc54xzXZ0UAee2Hw31GPV9PuNV8W3urWVjc/bY4LqFWf7RjGRIckJj+AcZr0KiigCG8tYr6yntJhmKeNo3HsRg/wA684g+GOv2llHaW/jq7SCCE2kFv9jTyRbkEYePOHfBPznnpXptFAHF6h8PopfC2h6Tp2oNZ3GiSRzWd20CSfOoIyyng5JycY5qz4X8Ma54fv5WvPFl1q1lMhZoLuEF1mJGWV85VMDhMYGa6uigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//Z"
              }
            },
            {
              "id": "/page/71/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-71-0\"></span>Figure 5.2: A Koch curve.</p>",
              "polygon": [
                [
                  228.4399871826172,
                  162.615234375
                ],
                [
                  340.6640625,
                  162.615234375
                ],
                [
                  340.6640625,
                  173.1529541015625
                ],
                [
                  228.4399871826172,
                  173.1529541015625
                ]
              ],
              "bbox": [
                228.4399871826172,
                162.615234375,
                340.6640625,
                173.1529541015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/71/Code/3",
          "block_type": "Code",
          "html": "<pre>def draw(t, length, n):\n    if n == 0:\n        return\n    angle = 50\n    fd(t, length*n)\n    lt(t, angle)\n    draw(t, length, n-1)\n    rt(t, 2*angle)\n    draw(t, length, n-1)\n    lt(t, angle)\n    bk(t, length*n)</pre>",
          "polygon": [
            [
              85.46484375,
              195.29296875
            ],
            [
              216.052734375,
              195.29296875
            ],
            [
              216.052734375,
              327.64434814453125
            ],
            [
              85.46484375,
              327.64434814453125
            ]
          ],
          "bbox": [
            85.46484375,
            195.29296875,
            216.052734375,
            327.64434814453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/71/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 5.6.</b> <i>The Koch curve is a fractal that looks something like Figure </i><i><a href=\"#page-71-0\">5.2.</a></i><i> To draw a Koch</i> <i>curve with length x, all you have to do is</i></p>",
          "polygon": [
            [
              86.4000015258789,
              328.904296875
            ],
            [
              482.4046325683594,
              328.904296875
            ],
            [
              482.4046325683594,
              352.00921630859375
            ],
            [
              86.4000015258789,
              352.00921630859375
            ]
          ],
          "bbox": [
            86.4000015258789,
            328.904296875,
            482.4046325683594,
            352.00921630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/71/ListGroup/160",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/71/ListItem/5'></content-ref><content-ref src='/page/71/ListItem/6'></content-ref><content-ref src='/page/71/ListItem/7'></content-ref><content-ref src='/page/71/ListItem/8'></content-ref><content-ref src='/page/71/ListItem/9'></content-ref><content-ref src='/page/71/ListItem/10'></content-ref><content-ref src='/page/71/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              97.2685546875,
              365.642578125
            ],
            [
              259.3296813964844,
              365.642578125
            ],
            [
              259.3296813964844,
              497.304931640625
            ],
            [
              97.2685546875,
              497.304931640625
            ]
          ],
          "bbox": [
            97.2685546875,
            365.642578125,
            259.3296813964844,
            497.304931640625
          ],
          "children": [
            {
              "id": "/page/71/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Draw a Koch curve with length x</i>/3<i>.</i></li>",
              "polygon": [
                [
                  97.94091796875,
                  365.642578125
                ],
                [
                  259.3296813964844,
                  365.642578125
                ],
                [
                  259.3296813964844,
                  376.3179016113281
                ],
                [
                  97.94091796875,
                  376.3179016113281
                ]
              ],
              "bbox": [
                97.94091796875,
                365.642578125,
                259.3296813964844,
                376.3179016113281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/71/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Turn left 60 degrees.</i></li>",
              "polygon": [
                [
                  98.1650390625,
                  385.751953125
                ],
                [
                  193.0593719482422,
                  385.751953125
                ],
                [
                  193.0593719482422,
                  396.3102111816406
                ],
                [
                  98.1650390625,
                  396.3102111816406
                ]
              ],
              "bbox": [
                98.1650390625,
                385.751953125,
                193.0593719482422,
                396.3102111816406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/71/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. Draw a Koch curve with length x</i>/3<i>.</i></li>",
              "polygon": [
                [
                  98.23974609375,
                  406.0546875
                ],
                [
                  259.3296813964844,
                  406.0546875
                ],
                [
                  259.3296813964844,
                  416.64691162109375
                ],
                [
                  98.23974609375,
                  416.64691162109375
                ]
              ],
              "bbox": [
                98.23974609375,
                406.0546875,
                259.3296813964844,
                416.64691162109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/71/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. Turn right 120 degrees.</i></li>",
              "polygon": [
                [
                  97.716796875,
                  426.6766357421875
                ],
                [
                  205.23365783691406,
                  426.6766357421875
                ],
                [
                  205.23365783691406,
                  436.63922119140625
                ],
                [
                  97.716796875,
                  436.63922119140625
                ]
              ],
              "bbox": [
                97.716796875,
                426.6766357421875,
                205.23365783691406,
                436.63922119140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/71/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>5. Draw a Koch curve with length x</i>/3<i>.</i></li>",
              "polygon": [
                [
                  98.09033203125,
                  446.84063720703125
                ],
                [
                  259.3296813964844,
                  446.84063720703125
                ],
                [
                  259.3296813964844,
                  456.9759216308594
                ],
                [
                  98.09033203125,
                  456.9759216308594
                ]
              ],
              "bbox": [
                98.09033203125,
                446.84063720703125,
                259.3296813964844,
                456.9759216308594
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/71/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>6. Turn left 60 degrees.</i></li>",
              "polygon": [
                [
                  97.2685546875,
                  466.76953125
                ],
                [
                  193.0593719482422,
                  466.76953125
                ],
                [
                  193.0593719482422,
                  476.96722412109375
                ],
                [
                  97.2685546875,
                  476.96722412109375
                ]
              ],
              "bbox": [
                97.2685546875,
                466.76953125,
                193.0593719482422,
                476.96722412109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/71/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>7. Draw a Koch curve with length x</i>/3<i>.</i></li>",
              "polygon": [
                [
                  98.015625,
                  486.87890625
                ],
                [
                  259.3296813964844,
                  486.87890625
                ],
                [
                  259.3296813964844,
                  497.304931640625
                ],
                [
                  98.015625,
                  497.304931640625
                ]
              ],
              "bbox": [
                98.015625,
                486.87890625,
                259.3296813964844,
                497.304931640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/71/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The exception is if x is less than 3: in that case, you can just draw a straight line with length x.</i></p>",
          "polygon": [
            [
              85.6142578125,
              510.85546875
            ],
            [
              467.16058349609375,
              510.85546875
            ],
            [
              467.16058349609375,
              521.2682495117188
            ],
            [
              85.6142578125,
              521.2682495117188
            ]
          ],
          "bbox": [
            85.6142578125,
            510.85546875,
            467.16058349609375,
            521.2682495117188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/71/ListGroup/161",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/71/ListItem/13'></content-ref><content-ref src='/page/71/ListItem/14'></content-ref></ul></p>",
          "polygon": [
            [
              97.5673828125,
              534.83203125
            ],
            [
              482.40447998046875,
              534.83203125
            ],
            [
              482.40447998046875,
              589.9572448730469
            ],
            [
              97.5673828125,
              589.9572448730469
            ]
          ],
          "bbox": [
            97.5673828125,
            534.83203125,
            482.40447998046875,
            589.9572448730469
          ],
          "children": [
            {
              "id": "/page/71/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write a function called</i> koch <i>that takes a turtle and a length as parameters, and that uses the</i> <i>turtle to draw a Koch curve with the given length.</i></li>",
              "polygon": [
                [
                  98.314453125,
                  534.83203125
                ],
                [
                  482.4009704589844,
                  534.83203125
                ],
                [
                  482.4009704589844,
                  557.5982513427734
                ],
                [
                  98.314453125,
                  557.5982513427734
                ]
              ],
              "bbox": [
                98.314453125,
                534.83203125,
                482.4009704589844,
                557.5982513427734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/71/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Write a function called</i> snowflake <i>that draws three Koch curves to make the outline of a</i> <i>snowflake.</i></li>",
              "polygon": [
                [
                  97.5673828125,
                  567.703125
                ],
                [
                  482.40447998046875,
                  567.703125
                ],
                [
                  482.40447998046875,
                  589.9572448730469
                ],
                [
                  97.5673828125,
                  589.9572448730469
                ]
              ],
              "bbox": [
                97.5673828125,
                567.703125,
                482.40447998046875,
                589.9572448730469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/62/SectionHeader/1",
                "3": "/page/64/SectionHeader/11",
                "4": "/page/70/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/71/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/koch.py\">http:</a> <a href=\"http://thinkpython.com/code/koch.py\">//</a> <a href=\"http://thinkpython.com/code/koch.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/koch.py\">com/</a> <a href=\"http://thinkpython.com/code/koch.py\">code/</a> <a href=\"http://thinkpython.com/code/koch.py\">koch.</a> <a href=\"http://thinkpython.com/code/koch.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              109.59521484375,
              596.0929565429688
            ],
            [
              348.8206787109375,
              596.0929565429688
            ],
            [
              348.8206787109375,
              606.1362457275391
            ],
            [
              109.59521484375,
              606.1362457275391
            ]
          ],
          "bbox": [
            109.59521484375,
            596.0929565429688,
            348.8206787109375,
            606.1362457275391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/71/ListItem/16",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>3. The Koch curve can be generalized in several ways. See</i> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">//</a> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">Koch_</a> <a href=\"http://en.wikipedia.org/wiki/Koch_snowflake\">snowflake</a> <i>for examples and implement your favorite.</i></li>",
          "polygon": [
            [
              97.2685546875,
              616.2579498291016
            ],
            [
              480.7077331542969,
              616.2579498291016
            ],
            [
              480.7077331542969,
              638.4952392578125
            ],
            [
              97.2685546875,
              638.4952392578125
            ]
          ],
          "bbox": [
            97.2685546875,
            616.2579498291016,
            480.7077331542969,
            638.4952392578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "3": "/page/64/SectionHeader/11",
            "4": "/page/70/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/62/SectionHeader/1",
        "3": "/page/64/SectionHeader/11",
        "4": "/page/70/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/72/Page/121",
      "block_type": "Page",
      "html": "<content-ref src='/page/72/SectionHeader/0'></content-ref><content-ref src='/page/72/SectionHeader/1'></content-ref><content-ref src='/page/72/SectionHeader/2'></content-ref><content-ref src='/page/72/Text/3'></content-ref><content-ref src='/page/72/Text/4'></content-ref><content-ref src='/page/72/Text/5'></content-ref><content-ref src='/page/72/Text/6'></content-ref><content-ref src='/page/72/Code/7'></content-ref><content-ref src='/page/72/Text/8'></content-ref><content-ref src='/page/72/Code/9'></content-ref><content-ref src='/page/72/Text/10'></content-ref><content-ref src='/page/72/Text/11'></content-ref><content-ref src='/page/72/Code/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/72/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-72-0\"></span><b>Chapter 6</b></h2>",
          "polygon": [
            [
              128.27197265625,
              165.2255859375
            ],
            [
              220.84561157226562,
              165.2255859375
            ],
            [
              220.84561157226562,
              186.46197509765625
            ],
            [
              128.27197265625,
              186.46197509765625
            ]
          ],
          "bbox": [
            128.27197265625,
            165.2255859375,
            220.84561157226562,
            186.46197509765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/62/SectionHeader/1",
            "2": "/page/72/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/72/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Fruitful functions</b></h1>",
          "polygon": [
            [
              127.001953125,
              222.169921875
            ],
            [
              331.2926330566406,
              222.169921875
            ],
            [
              331.2926330566406,
              247.620361328125
            ],
            [
              127.001953125,
              247.620361328125
            ]
          ],
          "bbox": [
            127.001953125,
            222.169921875,
            331.2926330566406,
            247.620361328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/72/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-72-1\"></span><b>6.1 Return values</b></h4>",
          "polygon": [
            [
              128.49609375,
              297.966796875
            ],
            [
              253.705078125,
              297.966796875
            ],
            [
              253.705078125,
              312.531982421875
            ],
            [
              128.49609375,
              312.531982421875
            ]
          ],
          "bbox": [
            128.49609375,
            297.966796875,
            253.705078125,
            312.531982421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Some of the built-in functions we have used, such as the math functions, produce results. Calling the function generates a value, which we usually assign to a variable or use as part of an expression.</p>",
          "polygon": [
            [
              129.2431640625,
              327.226318359375
            ],
            [
              526.53515625,
              327.226318359375
            ],
            [
              526.53515625,
              361.5779113769531
            ],
            [
              129.2431640625,
              361.5779113769531
            ]
          ],
          "bbox": [
            129.2431640625,
            327.226318359375,
            526.53515625,
            361.5779113769531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">e = math.exp(1.0) height = radius * math.sin(radians)</p>",
          "polygon": [
            [
              128.197265625,
              369.30975341796875
            ],
            [
              312.6726989746094,
              369.30975341796875
            ],
            [
              312.6726989746094,
              391.4663391113281
            ],
            [
              128.197265625,
              391.4663391113281
            ]
          ],
          "bbox": [
            128.197265625,
            369.30975341796875,
            312.6726989746094,
            391.4663391113281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">All of the functions we have written so far are void; they print something or move turtles around, but their return value is None.</p>",
          "polygon": [
            [
              128.9443359375,
              398.70703125
            ],
            [
              525.9375,
              398.70703125
            ],
            [
              525.9375,
              421.6539001464844
            ],
            [
              128.9443359375,
              421.6539001464844
            ]
          ],
          "bbox": [
            128.9443359375,
            398.70703125,
            525.9375,
            421.6539001464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this chapter, we are (finally) going to write fruitful functions. The first example is area, which returns the area of a circle with the given radius:</p>",
          "polygon": [
            [
              128.3466796875,
              433.35675048828125
            ],
            [
              525.9375,
              433.35675048828125
            ],
            [
              525.9375,
              455.6639099121094
            ],
            [
              128.3466796875,
              455.6639099121094
            ]
          ],
          "bbox": [
            128.3466796875,
            433.35675048828125,
            525.9375,
            455.6639099121094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Code/7",
          "block_type": "Code",
          "html": "<pre>def area(radius):\n    temp = math.pi * radius**2\n    return temp</pre>",
          "polygon": [
            [
              129.60000610351562,
              463.3947448730469
            ],
            [
              288.369140625,
              463.3947448730469
            ],
            [
              288.369140625,
              497.746337890625
            ],
            [
              129.60000610351562,
              497.746337890625
            ]
          ],
          "bbox": [
            129.60000610351562,
            463.3947448730469,
            288.369140625,
            497.746337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We have seen the return statement before, but in a fruitful function the return statement includes an expression. This statement means: \"Return immediately from this function and use the following expression as a return value.\" The expression can be arbitrarily complicated, so we could have written this function more concisely:</p>",
          "polygon": [
            [
              128.794921875,
              505.44140625
            ],
            [
              526.236328125,
              505.44140625
            ],
            [
              526.236328125,
              552.3229064941406
            ],
            [
              128.794921875,
              552.3229064941406
            ]
          ],
          "bbox": [
            128.794921875,
            505.44140625,
            526.236328125,
            552.3229064941406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Code/9",
          "block_type": "Code",
          "html": "<pre>def area(radius):\n    return math.pi * radius**2</pre>",
          "polygon": [
            [
              129.5999755859375,
              559.58203125
            ],
            [
              287.771484375,
              559.58203125
            ],
            [
              287.771484375,
              582.2113494873047
            ],
            [
              129.5999755859375,
              582.2113494873047
            ]
          ],
          "bbox": [
            129.5999755859375,
            559.58203125,
            287.771484375,
            582.2113494873047
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">On the other hand, <b>temporary variables</b> like temp often make debugging easier.</p>",
          "polygon": [
            [
              128.794921875,
              590.0927429199219
            ],
            [
              480.515625,
              590.0927429199219
            ],
            [
              480.515625,
              600.2048950195312
            ],
            [
              128.794921875,
              600.2048950195312
            ]
          ],
          "bbox": [
            128.794921875,
            590.0927429199219,
            480.515625,
            600.2048950195312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Sometimes it is useful to have multiple return statements, one in each branch of a conditional:</p>",
          "polygon": [
            [
              128.3466796875,
              612.0572967529297
            ],
            [
              525.6033325195312,
              612.0572967529297
            ],
            [
              525.6033325195312,
              634.2138977050781
            ],
            [
              128.3466796875,
              634.2138977050781
            ]
          ],
          "bbox": [
            128.3466796875,
            612.0572967529297,
            525.6033325195312,
            634.2138977050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/72/Code/12",
          "block_type": "Code",
          "html": "<pre>def absolute_value(x):\n    if x &lt; 0:\n        return -x\n    else:\n        return x</pre>",
          "polygon": [
            [
              129.5999755859375,
              641.9457397460938
            ],
            [
              244.67794799804688,
              641.9457397460938
            ],
            [
              244.67794799804688,
              701.12109375
            ],
            [
              129.5999755859375,
              701.12109375
            ]
          ],
          "bbox": [
            129.5999755859375,
            641.9457397460938,
            244.67794799804688,
            701.12109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "4": "/page/72/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/73/Page/247",
      "block_type": "Page",
      "html": "<content-ref src='/page/73/PageHeader/0'></content-ref><content-ref src='/page/73/PageHeader/19'></content-ref><content-ref src='/page/73/Text/1'></content-ref><content-ref src='/page/73/Text/2'></content-ref><content-ref src='/page/73/Text/3'></content-ref><content-ref src='/page/73/Code/4'></content-ref><content-ref src='/page/73/Text/5'></content-ref><content-ref src='/page/73/Code/6'></content-ref><content-ref src='/page/73/Text/7'></content-ref><content-ref src='/page/73/SectionHeader/8'></content-ref><content-ref src='/page/73/Text/9'></content-ref><content-ref src='/page/73/Text/10'></content-ref><content-ref src='/page/73/Text/11'></content-ref><content-ref src='/page/73/Equation/12'></content-ref><content-ref src='/page/73/Text/13'></content-ref><content-ref src='/page/73/Text/14'></content-ref><content-ref src='/page/73/Text/15'></content-ref><content-ref src='/page/73/Code/16'></content-ref><content-ref src='/page/73/Text/17'></content-ref><content-ref src='/page/73/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/73/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.4034729003906,
              60.71484375
            ],
            [
              482.4034729003906,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.4034729003906,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.98779296875,
              60.908203125
            ],
            [
              97.04443359375,
              60.908203125
            ],
            [
              97.04443359375,
              70.0927734375
            ],
            [
              85.98779296875,
              70.0927734375
            ]
          ],
          "bbox": [
            85.98779296875,
            60.908203125,
            97.04443359375,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since these return statements are in an alternative conditional, only one will be executed.</p>",
          "polygon": [
            [
              85.0166015625,
              88.6552734375
            ],
            [
              480.6423034667969,
              88.6552734375
            ],
            [
              480.6423034667969,
              98.79791259765625
            ],
            [
              85.0166015625,
              98.79791259765625
            ]
          ],
          "bbox": [
            85.0166015625,
            88.6552734375,
            480.6423034667969,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As soon as a return statement executes, the function terminates without executing any subsequent statements. Code that appears after a return statement, or any other place the flow of execution can never reach, is called <b>dead code</b>.</p>",
          "polygon": [
            [
              85.6142578125,
              109.0546875
            ],
            [
              482.90625,
              109.0546875
            ],
            [
              482.90625,
              144.01092529296875
            ],
            [
              85.6142578125,
              144.01092529296875
            ]
          ],
          "bbox": [
            85.6142578125,
            109.0546875,
            482.90625,
            144.01092529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In a fruitful function, it is a good idea to ensure that every possible path through the program hits a return statement. For example:</p>",
          "polygon": [
            [
              85.6142578125,
              154.30078125
            ],
            [
              482.4032287597656,
              154.30078125
            ],
            [
              482.4032287597656,
              177.02996826171875
            ],
            [
              85.6142578125,
              177.02996826171875
            ]
          ],
          "bbox": [
            85.6142578125,
            154.30078125,
            482.4032287597656,
            177.02996826171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/Code/4",
          "block_type": "Code",
          "html": "<pre>def absolute_value(x):\n    if x &lt; 0:\n        return -x\n    if x &gt; 0:\n        return x</pre>",
          "polygon": [
            [
              86.39995574951172,
              183.77081298828125
            ],
            [
              201.47792053222656,
              183.77081298828125
            ],
            [
              201.47792053222656,
              243.6328125
            ],
            [
              86.39995574951172,
              243.6328125
            ]
          ],
          "bbox": [
            86.39995574951172,
            183.77081298828125,
            201.47792053222656,
            243.6328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This function is incorrect because if x happens to be 0, neither condition is true, and the function ends without hitting a return statement. If the flow of execution gets to the end of a function, the return value is None, which is not the absolute value of 0.</p>",
          "polygon": [
            [
              85.763671875,
              249.240234375
            ],
            [
              482.40374755859375,
              249.240234375
            ],
            [
              482.40374755859375,
              283.90203857421875
            ],
            [
              85.763671875,
              283.90203857421875
            ]
          ],
          "bbox": [
            85.763671875,
            249.240234375,
            482.40374755859375,
            283.90203857421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print absolute_value(0)\nNone</pre>",
          "polygon": [
            [
              85.763671875,
              289.458984375
            ],
            [
              227.62973022460938,
              289.458984375
            ],
            [
              227.62973022460938,
              312.80047607421875
            ],
            [
              85.763671875,
              312.80047607421875
            ]
          ],
          "bbox": [
            85.763671875,
            289.458984375,
            227.62973022460938,
            312.80047607421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">By the way, Python provides a built-in function called abs that computes absolute values. <b>Exercise 6.1.</b> <i>Write a</i> compare <i>function that returns</i> 1 <i>if</i> x &gt; y<i>,</i> 0 <i>if</i> x == y<i>, and</i> -1 <i>if</i> x &lt; y<i>.</i></p>",
          "polygon": [
            [
              85.763671875,
              319.4296875
            ],
            [
              479.317626953125,
              319.4296875
            ],
            [
              479.317626953125,
              341.8999328613281
            ],
            [
              85.763671875,
              341.8999328613281
            ]
          ],
          "bbox": [
            85.763671875,
            319.4296875,
            479.317626953125,
            341.8999328613281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/72/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/73/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-73-0\"></span><b>6.2 Incremental development</b></h4>",
          "polygon": [
            [
              85.39013671875,
              373.40087890625
            ],
            [
              288.0703125,
              373.40087890625
            ],
            [
              288.0703125,
              387.7471008300781
            ],
            [
              85.39013671875,
              387.7471008300781
            ]
          ],
          "bbox": [
            85.39013671875,
            373.40087890625,
            288.0703125,
            387.7471008300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you write larger functions, you might find yourself spending more time debugging.</p>",
          "polygon": [
            [
              85.9130859375,
              399.8671875
            ],
            [
              469.0234680175781,
              399.8671875
            ],
            [
              469.0234680175781,
              411.01702880859375
            ],
            [
              85.9130859375,
              411.01702880859375
            ]
          ],
          "bbox": [
            85.9130859375,
            399.8671875,
            469.0234680175781,
            411.01702880859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To deal with increasingly complex programs, you might want to try a process called <b>in</b><b>cremental development</b>. The goal of incremental development is to avoid long debugging sessions by adding and testing only a small amount of code at a time.</p>",
          "polygon": [
            [
              85.6142578125,
              421.13671875
            ],
            [
              482.90625,
              421.13671875
            ],
            [
              482.90625,
              456.2310485839844
            ],
            [
              85.6142578125,
              456.2310485839844
            ]
          ],
          "bbox": [
            85.6142578125,
            421.13671875,
            482.90625,
            456.2310485839844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As an example, suppose you want to find the distance between two points, given by the coordinates (<i>x</i>1, <i>y</i>1) and (<i>x</i>2, <i>y</i>2). By the Pythagorean theorem, the distance is:</p>",
          "polygon": [
            [
              85.46484375,
              465.99609375
            ],
            [
              482.90625,
              465.99609375
            ],
            [
              482.90625,
              490.4317626953125
            ],
            [
              85.46484375,
              490.4317626953125
            ]
          ],
          "bbox": [
            85.46484375,
            465.99609375,
            482.90625,
            490.4317626953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Equation/12",
          "block_type": "Equation",
          "html": "<p block-type=\"Equation\"><math display=\"block\">\\mathrm{distance} = \\sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}</math></p>",
          "polygon": [
            [
              200.8125,
              507.375
            ],
            [
              366.064453125,
              507.375
            ],
            [
              366.064453125,
              528.2578125
            ],
            [
              200.8125,
              528.2578125
            ]
          ],
          "bbox": [
            200.8125,
            507.375,
            366.064453125,
            528.2578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first step is to consider what a distance function should look like in Python. In other words, what are the inputs (parameters) and what is the output (return value)?</p>",
          "polygon": [
            [
              85.46484375,
              533.28515625
            ],
            [
              483.802734375,
              533.28515625
            ],
            [
              483.802734375,
              555.8779296875
            ],
            [
              85.46484375,
              555.8779296875
            ]
          ],
          "bbox": [
            85.46484375,
            533.28515625,
            483.802734375,
            555.8779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this case, the inputs are two points, which you can represent using four numbers. The return value is the distance, which is a floating-point value.</p>",
          "polygon": [
            [
              85.3154296875,
              566.15625
            ],
            [
              483.50390625,
              566.15625
            ],
            [
              483.50390625,
              588.8969421386719
            ],
            [
              85.3154296875,
              588.8969421386719
            ]
          ],
          "bbox": [
            85.3154296875,
            566.15625,
            483.50390625,
            588.8969421386719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Already you can write an outline of the function:</p>",
          "polygon": [
            [
              85.6142578125,
              598.640625
            ],
            [
              301.9658203125,
              598.640625
            ],
            [
              301.9658203125,
              609.720947265625
            ],
            [
              85.6142578125,
              609.720947265625
            ]
          ],
          "bbox": [
            85.6142578125,
            598.640625,
            301.9658203125,
            609.720947265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Code/16",
          "block_type": "Code",
          "html": "<pre>def distance(x1, y1, x2, y2):\n    return 0.0</pre>",
          "polygon": [
            [
              85.24072265625,
              616.04296875
            ],
            [
              238.09046936035156,
              616.04296875
            ],
            [
              238.09046936035156,
              638.6194000244141
            ],
            [
              85.24072265625,
              638.6194000244141
            ]
          ],
          "bbox": [
            85.24072265625,
            616.04296875,
            238.09046936035156,
            638.6194000244141
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Obviously, this version doesn't compute distances; it always returns zero. But it is syntactically correct, and it runs, which means that you can test it before you make it more complicated.</p>",
          "polygon": [
            [
              85.46484375,
              645.046875
            ],
            [
              482.90625,
              645.046875
            ],
            [
              482.90625,
              680.0109558105469
            ],
            [
              85.46484375,
              680.0109558105469
            ]
          ],
          "bbox": [
            85.46484375,
            645.046875,
            482.90625,
            680.0109558105469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/73/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To test the new function, call it with sample arguments:</p>",
          "polygon": [
            [
              85.98779296875,
              690.6796875
            ],
            [
              329.9356689453125,
              690.6796875
            ],
            [
              329.9356689453125,
              700.8349533081055
            ],
            [
              85.98779296875,
              700.8349533081055
            ]
          ],
          "bbox": [
            85.98779296875,
            690.6796875,
            329.9356689453125,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "4": "/page/73/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/74/Page/204",
      "block_type": "Page",
      "html": "<content-ref src='/page/74/PageHeader/0'></content-ref><content-ref src='/page/74/PageHeader/15'></content-ref><content-ref src='/page/74/TextInlineMath/1'></content-ref><content-ref src='/page/74/Text/2'></content-ref><content-ref src='/page/74/Text/3'></content-ref><content-ref src='/page/74/Code/4'></content-ref><content-ref src='/page/74/Text/5'></content-ref><content-ref src='/page/74/Text/6'></content-ref><content-ref src='/page/74/Code/7'></content-ref><content-ref src='/page/74/Text/8'></content-ref><content-ref src='/page/74/Code/9'></content-ref><content-ref src='/page/74/Text/10'></content-ref><content-ref src='/page/74/Text/11'></content-ref><content-ref src='/page/74/Text/12'></content-ref><content-ref src='/page/74/Text/13'></content-ref><content-ref src='/page/74/ListItem/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/74/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              61.1015625
            ],
            [
              525.6033935546875,
              61.1015625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            61.1015625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.56982421875
            ],
            [
              526.236328125,
              60.56982421875
            ],
            [
              526.236328125,
              69.94775390625
            ],
            [
              514.880859375,
              69.94775390625
            ]
          ],
          "bbox": [
            514.880859375,
            60.56982421875,
            526.236328125,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/TextInlineMath/1",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; distance(1, 2, 4, 6) 0.0</p>",
          "polygon": [
            [
              128.0478515625,
              88.02685546875
            ],
            [
              255.12875366210938,
              88.02685546875
            ],
            [
              255.12875366210938,
              110.84228515625
            ],
            [
              128.0478515625,
              110.84228515625
            ]
          ],
          "bbox": [
            128.0478515625,
            88.02685546875,
            255.12875366210938,
            110.84228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I chose these values so that the horizontal distance is 3 and the vertical distance is 4; that way, the result is 5 (the hypotenuse of a 3-4-5 triangle). When testing a function, it is useful to know the right answer.</p>",
          "polygon": [
            [
              127.8984375,
              116.4990234375
            ],
            [
              525.9375,
              116.4990234375
            ],
            [
              525.9375,
              151.42584228515625
            ],
            [
              127.8984375,
              151.42584228515625
            ]
          ],
          "bbox": [
            127.8984375,
            116.4990234375,
            525.9375,
            151.42584228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">At this point we have confirmed that the function is syntactically correct, and we can start adding code to the body. A reasonable next step is to find the differences <i>x</i>2 − <i>x</i>1 and <i>y</i>2 − <i>y</i>1. The next version stores those values in temporary variables and prints them.</p>",
          "polygon": [
            [
              128.197265625,
              160.5849609375
            ],
            [
              525.638671875,
              160.5849609375
            ],
            [
              525.638671875,
              197.01251220703125
            ],
            [
              128.197265625,
              197.01251220703125
            ]
          ],
          "bbox": [
            128.197265625,
            160.5849609375,
            525.638671875,
            197.01251220703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Code/4",
          "block_type": "Code",
          "html": "<pre>def distance(x1, y1, x2, y2):\n    dx = x2 - x1\n    dy = y2 - y1\n    print 'dx is', dx\n    print 'dy is', dy\n    return 0.0</pre>",
          "polygon": [
            [
              129.59996032714844,
              201.763671875
            ],
            [
              281.794921875,
              201.763671875
            ],
            [
              281.794921875,
              272.6982421875
            ],
            [
              129.59996032714844,
              272.6982421875
            ]
          ],
          "bbox": [
            129.59996032714844,
            201.763671875,
            281.794921875,
            272.6982421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the function is working, it should display 'dx is 3' and 'dy is 4'. If so, we know that the function is getting the right arguments and performing the first computation correctly. If not, there are only a few lines to check.</p>",
          "polygon": [
            [
              128.6455078125,
              278.05078125
            ],
            [
              525.9375,
              278.05078125
            ],
            [
              525.9375,
              313.2818298339844
            ],
            [
              128.6455078125,
              313.2818298339844
            ]
          ],
          "bbox": [
            128.6455078125,
            278.05078125,
            525.9375,
            313.2818298339844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Next we compute the sum of squares of dx and dy:</p>",
          "polygon": [
            [
              127.52490234375,
              322.716796875
            ],
            [
              351.879638671875,
              322.716796875
            ],
            [
              351.879638671875,
              333.2978210449219
            ],
            [
              127.52490234375,
              333.2978210449219
            ]
          ],
          "bbox": [
            127.52490234375,
            322.716796875,
            351.879638671875,
            333.2978210449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Code/7",
          "block_type": "Code",
          "html": "<pre>def distance(x1, y1, x2, y2):\n    dx = x2 - x1\n    dy = y2 - y1\n    dsquared = dx**2 + dy**2\n    print 'dsquared is: ', dsquared\n    return 0.0</pre>",
          "polygon": [
            [
              129.5999755859375,
              339.15234375
            ],
            [
              318.251953125,
              339.15234375
            ],
            [
              318.251953125,
              410.165283203125
            ],
            [
              129.5999755859375,
              410.165283203125
            ]
          ],
          "bbox": [
            129.5999755859375,
            339.15234375,
            318.251953125,
            410.165283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Again, you would run the program at this stage and check the output (which should be 25). Finally, you can use math.sqrt to compute and return the result:</p>",
          "polygon": [
            [
              128.794921875,
              415.3359375
            ],
            [
              525.638671875,
              415.3359375
            ],
            [
              525.638671875,
              438.5538635253906
            ],
            [
              128.794921875,
              438.5538635253906
            ]
          ],
          "bbox": [
            128.794921875,
            415.3359375,
            525.638671875,
            438.5538635253906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Code/9",
          "block_type": "Code",
          "html": "<pre>def distance(x1, y1, x2, y2):\n    dx = x2 - x1\n    dy = y2 - y1\n    dsquared = dx**2 + dy**2\n    result = math.sqrt(dsquared)\n    return result</pre>",
          "polygon": [
            [
              129.59996032714844,
              444.4867248535156
            ],
            [
              296.9761047363281,
              444.4867248535156
            ],
            [
              296.9761047363281,
              515.4213256835938
            ],
            [
              129.59996032714844,
              515.4213256835938
            ]
          ],
          "bbox": [
            129.59996032714844,
            444.4867248535156,
            296.9761047363281,
            515.4213256835938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If that works correctly, you are done. Otherwise, you might want to print the value of result before the return statement.</p>",
          "polygon": [
            [
              127.8984375,
              520.5234375
            ],
            [
              525.9375,
              520.5234375
            ],
            [
              525.9375,
              543.8099060058594
            ],
            [
              127.8984375,
              543.8099060058594
            ]
          ],
          "bbox": [
            127.8984375,
            520.5234375,
            525.9375,
            543.8099060058594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The final version of the function doesn't display anything when it runs; it only returns a value. The print statements we wrote are useful for debugging, but once you get the function working, you should remove them. Code like that is called <b>scaffolding</b> because it is helpful for building the program but is not part of the final product.</p>",
          "polygon": [
            [
              128.197265625,
              553.0078125
            ],
            [
              526.236328125,
              553.0078125
            ],
            [
              526.236328125,
              600.409912109375
            ],
            [
              128.197265625,
              600.409912109375
            ]
          ],
          "bbox": [
            128.197265625,
            553.0078125,
            526.236328125,
            600.409912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you start out, you should add only a line or two of code at a time. As you gain more experience, you might find yourself writing and debugging bigger chunks. Either way, incremental development can save you a lot of debugging time.</p>",
          "polygon": [
            [
              128.197265625,
              610.2421875
            ],
            [
              526.236328125,
              610.2421875
            ],
            [
              526.236328125,
              645.046875
            ],
            [
              128.197265625,
              645.046875
            ]
          ],
          "bbox": [
            128.197265625,
            610.2421875,
            526.236328125,
            645.046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The key aspects of the process are:</p>",
          "polygon": [
            [
              127.82373046875,
              654.71484375
            ],
            [
              281.197265625,
              654.71484375
            ],
            [
              281.197265625,
              664.831916809082
            ],
            [
              127.82373046875,
              664.831916809082
            ]
          ],
          "bbox": [
            127.82373046875,
            654.71484375,
            281.197265625,
            664.831916809082
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/74/ListItem/14",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">1. Start with a working program and make small incremental changes. At any point, if there is an error, you should have a good idea where it is.</li>",
          "polygon": [
            [
              142.052978515625,
              677.53125
            ],
            [
              525.9375,
              677.53125
            ],
            [
              525.9375,
              700.8349151611328
            ],
            [
              142.052978515625,
              700.8349151611328
            ]
          ],
          "bbox": [
            142.052978515625,
            677.53125,
            525.9375,
            700.8349151611328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "4": "/page/73/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/75/Page/168",
      "block_type": "Page",
      "html": "<content-ref src='/page/75/PageHeader/0'></content-ref><content-ref src='/page/75/PageHeader/18'></content-ref><content-ref src='/page/75/ListGroup/165'></content-ref><content-ref src='/page/75/Text/3'></content-ref><content-ref src='/page/75/SectionHeader/4'></content-ref><content-ref src='/page/75/Text/5'></content-ref><content-ref src='/page/75/Text/6'></content-ref><content-ref src='/page/75/Text/7'></content-ref><content-ref src='/page/75/TextInlineMath/8'></content-ref><content-ref src='/page/75/Text/9'></content-ref><content-ref src='/page/75/Code/10'></content-ref><content-ref src='/page/75/Text/11'></content-ref><content-ref src='/page/75/Code/12'></content-ref><content-ref src='/page/75/Text/13'></content-ref><content-ref src='/page/75/Code/14'></content-ref><content-ref src='/page/75/SectionHeader/15'></content-ref><content-ref src='/page/75/Text/16'></content-ref><content-ref src='/page/75/Code/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/75/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.4034729003906,
              60.66650390625
            ],
            [
              482.4034729003906,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.4034729003906,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/75/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.09130859375,
              60.6181640625
            ],
            [
              95.99853515625,
              60.6181640625
            ],
            [
              95.99853515625,
              69.8994140625
            ],
            [
              85.09130859375,
              69.8994140625
            ]
          ],
          "bbox": [
            85.09130859375,
            60.6181640625,
            95.99853515625,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/75/ListGroup/165",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/75/ListItem/1'></content-ref><content-ref src='/page/75/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              97.716796875,
              88.80029296875
            ],
            [
              482.90625,
              88.80029296875
            ],
            [
              482.90625,
              157.158935546875
            ],
            [
              97.716796875,
              157.158935546875
            ]
          ],
          "bbox": [
            97.716796875,
            88.80029296875,
            482.90625,
            157.158935546875
          ],
          "children": [
            {
              "id": "/page/75/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. Use temporary variables to hold intermediate values so you can display and check them.</li>",
              "polygon": [
                [
                  98.8530044555664,
                  88.80029296875
                ],
                [
                  482.90625,
                  88.80029296875
                ],
                [
                  482.90625,
                  110.99188232421875
                ],
                [
                  98.8530044555664,
                  110.99188232421875
                ]
              ],
              "bbox": [
                98.8530044555664,
                88.80029296875,
                482.90625,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "4": "/page/73/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/75/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">3. Once the program is working, you might want to remove some of the scaffolding or consolidate multiple statements into compound expressions, but only if it does not make the program difficult to read.</li>",
              "polygon": [
                [
                  97.716796875,
                  122.203125
                ],
                [
                  482.40380859375,
                  122.203125
                ],
                [
                  482.40380859375,
                  157.158935546875
                ],
                [
                  97.716796875,
                  157.158935546875
                ]
              ],
              "bbox": [
                97.716796875,
                122.203125,
                482.40380859375,
                157.158935546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "4": "/page/73/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/75/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 6.2.</b> <i>Use incremental development to write a function called</i> hypotenuse <i>that returns the</i> <i>length of the hypotenuse of a right triangle given the lengths of the two legs as arguments. Record</i> <i>each stage of the development process as you go.</i></p>",
          "polygon": [
            [
              85.763671875,
              163.775390625
            ],
            [
              482.40350341796875,
              163.775390625
            ],
            [
              482.40350341796875,
              198.374267578125
            ],
            [
              85.763671875,
              198.374267578125
            ]
          ],
          "bbox": [
            85.763671875,
            163.775390625,
            482.40350341796875,
            198.374267578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/73/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/75/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-75-0\"></span><b>6.3 Composition</b></h4>",
          "polygon": [
            [
              86.0625,
              230.725830078125
            ],
            [
              203.9527587890625,
              230.725830078125
            ],
            [
              203.9527587890625,
              245.072021484375
            ],
            [
              86.0625,
              245.072021484375
            ]
          ],
          "bbox": [
            86.0625,
            230.725830078125,
            203.9527587890625,
            245.072021484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you should expect by now, you can call one function from within another. This ability is called <b>composition</b>.</p>",
          "polygon": [
            [
              86.2119140625,
              258.71484375
            ],
            [
              482.4032897949219,
              258.71484375
            ],
            [
              482.4032897949219,
              280.8979797363281
            ],
            [
              86.2119140625,
              280.8979797363281
            ]
          ],
          "bbox": [
            86.2119140625,
            258.71484375,
            482.4032897949219,
            280.8979797363281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As an example, we'll write a function that takes two points, the center of the circle and a point on the perimeter, and computes the area of the circle.</p>",
          "polygon": [
            [
              86.0625,
              291.5859375
            ],
            [
              482.607421875,
              291.5859375
            ],
            [
              482.607421875,
              314.1759948730469
            ],
            [
              86.0625,
              314.1759948730469
            ]
          ],
          "bbox": [
            86.0625,
            291.5859375,
            482.607421875,
            314.1759948730469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Assume that the center point is stored in the variables xc and yc, and the perimeter point is in xp and yp. The first step is to find the radius of the circle, which is the distance between the two points. We just wrote a function, distance, that does that:</p>",
          "polygon": [
            [
              85.9130859375,
              325.037109375
            ],
            [
              483.50390625,
              325.037109375
            ],
            [
              483.50390625,
              359.64801025390625
            ],
            [
              85.9130859375,
              359.64801025390625
            ]
          ],
          "bbox": [
            85.9130859375,
            325.037109375,
            483.50390625,
            359.64801025390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">radius = distance(xc, yc, xp, yp)</p>",
          "polygon": [
            [
              85.39013671875,
              366.6468505859375
            ],
            [
              259.0119323730469,
              366.6468505859375
            ],
            [
              259.0119323730469,
              377.4375
            ],
            [
              85.39013671875,
              377.4375
            ]
          ],
          "bbox": [
            85.39013671875,
            366.6468505859375,
            259.0119323730469,
            377.4375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next step is to find the area of a circle with that radius; we just wrote that, too:</p>",
          "polygon": [
            [
              85.763671875,
              383.23828125
            ],
            [
              447.046875,
              383.23828125
            ],
            [
              447.046875,
              393.8710021972656
            ],
            [
              85.763671875,
              393.8710021972656
            ]
          ],
          "bbox": [
            85.763671875,
            383.23828125,
            447.046875,
            393.8710021972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Code/10",
          "block_type": "Code",
          "html": "<pre>result = area(radius)</pre>",
          "polygon": [
            [
              85.39013671875,
              400.8698425292969
            ],
            [
              197.82421875,
              400.8698425292969
            ],
            [
              197.82421875,
              410.8324279785156
            ],
            [
              85.39013671875,
              410.8324279785156
            ]
          ],
          "bbox": [
            85.39013671875,
            400.8698425292969,
            197.82421875,
            410.8324279785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Encapsulating these steps in a function, we get:</p>",
          "polygon": [
            [
              85.53955078125,
              418.04296875
            ],
            [
              294.64453125,
              418.04296875
            ],
            [
              294.64453125,
              428.093994140625
            ],
            [
              85.53955078125,
              428.093994140625
            ]
          ],
          "bbox": [
            85.53955078125,
            418.04296875,
            294.64453125,
            428.093994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Code/12",
          "block_type": "Code",
          "html": "<pre>def circle_area(xc, yc, xp, yp):\n    radius = distance(xc, yc, xp, yp)\n    result = area(radius)\n    return result</pre>",
          "polygon": [
            [
              85.6142578125,
              435.05859375
            ],
            [
              279.9279479980469,
              435.05859375
            ],
            [
              279.9279479980469,
              481.6394348144531
            ],
            [
              85.6142578125,
              481.6394348144531
            ]
          ],
          "bbox": [
            85.6142578125,
            435.05859375,
            279.9279479980469,
            481.6394348144531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The temporary variables radius and result are useful for development and debugging, but once the program is working, we can make it more concise by composing the function calls:</p>",
          "polygon": [
            [
              85.6142578125,
              488.787841796875
            ],
            [
              482.90625,
              488.787841796875
            ],
            [
              482.90625,
              523.6171875
            ],
            [
              85.6142578125,
              523.6171875
            ]
          ],
          "bbox": [
            85.6142578125,
            488.787841796875,
            482.90625,
            523.6171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/Code/14",
          "block_type": "Code",
          "html": "<pre>def circle_area(xc, yc, xp, yp):\n    return area(distance(xc, yc, xp, yp))</pre>",
          "polygon": [
            [
              86.28662109375,
              530.287841796875
            ],
            [
              300.8493957519531,
              530.287841796875
            ],
            [
              300.8493957519531,
              552.4454498291016
            ],
            [
              86.28662109375,
              552.4454498291016
            ]
          ],
          "bbox": [
            86.28662109375,
            530.287841796875,
            300.8493957519531,
            552.4454498291016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/75/SectionHeader/15",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-75-1\"></span><b>6.4 Boolean functions</b></h4>",
          "polygon": [
            [
              85.0166015625,
              584.7738647460938
            ],
            [
              237.82412719726562,
              584.7738647460938
            ],
            [
              237.82412719726562,
              599.1200561523438
            ],
            [
              85.0166015625,
              599.1200561523438
            ]
          ],
          "bbox": [
            85.0166015625,
            584.7738647460938,
            237.82412719726562,
            599.1200561523438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/75/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Functions can return booleans, which is often convenient for hiding complicated tests inside functions. For example:</p>",
          "polygon": [
            [
              85.0166015625,
              612.7894134521484
            ],
            [
              482.4032897949219,
              612.7894134521484
            ],
            [
              482.4032897949219,
              634.9460144042969
            ],
            [
              85.0166015625,
              634.9460144042969
            ]
          ],
          "bbox": [
            85.0166015625,
            612.7894134521484,
            482.4032897949219,
            634.9460144042969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/75/Code/17",
          "block_type": "Code",
          "html": "<pre>def is_divisible(x, y):\n    if x % y == 0:\n        return True\n    else:\n        return False</pre>",
          "polygon": [
            [
              86.2119140625,
              641.9458618164062
            ],
            [
              210.97265625,
              641.9458618164062
            ],
            [
              210.97265625,
              700.6854553222656
            ],
            [
              86.2119140625,
              700.6854553222656
            ]
          ],
          "bbox": [
            86.2119140625,
            641.9458618164062,
            210.97265625,
            700.6854553222656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "4": "/page/75/SectionHeader/15"
      },
      "images": null
    },
    {
      "id": "/page/76/Page/219",
      "block_type": "Page",
      "html": "<content-ref src='/page/76/PageHeader/0'></content-ref><content-ref src='/page/76/PageHeader/19'></content-ref><content-ref src='/page/76/Text/1'></content-ref><content-ref src='/page/76/Text/2'></content-ref><content-ref src='/page/76/Code/3'></content-ref><content-ref src='/page/76/Text/4'></content-ref><content-ref src='/page/76/Code/5'></content-ref><content-ref src='/page/76/Text/6'></content-ref><content-ref src='/page/76/TextInlineMath/7'></content-ref><content-ref src='/page/76/TextInlineMath/8'></content-ref><content-ref src='/page/76/Text/9'></content-ref><content-ref src='/page/76/TextInlineMath/10'></content-ref><content-ref src='/page/76/Text/11'></content-ref><content-ref src='/page/76/SectionHeader/12'></content-ref><content-ref src='/page/76/Text/13'></content-ref><content-ref src='/page/76/Text/14'></content-ref><content-ref src='/page/76/Text/15'></content-ref><content-ref src='/page/76/Text/16'></content-ref><content-ref src='/page/76/Text/17'></content-ref><content-ref src='/page/76/Equation/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/76/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              61.05322265625
            ],
            [
              525.041015625,
              61.05322265625
            ],
            [
              525.041015625,
              70.43115234375
            ],
            [
              514.880859375,
              70.43115234375
            ]
          ],
          "bbox": [
            514.880859375,
            61.05322265625,
            525.041015625,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is common to give boolean functions names that sound like yes/no questions; is_divisible returns either True or False to indicate whether x is divisible by y.</p>",
          "polygon": [
            [
              127.30078125,
              88.51025390625
            ],
            [
              525.9375,
              88.51025390625
            ],
            [
              525.9375,
              110.99188232421875
            ],
            [
              127.30078125,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.30078125,
            88.51025390625,
            525.9375,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an example:</p>",
          "polygon": [
            [
              128.12255859375,
              119.689453125
            ],
            [
              219.041015625,
              119.689453125
            ],
            [
              219.041015625,
              130.06787109375
            ],
            [
              128.12255859375,
              130.06787109375
            ]
          ],
          "bbox": [
            128.12255859375,
            119.689453125,
            219.041015625,
            130.06787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; is_divisible(6, 4)\nFalse\n&gt;&gt;&gt; is_divisible(6, 3)\nTrue</pre>",
          "polygon": [
            [
              128.3466796875,
              135.0587158203125
            ],
            [
              255.3486328125,
              135.0587158203125
            ],
            [
              255.3486328125,
              181.604248046875
            ],
            [
              128.3466796875,
              181.604248046875
            ]
          ],
          "bbox": [
            128.3466796875,
            135.0587158203125,
            255.3486328125,
            181.604248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The result of the == operator is a boolean, so we can write the function more concisely by returning it directly:</p>",
          "polygon": [
            [
              129.60000610351562,
              186.591796875
            ],
            [
              525.638671875,
              186.591796875
            ],
            [
              525.638671875,
              209.0528564453125
            ],
            [
              129.60000610351562,
              209.0528564453125
            ]
          ],
          "bbox": [
            129.60000610351562,
            186.591796875,
            525.638671875,
            209.0528564453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Code/5",
          "block_type": "Code",
          "html": "<pre>def is_divisible(x, y):\n    return x % y == 0</pre>",
          "polygon": [
            [
              128.6455078125,
              213.46875
            ],
            [
              249.90834045410156,
              213.46875
            ],
            [
              249.90834045410156,
              236.2012939453125
            ],
            [
              128.6455078125,
              236.2012939453125
            ]
          ],
          "bbox": [
            128.6455078125,
            213.46875,
            249.90834045410156,
            236.2012939453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Boolean functions are often used in conditional statements:</p>",
          "polygon": [
            [
              128.197265625,
              241.3125
            ],
            [
              389.1954040527344,
              241.3125
            ],
            [
              389.1954040527344,
              251.45489501953125
            ],
            [
              128.197265625,
              251.45489501953125
            ]
          ],
          "bbox": [
            128.197265625,
            241.3125,
            389.1954040527344,
            251.45489501953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/TextInlineMath/7",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">if is_divisible(x, y):</p>",
          "polygon": [
            [
              129.60000610351562,
              256.44573974609375
            ],
            [
              266.1064453125,
              256.44573974609375
            ],
            [
              266.1064453125,
              268.962890625
            ],
            [
              129.60000610351562,
              268.962890625
            ]
          ],
          "bbox": [
            129.60000610351562,
            256.44573974609375,
            266.1064453125,
            268.962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">print 'x is divisible by y'</p>",
          "polygon": [
            [
              147.62109375,
              268.6407470703125
            ],
            [
              291.955078125,
              268.6407470703125
            ],
            [
              291.955078125,
              282.69140625
            ],
            [
              147.62109375,
              282.69140625
            ]
          ],
          "bbox": [
            147.62109375,
            268.6407470703125,
            291.955078125,
            282.69140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It might be tempting to write something like:</p>",
          "polygon": [
            [
              128.3466796875,
              283.8943176269531
            ],
            [
              327.515625,
              283.8943176269531
            ],
            [
              327.515625,
              294.29296875
            ],
            [
              128.3466796875,
              294.29296875
            ]
          ],
          "bbox": [
            128.3466796875,
            283.8943176269531,
            327.515625,
            294.29296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/TextInlineMath/10",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">if is_divisible(x, y) == True: print 'x is divisible by y'</p>",
          "polygon": [
            [
              129.60000610351562,
              298.8477478027344
            ],
            [
              291.7033996582031,
              298.8477478027344
            ],
            [
              291.7033996582031,
              321.0053405761719
            ],
            [
              129.60000610351562,
              321.0053405761719
            ]
          ],
          "bbox": [
            129.60000610351562,
            298.8477478027344,
            291.7033996582031,
            321.0053405761719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But the extra comparison is unnecessary. <b>Exercise 6.3.</b> <i>Write a function</i> is_between(x, y, z) <i>that returns</i> True <i>if x</i> ≤ <i>y</i> ≤ <i>z or</i> False <i>otherwise.</i></p>",
          "polygon": [
            [
              127.8984375,
              325.423828125
            ],
            [
              525.6057739257812,
              325.423828125
            ],
            [
              525.6057739257812,
              360.4742126464844
            ],
            [
              127.8984375,
              360.4742126464844
            ]
          ],
          "bbox": [
            127.8984375,
            325.423828125,
            525.6057739257812,
            360.4742126464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/75/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/76/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-76-0\"></span><b>6.5 More recursion</b></h4>",
          "polygon": [
            [
              128.49609375,
              388.5017395019531
            ],
            [
              261.9006652832031,
              388.5017395019531
            ],
            [
              261.9006652832031,
              402.84796142578125
            ],
            [
              128.49609375,
              402.84796142578125
            ]
          ],
          "bbox": [
            128.49609375,
            388.5017395019531,
            261.9006652832031,
            402.84796142578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We have only covered a small subset of Python, but you might be interested to know that this subset is a <i>complete</i> programming language, which means that anything that can be computed can be expressed in this language. Any program ever written could be rewritten using only the language features you have learned so far (actually, you would need a few commands to control devices like the keyboard, mouse, disks, etc., but that's all).</p>",
          "polygon": [
            [
              128.794921875,
              413.7890625
            ],
            [
              525.638671875,
              413.7890625
            ],
            [
              525.638671875,
              472.8719177246094
            ],
            [
              128.794921875,
              472.8719177246094
            ]
          ],
          "bbox": [
            128.794921875,
            413.7890625,
            525.638671875,
            472.8719177246094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Proving that claim is a nontrivial exercise first accomplished by Alan Turing, one of the first computer scientists (some would argue that he was a mathematician, but a lot of early computer scientists started as mathematicians). Accordingly, it is known as the Turing Thesis. For a more complete (and accurate) discussion of the Turing Thesis, I recommend Michael Sipser's book <i>Introduction to the Theory of Computation</i>.</p>",
          "polygon": [
            [
              128.6455078125,
              481.9843444824219
            ],
            [
              525.9375,
              481.9843444824219
            ],
            [
              525.9375,
              540.7239379882812
            ],
            [
              128.6455078125,
              540.7239379882812
            ]
          ],
          "bbox": [
            128.6455078125,
            481.9843444824219,
            525.9375,
            540.7239379882812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To give you an idea of what you can do with the tools you have learned so far, we'll evaluate a few recursively defined mathematical functions. A recursive definition is similar to a circular definition, in the sense that the definition contains a reference to the thing being defined. A truly circular definition is not very useful:</p>",
          "polygon": [
            [
              128.794921875,
              549.8373413085938
            ],
            [
              525.638671875,
              549.8373413085938
            ],
            [
              525.638671875,
              596.3829498291016
            ],
            [
              128.794921875,
              596.3829498291016
            ]
          ],
          "bbox": [
            128.794921875,
            549.8373413085938,
            525.638671875,
            596.3829498291016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>vorpal:</b> An adjective used to describe something that is vorpal.</p>",
          "polygon": [
            [
              128.0478515625,
              607.53515625
            ],
            [
              407.70611572265625,
              607.53515625
            ],
            [
              407.70611572265625,
              617.6449584960938
            ],
            [
              128.0478515625,
              617.6449584960938
            ]
          ],
          "bbox": [
            128.0478515625,
            607.53515625,
            407.70611572265625,
            617.6449584960938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/76/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you saw that definition in the dictionary, you might be annoyed. On the other hand, if you looked up the definition of the factorial function, denoted with the symbol !, you might get something like this:</p>",
          "polygon": [
            [
              128.6455078125,
              628.41796875
            ],
            [
              525.6033935546875,
              628.41796875
            ],
            [
              525.6033935546875,
              663.2959594726562
            ],
            [
              128.6455078125,
              663.2959594726562
            ]
          ],
          "bbox": [
            128.6455078125,
            628.41796875,
            525.6033935546875,
            663.2959594726562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/76/Equation/18",
          "block_type": "Equation",
          "html": "<p block-type=\"Equation\"><math display=\"block\">\\begin{array}{l}{{0!=1}}\\\\ {{n!=n(n-1)!!}}\\end{array}</math></p>",
          "polygon": [
            [
              303.908203125,
              674.7209014892578
            ],
            [
              368.9265441894531,
              674.7209014892578
            ],
            [
              368.9265441894531,
              700.8349685668945
            ],
            [
              303.908203125,
              700.8349685668945
            ]
          ],
          "bbox": [
            303.908203125,
            674.7209014892578,
            368.9265441894531,
            700.8349685668945
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "4": "/page/76/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/77/Page/214",
      "block_type": "Page",
      "html": "<content-ref src='/page/77/PageHeader/0'></content-ref><content-ref src='/page/77/PageHeader/20'></content-ref><content-ref src='/page/77/Text/1'></content-ref><content-ref src='/page/77/Text/2'></content-ref><content-ref src='/page/77/Text/3'></content-ref><content-ref src='/page/77/Code/4'></content-ref><content-ref src='/page/77/Text/5'></content-ref><content-ref src='/page/77/Code/6'></content-ref><content-ref src='/page/77/Text/7'></content-ref><content-ref src='/page/77/Code/8'></content-ref><content-ref src='/page/77/Text/9'></content-ref><content-ref src='/page/77/Text/10'></content-ref><content-ref src='/page/77/Text/11'></content-ref><content-ref src='/page/77/Text/12'></content-ref><content-ref src='/page/77/Text/13'></content-ref><content-ref src='/page/77/Text/14'></content-ref><content-ref src='/page/77/Text/15'></content-ref><content-ref src='/page/77/Text/16'></content-ref><content-ref src='/page/77/Text/17'></content-ref><content-ref src='/page/77/Text/18'></content-ref><content-ref src='/page/77/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/77/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              482.90625,
              60.76318359375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.2119140625,
              61.05322265625
            ],
            [
              97.716796875,
              61.05322265625
            ],
            [
              97.716796875,
              69.94775390625
            ],
            [
              86.2119140625,
              69.94775390625
            ]
          ],
          "bbox": [
            86.2119140625,
            61.05322265625,
            97.716796875,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This definition says that the factorial of 0 is 1, and the factorial of any other value, <i>n</i>, is <i>n</i> multiplied by the factorial of <i>n</i> − 1.</p>",
          "polygon": [
            [
              85.6142578125,
              88.66259765625
            ],
            [
              484.1015625,
              88.66259765625
            ],
            [
              484.1015625,
              110.99188232421875
            ],
            [
              85.6142578125,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.6142578125,
            88.66259765625,
            484.1015625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So 3! is 3 times 2!, which is 2 times 1!, which is 1 times 0!. Putting it all together, 3! equals 3 times 2 times 1 times 1, which is 6.</p>",
          "polygon": [
            [
              85.6142578125,
              122.203125
            ],
            [
              483.50390625,
              122.203125
            ],
            [
              483.50390625,
              144.53985595703125
            ],
            [
              85.6142578125,
              144.53985595703125
            ]
          ],
          "bbox": [
            85.6142578125,
            122.203125,
            483.50390625,
            144.53985595703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you can write a recursive definition of something, you can usually write a Python program to evaluate it. The first step is to decide what the parameters should be. In this case it should be clear that factorial takes an integer:</p>",
          "polygon": [
            [
              85.6142578125,
              155.5576171875
            ],
            [
              482.4033203125,
              155.5576171875
            ],
            [
              482.4033203125,
              190.28179931640625
            ],
            [
              85.6142578125,
              190.28179931640625
            ]
          ],
          "bbox": [
            85.6142578125,
            155.5576171875,
            482.4033203125,
            190.28179931640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Code/4",
          "block_type": "Code",
          "html": "<pre>def factorial(n):</pre>",
          "polygon": [
            [
              85.39013671875,
              197.033203125
            ],
            [
              177.802734375,
              197.033203125
            ],
            [
              177.802734375,
              207.51422119140625
            ],
            [
              85.39013671875,
              207.51422119140625
            ]
          ],
          "bbox": [
            85.39013671875,
            197.033203125,
            177.802734375,
            207.51422119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the argument happens to be 0, all we have to do is return 1:</p>",
          "polygon": [
            [
              85.24072265625,
              214.048828125
            ],
            [
              356.0177307128906,
              214.048828125
            ],
            [
              356.0177307128906,
              225.04583740234375
            ],
            [
              85.24072265625,
              225.04583740234375
            ]
          ],
          "bbox": [
            85.24072265625,
            214.048828125,
            356.0177307128906,
            225.04583740234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Code/6",
          "block_type": "Code",
          "html": "<pre>def factorial(n):\n    if n == 0:\n        return 1</pre>",
          "polygon": [
            [
              85.46484375,
              231.837890625
            ],
            [
              175.8603515625,
              231.837890625
            ],
            [
              175.8603515625,
              266.66729736328125
            ],
            [
              85.46484375,
              266.66729736328125
            ]
          ],
          "bbox": [
            85.46484375,
            231.837890625,
            175.8603515625,
            266.66729736328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Otherwise, and this is the interesting part, we have to make a recursive call to find the factorial of <i>n</i> − 1 and then multiply it by <i>n</i>:</p>",
          "polygon": [
            [
              85.3154296875,
              273.796875
            ],
            [
              482.4033203125,
              273.796875
            ],
            [
              482.4033203125,
              296.3928527832031
            ],
            [
              85.3154296875,
              296.3928527832031
            ]
          ],
          "bbox": [
            85.3154296875,
            273.796875,
            482.4033203125,
            296.3928527832031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Code/8",
          "block_type": "Code",
          "html": "<pre>def factorial(n):\n    if n == 0:\n        return 1\n    else:\n        recurse = factorial(n-1)\n        result = n * recurse\n        return result</pre>",
          "polygon": [
            [
              86.39997863769531,
              303.6626892089844
            ],
            [
              253.77166748046875,
              303.6626892089844
            ],
            [
              253.77166748046875,
              387.10546875
            ],
            [
              86.39997863769531,
              387.10546875
            ]
          ],
          "bbox": [
            86.39997863769531,
            303.6626892089844,
            253.77166748046875,
            387.10546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The flow of execution for this program is similar to the flow of countdown in Section <a href=\"#page-65-0\">5.8.</a> If we call factorial with the value 3:</p>",
          "polygon": [
            [
              86.0625,
              393.6796875
            ],
            [
              482.3974914550781,
              393.6796875
            ],
            [
              482.3974914550781,
              416.516845703125
            ],
            [
              86.0625,
              416.516845703125
            ]
          ],
          "bbox": [
            86.0625,
            393.6796875,
            482.3974914550781,
            416.516845703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since 3 is not 0, we take the second branch and calculate the factorial of n-1...</p>",
          "polygon": [
            [
              86.40000915527344,
              427.32421875
            ],
            [
              424.9329528808594,
              427.32421875
            ],
            [
              424.9329528808594,
              437.870849609375
            ],
            [
              86.40000915527344,
              437.870849609375
            ]
          ],
          "bbox": [
            86.40000915527344,
            427.32421875,
            424.9329528808594,
            437.870849609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since 2 is not 0, we take the second branch and calculate the factorial of n-1...</p>",
          "polygon": [
            [
              111.3070068359375,
              454.0078125
            ],
            [
              449.8399353027344,
              454.0078125
            ],
            [
              449.8399353027344,
              464.2598571777344
            ],
            [
              111.3070068359375,
              464.2598571777344
            ]
          ],
          "bbox": [
            111.3070068359375,
            454.0078125,
            449.8399353027344,
            464.2598571777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since 1 is not 0, we take the second branch and calculate the factorial of n-1...</p>",
          "polygon": [
            [
              130.2890625,
              472.56427001953125
            ],
            [
              435.578857421875,
              472.56427001953125
            ],
            [
              435.578857421875,
              495.0
            ],
            [
              130.2890625,
              495.0
            ]
          ],
          "bbox": [
            130.2890625,
            472.56427001953125,
            435.578857421875,
            495.0
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/13",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\">Since 0 <i>is</i> 0, we take the first branch and return 1 without making any more recursive calls.</p></blockquote>",
          "polygon": [
            [
              150.08642578125,
              502.734375
            ],
            [
              418.359375,
              502.734375
            ],
            [
              418.359375,
              525.1278686523438
            ],
            [
              150.08642578125,
              525.1278686523438
            ]
          ],
          "bbox": [
            150.08642578125,
            502.734375,
            418.359375,
            525.1278686523438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value (1) is multiplied by <i>n</i>, which is 1, and the result is returned.</p>",
          "polygon": [
            [
              131.484375,
              533.20556640625
            ],
            [
              435.69140625,
              533.20556640625
            ],
            [
              435.69140625,
              555.5358734130859
            ],
            [
              131.484375,
              555.5358734130859
            ]
          ],
          "bbox": [
            131.484375,
            533.20556640625,
            435.69140625,
            555.5358734130859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value (1) is multiplied by <i>n</i>, which is 2, and the result is returned.</p>",
          "polygon": [
            [
              111.30695343017578,
              563.6675720214844
            ],
            [
              447.1139221191406,
              563.6675720214844
            ],
            [
              447.1139221191406,
              573.8028717041016
            ],
            [
              111.30695343017578,
              573.8028717041016
            ]
          ],
          "bbox": [
            111.30695343017578,
            563.6675720214844,
            447.1139221191406,
            573.8028717041016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value (2) is multiplied by <i>n</i>, which is 3, and the result, 6, becomes the return value of the function call that started the whole process.</p>",
          "polygon": [
            [
              85.46484375,
              589.359375
            ],
            [
              482.90625,
              589.359375
            ],
            [
              482.90625,
              612.3858642578125
            ],
            [
              85.46484375,
              612.3858642578125
            ]
          ],
          "bbox": [
            85.46484375,
            589.359375,
            482.90625,
            612.3858642578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-78-2\">6.1</a> shows what the stack diagram looks like for this sequence of function calls.</p>",
          "polygon": [
            [
              85.3154296875,
              623.390625
            ],
            [
              462.488037109375,
              623.390625
            ],
            [
              462.488037109375,
              633.7398681640625
            ],
            [
              85.3154296875,
              633.7398681640625
            ]
          ],
          "bbox": [
            85.3154296875,
            623.390625,
            462.488037109375,
            633.7398681640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return values are shown being passed back up the stack. In each frame, the return value is the value of result, which is the product of n and recurse.</p>",
          "polygon": [
            [
              85.6142578125,
              645.1302642822266
            ],
            [
              484.1015625,
              645.1302642822266
            ],
            [
              484.1015625,
              667.2878723144531
            ],
            [
              85.6142578125,
              667.2878723144531
            ]
          ],
          "bbox": [
            85.6142578125,
            645.1302642822266,
            484.1015625,
            667.2878723144531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/77/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the last frame, the local variables recurse and result do not exist, because the branch that creates them does not execute.</p>",
          "polygon": [
            [
              85.763671875,
              678.5287017822266
            ],
            [
              483.50390625,
              678.5287017822266
            ],
            [
              483.50390625,
              700.8348693847656
            ],
            [
              85.763671875,
              700.8348693847656
            ]
          ],
          "bbox": [
            85.763671875,
            678.5287017822266,
            483.50390625,
            700.8348693847656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "4": "/page/76/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/78/Page/232",
      "block_type": "Page",
      "html": "<content-ref src='/page/78/PageHeader/0'></content-ref><content-ref src='/page/78/PageHeader/13'></content-ref><content-ref src='/page/78/FigureGroup/229'></content-ref><content-ref src='/page/78/SectionHeader/3'></content-ref><content-ref src='/page/78/Text/4'></content-ref><content-ref src='/page/78/Text/5'></content-ref><content-ref src='/page/78/Text/6'></content-ref><content-ref src='/page/78/Text/7'></content-ref><content-ref src='/page/78/Text/8'></content-ref><content-ref src='/page/78/SectionHeader/9'></content-ref><content-ref src='/page/78/Text/10'></content-ref><content-ref src='/page/78/Code/11'></content-ref><content-ref src='/page/78/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/78/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.8984375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              127.8984375,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.8984375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/78/PageHeader/13",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.66650390625
            ],
            [
              525.638671875,
              60.66650390625
            ],
            [
              525.638671875,
              70.33447265625
            ],
            [
              514.880859375,
              70.33447265625
            ]
          ],
          "bbox": [
            514.880859375,
            60.66650390625,
            525.638671875,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/78/FigureGroup/229",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/78/Figure/1'></content-ref><content-ref src='/page/78/Caption/2'></content-ref>",
          "polygon": [
            [
              200.8125,
              82.564453125
            ],
            [
              455.1559753417969,
              82.564453125
            ],
            [
              455.1559753417969,
              230.7529296875
            ],
            [
              200.8125,
              230.7529296875
            ]
          ],
          "bbox": [
            200.8125,
            82.564453125,
            455.1559753417969,
            230.7529296875
          ],
          "children": [
            {
              "id": "/page/78/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  200.8125,
                  82.564453125
                ],
                [
                  455.1559753417969,
                  82.564453125
                ],
                [
                  455.1559753417969,
                  207.087890625
                ],
                [
                  200.8125,
                  207.087890625
                ]
              ],
              "bbox": [
                200.8125,
                82.564453125,
                455.1559753417969,
                207.087890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "4": "/page/76/SectionHeader/12"
              },
              "images": {
                "/page/78/Figure/1": "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"
              }
            },
            {
              "id": "/page/78/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-78-2\"></span>Figure 6.1: Stack diagram.</p>",
              "polygon": [
                [
                  270.27001953125,
                  220.4296875
                ],
                [
                  385.787109375,
                  220.4296875
                ],
                [
                  385.787109375,
                  230.7529296875
                ],
                [
                  270.27001953125,
                  230.7529296875
                ]
              ],
              "bbox": [
                270.27001953125,
                220.4296875,
                385.787109375,
                230.7529296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "4": "/page/76/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/76/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/78/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-78-0\"></span><b>6.6 Leap of faith</b></h4>",
          "polygon": [
            [
              128.27197265625,
              251.32977294921875
            ],
            [
              245.56033325195312,
              251.32977294921875
            ],
            [
              245.56033325195312,
              265.67596435546875
            ],
            [
              128.27197265625,
              265.67596435546875
            ]
          ],
          "bbox": [
            128.27197265625,
            251.32977294921875,
            245.56033325195312,
            265.67596435546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/78/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/78/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Following the flow of execution is one way to read programs, but it can quickly become labyrinthine. An alternative is what I call the \"leap of faith.\" When you come to a function call, instead of following the flow of execution, you <i>assume</i> that the function works correctly and returns the right result.</p>",
          "polygon": [
            [
              128.9443359375,
              278.630859375
            ],
            [
              525.9375,
              278.630859375
            ],
            [
              525.9375,
              325.7549133300781
            ],
            [
              128.9443359375,
              325.7549133300781
            ]
          ],
          "bbox": [
            128.9443359375,
            278.630859375,
            525.9375,
            325.7549133300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/78/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/78/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In fact, you are already practicing this leap of faith when you use built-in functions. When you call math.cos or math.exp, you don't examine the bodies of those functions. You just assume that they work because the people who wrote the built-in functions were good programmers.</p>",
          "polygon": [
            [
              128.49609375,
              336.251953125
            ],
            [
              526.53515625,
              336.251953125
            ],
            [
              526.53515625,
              383.3229064941406
            ],
            [
              128.49609375,
              383.3229064941406
            ]
          ],
          "bbox": [
            128.49609375,
            336.251953125,
            526.53515625,
            383.3229064941406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/78/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/78/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The same is true when you call one of your own functions. For example, in Section <a href=\"#page-75-1\">6.4,</a> we wrote a function called is_divisible that determines whether one number is divisible by another. Once we have convinced ourselves that this function is correct—by examining the code and testing—we can use the function without looking at the body again.</p>",
          "polygon": [
            [
              129.392578125,
              393.486328125
            ],
            [
              526.236328125,
              393.486328125
            ],
            [
              526.236328125,
              440.89190673828125
            ],
            [
              129.392578125,
              440.89190673828125
            ]
          ],
          "bbox": [
            129.392578125,
            393.486328125,
            526.236328125,
            440.89190673828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/78/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/78/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The same is true of recursive programs. When you get to the recursive call, instead of following the flow of execution, you should assume that the recursive call works (yields the correct result) and then ask yourself, \"Assuming that I can find the factorial of <i>n</i> − 1, can I compute the factorial of <i>n</i>?\" In this case, it is clear that you can, by multiplying by <i>n</i>.</p>",
          "polygon": [
            [
              128.6455078125,
              451.30078125
            ],
            [
              526.53515625,
              451.30078125
            ],
            [
              526.53515625,
              498.48046875
            ],
            [
              128.6455078125,
              498.48046875
            ]
          ],
          "bbox": [
            128.6455078125,
            451.30078125,
            526.53515625,
            498.48046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/78/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/78/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Of course, it's a bit strange to assume that the function works correctly when you haven't finished writing it, but that's why it's called a leap of faith!</p>",
          "polygon": [
            [
              128.9443359375,
              508.53515625
            ],
            [
              525.9375,
              508.53515625
            ],
            [
              525.9375,
              531.73828125
            ],
            [
              128.9443359375,
              531.73828125
            ]
          ],
          "bbox": [
            128.9443359375,
            508.53515625,
            525.9375,
            531.73828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "4": "/page/78/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/78/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-78-1\"></span><b>6.7 One more example</b></h3>",
          "polygon": [
            [
              128.27197265625,
              562.2890625
            ],
            [
              286.27734375,
              562.2890625
            ],
            [
              286.27734375,
              577.8719329833984
            ],
            [
              128.27197265625,
              577.8719329833984
            ]
          ],
          "bbox": [
            128.27197265625,
            562.2890625,
            286.27734375,
            577.8719329833984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/78/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">After factorial, the most common example of a recursively defined mathematical function is fibonacci, which has the following definition (see <a href=\"http://en.wikipedia.org/wiki/Fibonacci_number\">http://en.wikipedia.org/</a> <a href=\"http://en.wikipedia.org/wiki/Fibonacci_number\">wiki/Fibonacci_number</a>):</p>",
          "polygon": [
            [
              129.09375,
              590.90625
            ],
            [
              525.9375,
              590.90625
            ],
            [
              525.9375,
              625.7568969726562
            ],
            [
              129.09375,
              625.7568969726562
            ]
          ],
          "bbox": [
            129.09375,
            590.90625,
            525.9375,
            625.7568969726562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/78/Code/11",
          "block_type": "Code",
          "html": "<pre>fibonacci(0) = 0\nfibonacci(1) = 1\nfibonacci(n) = fibonacci(n − 1) + fibonacci(n − 2)</pre>",
          "polygon": [
            [
              226.51171875,
              637.1818389892578
            ],
            [
              450.03515625,
              637.1818389892578
            ],
            [
              450.03515625,
              678.4789047241211
            ],
            [
              226.51171875,
              678.4789047241211
            ]
          ],
          "bbox": [
            226.51171875,
            637.1818389892578,
            450.03515625,
            678.4789047241211
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/78/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Translated into Python, it looks like this:</p>",
          "polygon": [
            [
              129.46728515625,
              689.90625
            ],
            [
              306.896484375,
              689.90625
            ],
            [
              306.896484375,
              700.8349075317383
            ],
            [
              129.46728515625,
              700.8349075317383
            ]
          ],
          "bbox": [
            129.46728515625,
            689.90625,
            306.896484375,
            700.8349075317383
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "3": "/page/78/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/79/Page/191",
      "block_type": "Page",
      "html": "<content-ref src='/page/79/PageHeader/0'></content-ref><content-ref src='/page/79/PageHeader/14'></content-ref><content-ref src='/page/79/Code/1'></content-ref><content-ref src='/page/79/Text/2'></content-ref><content-ref src='/page/79/SectionHeader/3'></content-ref><content-ref src='/page/79/Text/4'></content-ref><content-ref src='/page/79/Code/5'></content-ref><content-ref src='/page/79/Text/6'></content-ref><content-ref src='/page/79/Text/7'></content-ref><content-ref src='/page/79/Text/8'></content-ref><content-ref src='/page/79/Text/9'></content-ref><content-ref src='/page/79/Text/10'></content-ref><content-ref src='/page/79/Code/11'></content-ref><content-ref src='/page/79/Text/12'></content-ref><content-ref src='/page/79/Code/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/79/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.56982421875
            ],
            [
              482.607421875,
              60.56982421875
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.56982421875,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/79/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.2119140625,
              60.521484375
            ],
            [
              97.716796875,
              60.521484375
            ],
            [
              97.716796875,
              69.99609375
            ],
            [
              86.2119140625,
              69.99609375
            ]
          ],
          "bbox": [
            86.2119140625,
            60.521484375,
            97.716796875,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/79/Code/1",
          "block_type": "Code",
          "html": "<pre>def fibonacci (n):\n    if n == 0:\n        return 0\n    elif n == 1:\n        return 1\n    else:\n        return fibonacci(n-1) + fibonacci(n-2)</pre>",
          "polygon": [
            [
              86.4000015258789,
              88.22021484375
            ],
            [
              326.9967956542969,
              88.22021484375
            ],
            [
              326.9967956542969,
              171.8143310546875
            ],
            [
              86.4000015258789,
              171.8143310546875
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.22021484375,
            326.9967956542969,
            171.8143310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you try to follow the flow of execution here, even for fairly small values of <i>n</i>, your head explodes. But according to the leap of faith, if you assume that the two recursive calls work correctly, then it is clear that you get the right result by adding them together.</p>",
          "polygon": [
            [
              85.46484375,
              175.8603515625
            ],
            [
              482.4042053222656,
              175.8603515625
            ],
            [
              482.4042053222656,
              211.50189208984375
            ],
            [
              85.46484375,
              211.50189208984375
            ]
          ],
          "bbox": [
            85.46484375,
            175.8603515625,
            482.4042053222656,
            211.50189208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/79/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-79-0\"></span><b>6.8 Checking types</b></h4>",
          "polygon": [
            [
              85.39013671875,
              239.4217529296875
            ],
            [
              220.27874755859375,
              239.4217529296875
            ],
            [
              220.27874755859375,
              253.7679443359375
            ],
            [
              85.39013671875,
              253.7679443359375
            ]
          ],
          "bbox": [
            85.39013671875,
            239.4217529296875,
            220.27874755859375,
            253.7679443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">What happens if we call factorial and give it 1.5 as an argument?</p>",
          "polygon": [
            [
              85.98779296875,
              264.708984375
            ],
            [
              381.00238037109375,
              264.708984375
            ],
            [
              381.00238037109375,
              275.0599365234375
            ],
            [
              85.98779296875,
              275.0599365234375
            ]
          ],
          "bbox": [
            85.98779296875,
            264.708984375,
            381.00238037109375,
            275.0599365234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; factorial(1.5)</pre>",
          "polygon": [
            [
              85.53955078125,
              279.791015625
            ],
            [
              180.55654907226562,
              279.791015625
            ],
            [
              180.55654907226562,
              290.059326171875
            ],
            [
              85.53955078125,
              290.059326171875
            ]
          ],
          "bbox": [
            85.53955078125,
            279.791015625,
            180.55654907226562,
            290.059326171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">RuntimeError: Maximum recursion depth exceeded</p>",
          "polygon": [
            [
              85.763671875,
              292.291748046875
            ],
            [
              327.515625,
              292.291748046875
            ],
            [
              327.515625,
              302.25433349609375
            ],
            [
              85.763671875,
              302.25433349609375
            ]
          ],
          "bbox": [
            85.763671875,
            292.291748046875,
            327.515625,
            302.25433349609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It looks like an infinite recursion. But how can that be? There is a base case—when n == 0. But if n is not an integer, we can <i>miss</i> the base case and recurse forever.</p>",
          "polygon": [
            [
              85.763671875,
              307.44073486328125
            ],
            [
              482.3996887207031,
              307.44073486328125
            ],
            [
              482.3996887207031,
              329.7478942871094
            ],
            [
              85.763671875,
              329.7478942871094
            ]
          ],
          "bbox": [
            85.763671875,
            307.44073486328125,
            482.3996887207031,
            329.7478942871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the first recursive call, the value of n is 0.5. In the next, it is -0.5. From there, it gets smaller (more negative), but it will never be 0.</p>",
          "polygon": [
            [
              85.6142578125,
              338.7567443847656
            ],
            [
              482.90625,
              338.7567443847656
            ],
            [
              482.90625,
              361.0628967285156
            ],
            [
              85.6142578125,
              361.0628967285156
            ]
          ],
          "bbox": [
            85.6142578125,
            338.7567443847656,
            482.90625,
            361.0628967285156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We have two choices. We can try to generalize the factorial function to work with floating-point numbers, or we can make factorial check the type of its argument. The first option is called the gamma function and it's a little beyond the scope of this book. So we'll go for the second.</p>",
          "polygon": [
            [
              85.763671875,
              369.896484375
            ],
            [
              482.607421875,
              369.896484375
            ],
            [
              482.607421875,
              416.76690673828125
            ],
            [
              85.763671875,
              416.76690673828125
            ]
          ],
          "bbox": [
            85.763671875,
            369.896484375,
            482.607421875,
            416.76690673828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We can use the built-in function isinstance to verify the type of the argument. While we're at it, we can also make sure the argument is positive:</p>",
          "polygon": [
            [
              85.46484375,
              425.390625
            ],
            [
              482.607421875,
              425.390625
            ],
            [
              482.607421875,
              448.0829162597656
            ],
            [
              85.46484375,
              448.0829162597656
            ]
          ],
          "bbox": [
            85.46484375,
            425.390625,
            482.607421875,
            448.0829162597656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Code/11",
          "block_type": "Code",
          "html": "<pre>def factorial (n):\n    if not isinstance(n, int):\n        print 'Factorial is only defined for integers.'\n        return None\n    elif n &lt; 0:\n        print 'Factorial is not defined for negative integers.'\n        return None\n    elif n == 0:\n        return 1\n    else:\n        return n * factorial(n-1)</pre>",
          "polygon": [
            [
              86.39997863769531,
              453.1207580566406
            ],
            [
              415.8353576660156,
              453.1207580566406
            ],
            [
              415.8353576660156,
              585.87890625
            ],
            [
              86.39997863769531,
              585.87890625
            ]
          ],
          "bbox": [
            86.39997863769531,
            453.1207580566406,
            415.8353576660156,
            585.87890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first base case handles nonintegers; the second catches negative integers. In both cases, the program prints an error message and returns None to indicate that something went wrong:</p>",
          "polygon": [
            [
              85.6142578125,
              590.1328125
            ],
            [
              482.90625,
              590.1328125
            ],
            [
              482.90625,
              624.7139282226562
            ],
            [
              85.6142578125,
              624.7139282226562
            ]
          ],
          "bbox": [
            85.6142578125,
            590.1328125,
            482.90625,
            624.7139282226562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/79/Code/13",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; factorial('fred')\nFactorial is only defined for integers.\nNone\n&gt;&gt;&gt; factorial(-2)\nFactorial is not defined for negative integers.\nNone</pre>",
          "polygon": [
            [
              85.68896484375,
              627.64453125
            ],
            [
              333.791015625,
              627.64453125
            ],
            [
              333.791015625,
              700.6863708496094
            ],
            [
              85.68896484375,
              700.6863708496094
            ]
          ],
          "bbox": [
            85.68896484375,
            627.64453125,
            333.791015625,
            700.6863708496094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "3": "/page/78/SectionHeader/9",
        "4": "/page/79/SectionHeader/3"
      },
      "images": null
    },
    {
      "id": "/page/80/Page/171",
      "block_type": "Page",
      "html": "<content-ref src='/page/80/PageHeader/0'></content-ref><content-ref src='/page/80/PageHeader/15'></content-ref><content-ref src='/page/80/Text/1'></content-ref><content-ref src='/page/80/Text/2'></content-ref><content-ref src='/page/80/Text/3'></content-ref><content-ref src='/page/80/SectionHeader/4'></content-ref><content-ref src='/page/80/Text/5'></content-ref><content-ref src='/page/80/ListGroup/170'></content-ref><content-ref src='/page/80/Text/9'></content-ref><content-ref src='/page/80/Text/10'></content-ref><content-ref src='/page/80/Text/11'></content-ref><content-ref src='/page/80/Text/12'></content-ref><content-ref src='/page/80/Code/13'></content-ref><content-ref src='/page/80/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/80/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.49609375,
              60.95654296875
            ],
            [
              525.6033935546875,
              60.95654296875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.49609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.49609375,
            60.95654296875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/80/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.1796875,
              60.8115234375
            ],
            [
              525.33984375,
              60.8115234375
            ],
            [
              525.33984375,
              70.189453125
            ],
            [
              515.1796875,
              70.189453125
            ]
          ],
          "bbox": [
            515.1796875,
            60.8115234375,
            525.33984375,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we get past both checks, then we know that <i>n</i> is positive or zero, so we can prove that the recursion terminates.</p>",
          "polygon": [
            [
              128.49609375,
              88.66259765625
            ],
            [
              525.6028442382812,
              88.66259765625
            ],
            [
              525.6028442382812,
              110.99188232421875
            ],
            [
              128.49609375,
              110.99188232421875
            ]
          ],
          "bbox": [
            128.49609375,
            88.66259765625,
            525.6028442382812,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This program demonstrates a pattern sometimes called a <b>guardian</b>. The first two conditionals act as guardians, protecting the code that follows from values that might cause an error. The guardians make it possible to prove the correctness of the code.</p>",
          "polygon": [
            [
              129.392578125,
              122.783203125
            ],
            [
              525.638671875,
              122.783203125
            ],
            [
              525.638671875,
              157.35186767578125
            ],
            [
              129.392578125,
              157.35186767578125
            ]
          ],
          "bbox": [
            129.392578125,
            122.783203125,
            525.638671875,
            157.35186767578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Section <a href=\"#page-125-0\">11.3</a> we will see a more flexible alternative to printing an error message: raising an exception.</p>",
          "polygon": [
            [
              129.09375,
              169.0927734375
            ],
            [
              525.6033935546875,
              169.0927734375
            ],
            [
              525.6033935546875,
              191.51690673828125
            ],
            [
              129.09375,
              191.51690673828125
            ]
          ],
          "bbox": [
            129.09375,
            169.0927734375,
            525.6033935546875,
            191.51690673828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/79/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/80/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-80-0\"></span><b>6.9 Debugging</b></h4>",
          "polygon": [
            [
              128.27197265625,
              226.3597412109375
            ],
            [
              236.373046875,
              226.3597412109375
            ],
            [
              236.373046875,
              240.92578125
            ],
            [
              128.27197265625,
              240.92578125
            ]
          ],
          "bbox": [
            128.27197265625,
            226.3597412109375,
            236.373046875,
            240.92578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Breaking a large program into smaller functions creates natural checkpoints for debugging. If a function is not working, there are three possibilities to consider:</p>",
          "polygon": [
            [
              129.392578125,
              255.041015625
            ],
            [
              525.6034545898438,
              255.041015625
            ],
            [
              525.6034545898438,
              277.77484130859375
            ],
            [
              129.392578125,
              277.77484130859375
            ]
          ],
          "bbox": [
            129.392578125,
            255.041015625,
            525.6034545898438,
            277.77484130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/80/ListGroup/170",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/80/ListItem/6'></content-ref><content-ref src='/page/80/ListItem/7'></content-ref><content-ref src='/page/80/ListItem/8'></content-ref></ul></p>",
          "polygon": [
            [
              143.48800659179688,
              294.486328125
            ],
            [
              525.6033935546875,
              294.486328125
            ],
            [
              525.6033935546875,
              364.0867919921875
            ],
            [
              143.48800659179688,
              364.0867919921875
            ]
          ],
          "bbox": [
            143.48800659179688,
            294.486328125,
            525.6033935546875,
            364.0867919921875
          ],
          "children": [
            {
              "id": "/page/80/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> There is something wrong with the arguments the function is getting; a precondition is violated.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  294.486328125
                ],
                [
                  525.6033935546875,
                  294.486328125
                ],
                [
                  525.6033935546875,
                  317.689453125
                ],
                [
                  143.48800659179688,
                  317.689453125
                ]
              ],
              "bbox": [
                143.48800659179688,
                294.486328125,
                525.6033935546875,
                317.689453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "3": "/page/78/SectionHeader/9",
                "4": "/page/80/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/80/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> There is something wrong with the function; a postcondition is violated.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  330.064453125
                ],
                [
                  472.074462890625,
                  330.064453125
                ],
                [
                  472.074462890625,
                  340.7947998046875
                ],
                [
                  143.48800659179688,
                  340.7947998046875
                ]
              ],
              "bbox": [
                143.48800659179688,
                330.064453125,
                472.074462890625,
                340.7947998046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "3": "/page/78/SectionHeader/9",
                "4": "/page/80/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/80/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> There is something wrong with the return value or the way it is being used.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  353.267578125
                ],
                [
                  486.3309631347656,
                  353.267578125
                ],
                [
                  486.3309631347656,
                  364.0867919921875
                ],
                [
                  143.48800659179688,
                  364.0867919921875
                ]
              ],
              "bbox": [
                143.48800659179688,
                353.267578125,
                486.3309631347656,
                364.0867919921875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "3": "/page/78/SectionHeader/9",
                "4": "/page/80/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/80/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To rule out the first possibility, you can add a print statement at the beginning of the function and display the values of the parameters (and maybe their types). Or you can write code that checks the preconditions explicitly.</p>",
          "polygon": [
            [
              128.9443359375,
              380.53125
            ],
            [
              525.9375,
              380.53125
            ],
            [
              525.9375,
              416.109375
            ],
            [
              128.9443359375,
              416.109375
            ]
          ],
          "bbox": [
            128.9443359375,
            380.53125,
            525.9375,
            416.109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the parameters look good, add a print statement before each return statement that displays the return value. If possible, check the result by hand. Consider calling the function with values that make it easy to check the result (as in Section <a href=\"#page-73-0\">6.2)</a>.</p>",
          "polygon": [
            [
              128.49609375,
              427.32421875
            ],
            [
              525.6033935546875,
              427.32421875
            ],
            [
              525.6033935546875,
              462.3677978515625
            ],
            [
              128.49609375,
              462.3677978515625
            ]
          ],
          "bbox": [
            128.49609375,
            427.32421875,
            525.6033935546875,
            462.3677978515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the function seems to be working, look at the function call to make sure the return value is being used correctly (or used at all!).</p>",
          "polygon": [
            [
              128.6455078125,
              474.1171875
            ],
            [
              525.9375,
              474.1171875
            ],
            [
              525.9375,
              496.546875
            ],
            [
              128.6455078125,
              496.546875
            ]
          ],
          "bbox": [
            128.6455078125,
            474.1171875,
            525.9375,
            496.546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Adding print statements at the beginning and end of a function can help make the flow of execution more visible. For example, here is a version of factorial with print statements:</p>",
          "polygon": [
            [
              128.6455078125,
              508.542236328125
            ],
            [
              525.9375,
              508.542236328125
            ],
            [
              525.9375,
              530.6988220214844
            ],
            [
              128.6455078125,
              530.6988220214844
            ]
          ],
          "bbox": [
            128.6455078125,
            508.542236328125,
            525.9375,
            530.6988220214844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/80/Code/13",
          "block_type": "Code",
          "html": "<pre>def factorial(n):\n    space = ' ' * (4 * n)\n    print space, 'factorial', n\n    if n == 0:\n        print space, 'returning 1'\n        return 1\n    else:\n        recurse = factorial(n-1)\n        result = n * recurse\n        print space, 'returning', result\n        return result</pre>",
          "polygon": [
            [
              129.60003662109375,
              537.3553619384766
            ],
            [
              338.77398681640625,
              537.3553619384766
            ],
            [
              338.77398681640625,
              670.4922790527344
            ],
            [
              129.60003662109375,
              670.4922790527344
            ]
          ],
          "bbox": [
            129.60003662109375,
            537.3553619384766,
            338.77398681640625,
            670.4922790527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/80/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">space is a string of space characters that controls the indentation of the output. Here is the result of factorial(5) :</p>",
          "polygon": [
            [
              127.4501953125,
              678.3046875
            ],
            [
              525.599609375,
              678.3046875
            ],
            [
              525.599609375,
              700.834846496582
            ],
            [
              127.4501953125,
              700.834846496582
            ]
          ],
          "bbox": [
            127.4501953125,
            678.3046875,
            525.599609375,
            700.834846496582
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "3": "/page/78/SectionHeader/9",
        "4": "/page/80/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/81/Page/165",
      "block_type": "Page",
      "html": "<content-ref src='/page/81/PageHeader/0'></content-ref><content-ref src='/page/81/PageHeader/14'></content-ref><content-ref src='/page/81/Code/1'></content-ref><content-ref src='/page/81/Text/2'></content-ref><content-ref src='/page/81/SectionHeader/3'></content-ref><content-ref src='/page/81/ListGroup/163'></content-ref><content-ref src='/page/81/SectionHeader/10'></content-ref><content-ref src='/page/81/Text/11'></content-ref><content-ref src='/page/81/Code/12'></content-ref><content-ref src='/page/81/Code/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/81/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.47314453125
            ],
            [
              482.607421875,
              60.47314453125
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.47314453125,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/81/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.94189453125,
              59.748046875
            ],
            [
              96.29736328125,
              59.748046875
            ],
            [
              96.29736328125,
              70.0927734375
            ],
            [
              84.94189453125,
              70.0927734375
            ]
          ],
          "bbox": [
            84.94189453125,
            59.748046875,
            96.29736328125,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/81/Code/1",
          "block_type": "Code",
          "html": "<pre>factorial 5\n                 factorial 4\n             factorial 3\n        factorial 2\n    factorial 1\nfactorial 0\nreturning 1\n    returning 1\n        returning 2\n             returning 6\n                 returning 24\n                     returning 120</pre>",
          "polygon": [
            [
              91.21728515625,
              85.89990234375
            ],
            [
              270.73828125,
              85.89990234375
            ],
            [
              270.73828125,
              238.60546875
            ],
            [
              91.21728515625,
              238.60546875
            ]
          ],
          "bbox": [
            91.21728515625,
            85.89990234375,
            270.73828125,
            238.60546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/81/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are confused about the flow of execution, this kind of output can be helpful. It takes some time to develop effective scaffolding, but a little bit of scaffolding can save a lot of debugging.</p>",
          "polygon": [
            [
              86.2119140625,
              238.21875
            ],
            [
              482.4032897949219,
              238.21875
            ],
            [
              482.4032897949219,
              273.41015625
            ],
            [
              86.2119140625,
              273.41015625
            ]
          ],
          "bbox": [
            86.2119140625,
            238.21875,
            482.4032897949219,
            273.41015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "3": "/page/78/SectionHeader/9",
            "4": "/page/80/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/81/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-81-0\"></span><b>6.10 Glossary</b></h2>",
          "polygon": [
            [
              86.39997863769531,
              301.25390625
            ],
            [
              184.02586364746094,
              301.25390625
            ],
            [
              184.02586364746094,
              316.90087890625
            ],
            [
              86.39997863769531,
              316.90087890625
            ]
          ],
          "bbox": [
            86.39997863769531,
            301.25390625,
            184.02586364746094,
            316.90087890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/81/ListGroup/163",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/81/ListItem/4'></content-ref><content-ref src='/page/81/ListItem/5'></content-ref><content-ref src='/page/81/ListItem/6'></content-ref><content-ref src='/page/81/ListItem/7'></content-ref><content-ref src='/page/81/ListItem/8'></content-ref><content-ref src='/page/81/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              85.763671875,
              325.6171875
            ],
            [
              482.90625,
              325.6171875
            ],
            [
              482.90625,
              509.31787109375
            ],
            [
              85.763671875,
              509.31787109375
            ]
          ],
          "bbox": [
            85.763671875,
            325.6171875,
            482.90625,
            509.31787109375
          ],
          "children": [
            {
              "id": "/page/81/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>temporary variable:</b> A variable used to store an intermediate value in a complex calculation.</li>",
              "polygon": [
                [
                  86.39997863769531,
                  325.6171875
                ],
                [
                  482.4025573730469,
                  325.6171875
                ],
                [
                  482.4025573730469,
                  348.0168151855469
                ],
                [
                  86.39997863769531,
                  348.0168151855469
                ]
              ],
              "bbox": [
                86.39997863769531,
                325.6171875,
                482.4025573730469,
                348.0168151855469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/81/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>dead code:</b> Part of a program that can never be executed, often because it appears after a return statement.</li>",
              "polygon": [
                [
                  86.361328125,
                  357.71484375
                ],
                [
                  482.90625,
                  357.71484375
                ],
                [
                  482.90625,
                  380.2768249511719
                ],
                [
                  86.361328125,
                  380.2768249511719
                ]
              ],
              "bbox": [
                86.361328125,
                357.71484375,
                482.90625,
                380.2768249511719
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/81/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">None<b>:</b> A special value returned by functions that have no return statement or a return statement without an argument.</li>",
              "polygon": [
                [
                  86.0625,
                  389.619140625
                ],
                [
                  482.3979187011719,
                  389.619140625
                ],
                [
                  482.3979187011719,
                  412.5368347167969
                ],
                [
                  86.0625,
                  412.5368347167969
                ]
              ],
              "bbox": [
                86.0625,
                389.619140625,
                482.3979187011719,
                412.5368347167969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/81/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>incremental development:</b> A program development plan intended to avoid debugging by adding and testing only a small amount of code at a time.</li>",
              "polygon": [
                [
                  85.9130859375,
                  421.5234375
                ],
                [
                  482.4027099609375,
                  421.5234375
                ],
                [
                  482.4027099609375,
                  444.7968444824219
                ],
                [
                  85.9130859375,
                  444.7968444824219
                ]
              ],
              "bbox": [
                85.9130859375,
                421.5234375,
                482.4027099609375,
                444.7968444824219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/81/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>scaffolding:</b> Code that is used during program development but is not part of the final version.</li>",
              "polygon": [
                [
                  85.763671875,
                  454.0078125
                ],
                [
                  482.40289306640625,
                  454.0078125
                ],
                [
                  482.40289306640625,
                  477.0568542480469
                ],
                [
                  85.763671875,
                  477.0568542480469
                ]
              ],
              "bbox": [
                85.763671875,
                454.0078125,
                482.40289306640625,
                477.0568542480469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/81/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>guardian:</b> A programming pattern that uses a conditional statement to check for and handle circumstances that might cause an error.</li>",
              "polygon": [
                [
                  86.0625,
                  486.4921875
                ],
                [
                  482.4032287597656,
                  486.4921875
                ],
                [
                  482.4032287597656,
                  509.31787109375
                ],
                [
                  86.0625,
                  509.31787109375
                ]
              ],
              "bbox": [
                86.0625,
                486.4921875,
                482.4032287597656,
                509.31787109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/81/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-81-1\"></span><b>6.11 Exercises</b></h4>",
          "polygon": [
            [
              85.9130859375,
              538.3125
            ],
            [
              185.60397338867188,
              538.3125
            ],
            [
              185.60397338867188,
              552.8439178466797
            ],
            [
              85.9130859375,
              552.8439178466797
            ]
          ],
          "bbox": [
            85.9130859375,
            538.3125,
            185.60397338867188,
            552.8439178466797
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/81/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 6.4.</b> <i>Draw a stack diagram for the following program. What does the program print?</i> <i>Solution:</i> <a href=\"http://thinkpython.com/code/stack_diagram.py\">http:</a> <a href=\"http://thinkpython.com/code/stack_diagram.py\">//</a> <a href=\"http://thinkpython.com/code/stack_diagram.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/stack_diagram.py\">com/</a> <a href=\"http://thinkpython.com/code/stack_diagram.py\">code/</a> <a href=\"http://thinkpython.com/code/stack_diagram.py\">stack_</a> <a href=\"http://thinkpython.com/code/stack_diagram.py\">diagram.</a> <a href=\"http://thinkpython.com/code/stack_diagram.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              86.0625,
              564.22265625
            ],
            [
              482.3963317871094,
              564.22265625
            ],
            [
              482.3963317871094,
              587.0581817626953
            ],
            [
              86.0625,
              587.0581817626953
            ]
          ],
          "bbox": [
            86.0625,
            564.22265625,
            482.3963317871094,
            587.0581817626953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/81/Code/12",
          "block_type": "Code",
          "html": "<pre>def b(z):\n    prod = a(z, z)\n    print z, prod\n    return prod\ndef a(x, y):</pre>",
          "polygon": [
            [
              85.3154296875,
              592.06640625
            ],
            [
              180.54110717773438,
              592.06640625
            ],
            [
              180.54110717773438,
              664.1023330688477
            ],
            [
              85.3154296875,
              664.1023330688477
            ]
          ],
          "bbox": [
            85.3154296875,
            592.06640625,
            180.54110717773438,
            664.1023330688477
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/81/Code/13",
          "block_type": "Code",
          "html": "<pre>x = x + 1\nreturn x * y</pre>",
          "polygon": [
            [
              85.68896484375,
              658.96875
            ],
            [
              170.0803680419922,
              658.96875
            ],
            [
              170.0803680419922,
              689.90625
            ],
            [
              85.68896484375,
              689.90625
            ]
          ],
          "bbox": [
            85.68896484375,
            658.96875,
            170.0803680419922,
            689.90625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "2": "/page/81/SectionHeader/3",
        "4": "/page/81/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/82/Page/367",
      "block_type": "Page",
      "html": "<content-ref src='/page/82/PageHeader/0'></content-ref><content-ref src='/page/82/PageHeader/16'></content-ref><content-ref src='/page/82/Code/1'></content-ref><content-ref src='/page/82/Equation/2'></content-ref><content-ref src='/page/82/Text/3'></content-ref><content-ref src='/page/82/Text/4'></content-ref><content-ref src='/page/82/Text/5'></content-ref><content-ref src='/page/82/Code/6'></content-ref><content-ref src='/page/82/Code/7'></content-ref><content-ref src='/page/82/Code/362'></content-ref><content-ref src='/page/82/Text/9'></content-ref><content-ref src='/page/82/ListGroup/363'></content-ref><content-ref src='/page/82/Text/12'></content-ref><content-ref src='/page/82/Text/13'></content-ref><content-ref src='/page/82/Text/14'></content-ref><content-ref src='/page/82/TextInlineMath/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/82/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.37548828125,
              60.908203125
            ],
            [
              525.6033935546875,
              60.908203125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              127.37548828125,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.37548828125,
            60.908203125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.1796875,
              61.294921875
            ],
            [
              525.33984375,
              61.294921875
            ],
            [
              525.33984375,
              70.6728515625
            ],
            [
              515.1796875,
              70.6728515625
            ]
          ],
          "bbox": [
            515.1796875,
            61.294921875,
            525.33984375,
            70.6728515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Code/1",
          "block_type": "Code",
          "html": "<pre>def c(x, y, z):\n    total = x + y + z\n    square = b(total)**2\n    return square\nx = 1\ny = x + 1\nprint c(x, y+3, x+y)\nExercise 6.5. The Ackermann function, A(m, n), is defined:</pre>",
          "polygon": [
            [
              128.57080078125,
              87.3984375
            ],
            [
              379.810546875,
              87.3984375
            ],
            [
              379.810546875,
              196.3529052734375
            ],
            [
              128.57080078125,
              196.3529052734375
            ]
          ],
          "bbox": [
            128.57080078125,
            87.3984375,
            379.810546875,
            196.3529052734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Equation/2",
          "block_type": "Equation",
          "html": "<span id=\"page-82-1\"></span><p block-type=\"Equation\"><math display=\"block\">A(m,n) = \\begin{cases} n+1 &amp; \\text{if } m = 0\\\\ A(m-1, 1) &amp; \\text{if } m &gt; 0 \\text{ and } n = 0\\\\ A(m-1, A(m, n-1)) &amp; \\text{if } m &gt; 0 \\text{ and } n &gt; 0 \\end{cases}</math></p>",
          "polygon": [
            [
              194.23828125,
              224.29632568359375
            ],
            [
              440.3678283691406,
              224.29632568359375
            ],
            [
              440.3678283691406,
              267.135986328125
            ],
            [
              194.23828125,
              267.135986328125
            ]
          ],
          "bbox": [
            194.23828125,
            224.29632568359375,
            440.3678283691406,
            267.135986328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>See</i> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">//</a> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">Ackermann_</a> <a href=\"http://en.wikipedia.org/wiki/Ackermann_function\">function</a> <i>. Write a function named</i> ack <i>that evaluates Ackermann's function. Use your function to evaluate</i> ack(3, 4)<i>, which should be</i> <i>125. What happens for larger values of</i> m <i>and</i> n<i>? Solution:</i> <a href=\"http://thinkpython.com/code/ackermann.py\">http:</a> <a href=\"http://thinkpython.com/code/ackermann.py\">//</a> <a href=\"http://thinkpython.com/code/ackermann.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/ackermann.py\">com/</a> <a href=\"http://thinkpython.com/code/ackermann.py\">code/</a> <a href=\"http://thinkpython.com/code/ackermann.py\">ackermann.</a> <a href=\"http://thinkpython.com/code/ackermann.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.0478515625,
              278.7479248046875
            ],
            [
              525.6039428710938,
              278.7479248046875
            ],
            [
              525.6039428710938,
              325.3742370605469
            ],
            [
              128.0478515625,
              325.3742370605469
            ]
          ],
          "bbox": [
            128.0478515625,
            278.7479248046875,
            525.6039428710938,
            325.3742370605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-82-0\"></span><b>Exercise 6.6.</b> <i>A palindrome is a word that is spelled the same backward and forward, like \"noon\"</i> <i>and \"redivider\". Recursively, a word is a palindrome if the first and last letters are the same and the</i> <i>middle is a palindrome.</i></p>",
          "polygon": [
            [
              129.2431640625,
              327.357421875
            ],
            [
              525.6033325195312,
              327.357421875
            ],
            [
              525.6033325195312,
              361.9572448730469
            ],
            [
              129.2431640625,
              361.9572448730469
            ]
          ],
          "bbox": [
            129.2431640625,
            327.357421875,
            525.6033325195312,
            361.9572448730469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The following are functions that take a string argument and return the first, last, and middle letters:</i></p>",
          "polygon": [
            [
              129.392578125,
              371.056640625
            ],
            [
              525.6033325195312,
              371.056640625
            ],
            [
              525.6033325195312,
              381.1552429199219
            ],
            [
              129.392578125,
              381.1552429199219
            ]
          ],
          "bbox": [
            129.392578125,
            371.056640625,
            525.6033325195312,
            381.1552429199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Code/6",
          "block_type": "Code",
          "html": "<pre>def first(word):\n    return word[0]</pre>",
          "polygon": [
            [
              129.59988403320312,
              385.55859375
            ],
            [
              223.75096130371094,
              385.55859375
            ],
            [
              223.75096130371094,
              412.62890625
            ],
            [
              129.59988403320312,
              412.62890625
            ]
          ],
          "bbox": [
            129.59988403320312,
            385.55859375,
            223.75096130371094,
            412.62890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Code/7",
          "block_type": "Code",
          "html": "<pre>def last(word):\n    return word[-1]</pre>",
          "polygon": [
            [
              128.0478515625,
              423.0257873535156
            ],
            [
              228.9813232421875,
              423.0257873535156
            ],
            [
              228.9813232421875,
              445.182373046875
            ],
            [
              128.0478515625,
              445.182373046875
            ]
          ],
          "bbox": [
            128.0478515625,
            423.0257873535156,
            228.9813232421875,
            445.182373046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Code/362",
          "block_type": "Code",
          "html": "<pre>def middle(word):\n    return word[1:-1]</pre>",
          "polygon": [
            [
              128.197265625,
              459.6087951660156
            ],
            [
              239.44204711914062,
              459.6087951660156
            ],
            [
              239.44204711914062,
              481.765380859375
            ],
            [
              128.197265625,
              481.765380859375
            ]
          ],
          "bbox": [
            128.197265625,
            459.6087951660156,
            239.44204711914062,
            481.765380859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>We'll see how they work in Chapter </i><i><a href=\"#page-92-0\">8.</a></i></p>",
          "polygon": [
            [
              129.09375,
              486.87890625
            ],
            [
              281.5992736816406,
              486.87890625
            ],
            [
              281.5992736816406,
              496.96923828125
            ],
            [
              129.09375,
              496.96923828125
            ]
          ],
          "bbox": [
            129.09375,
            486.87890625,
            281.5992736816406,
            496.96923828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/ListGroup/363",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/82/ListItem/10'></content-ref><content-ref src='/page/82/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              140.150390625,
              508.53515625
            ],
            [
              525.9375,
              508.53515625
            ],
            [
              525.9375,
              586.7042541503906
            ],
            [
              140.150390625,
              586.7042541503906
            ]
          ],
          "bbox": [
            140.150390625,
            508.53515625,
            525.9375,
            586.7042541503906
          ],
          "children": [
            {
              "id": "/page/82/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Type these functions into a file named</i> palindrome.py <i>and test them out. What happens if</i> <i>you call</i> middle <i>with a string with two letters? One letter? What about the empty string,</i> <i>which is written</i> '' <i>and contains no letters?</i></li>",
              "polygon": [
                [
                  140.8974609375,
                  508.53515625
                ],
                [
                  525.9375,
                  508.53515625
                ],
                [
                  525.9375,
                  542.9522399902344
                ],
                [
                  140.8974609375,
                  542.9522399902344
                ]
              ],
              "bbox": [
                140.8974609375,
                508.53515625,
                525.9375,
                542.9522399902344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3",
                "4": "/page/81/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/82/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Write a function called</i> is_palindrome <i>that takes a string argument and returns</i> True <i>if it</i> <i>is a palindrome and</i> False <i>otherwise. Remember that you can use the built-in function</i> len <i>to check the length of a string.</i></li>",
              "polygon": [
                [
                  140.150390625,
                  551.84765625
                ],
                [
                  525.638671875,
                  551.84765625
                ],
                [
                  525.638671875,
                  586.7042541503906
                ],
                [
                  140.150390625,
                  586.7042541503906
                ]
              ],
              "bbox": [
                140.150390625,
                551.84765625,
                525.638671875,
                586.7042541503906
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/72/SectionHeader/1",
                "2": "/page/81/SectionHeader/3",
                "4": "/page/81/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": null
        },
        {
          "id": "/page/82/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">http:</a> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">//</a> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">com/</a> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">code/</a> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">palindrome_</a> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">soln.</a> <a href=\"http://thinkpython.com/code/palindrome_soln.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              129.5998992919922,
              598.2549591064453
            ],
            [
              426.3625793457031,
              598.2549591064453
            ],
            [
              426.3625793457031,
              608.2982482910156
            ],
            [
              129.5998992919922,
              608.2982482910156
            ]
          ],
          "bbox": [
            129.5998992919922,
            598.2549591064453,
            426.3625793457031,
            608.2982482910156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 6.7.</b> <i>A number, a, is a power of b if it is divisible by b and a</i>/<i>b is a power of b. Write a</i> <i>function called</i> is_power <i>that takes parameters</i> a <i>and</i> b <i>and returns</i> True <i>if</i> a <i>is a power of</i> b<i>. Note:</i> <i>you will have to think about the base case.</i></p>",
          "polygon": [
            [
              128.6455078125,
              609.85546875
            ],
            [
              525.9375,
              609.85546875
            ],
            [
              525.9375,
              644.8812561035156
            ],
            [
              128.6455078125,
              644.8812561035156
            ]
          ],
          "bbox": [
            128.6455078125,
            609.85546875,
            525.9375,
            644.8812561035156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 6.8.</b> <i>The greatest common divisor (GCD) of a and b is the largest number that divides</i> <i>both of them with no remainder.</i></p>",
          "polygon": [
            [
              128.0478515625,
              647.1136627197266
            ],
            [
              525.9375,
              647.1136627197266
            ],
            [
              525.9375,
              669.2702713012695
            ],
            [
              128.0478515625,
              669.2702713012695
            ]
          ],
          "bbox": [
            128.0478515625,
            647.1136627197266,
            525.9375,
            669.2702713012695
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/82/TextInlineMath/15",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\"><i>One way to find the GCD of two numbers is based on the observation that if r is the remainder when </i><i>a is divided by b, then gcd(a, b) = gcd(b, r). As a base case, we can use gcd(a, 0) = a. </i></p>",
          "polygon": [
            [
              127.8984375,
              678.3046875
            ],
            [
              525.603271484375,
              678.3046875
            ],
            [
              525.603271484375,
              700.8349685668945
            ],
            [
              127.8984375,
              700.8349685668945
            ]
          ],
          "bbox": [
            127.8984375,
            678.3046875,
            525.603271484375,
            700.8349685668945
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "2": "/page/81/SectionHeader/3",
        "4": "/page/81/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/83/Page/28",
      "block_type": "Page",
      "html": "<content-ref src='/page/83/PageHeader/0'></content-ref><content-ref src='/page/83/PageHeader/3'></content-ref><content-ref src='/page/83/Text/1'></content-ref><content-ref src='/page/83/Text/2'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/83/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              482.607421875,
              60.76318359375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/83/PageHeader/3",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.9130859375,
              61.14990234375
            ],
            [
              97.2685546875,
              61.14990234375
            ],
            [
              97.2685546875,
              70.81787109375
            ],
            [
              85.9130859375,
              70.81787109375
            ]
          ],
          "bbox": [
            85.9130859375,
            61.14990234375,
            97.2685546875,
            70.81787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/83/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a function called</i> gcd <i>that takes parameters</i> a <i>and</i> b <i>and returns their greatest common divisor.</i></p>",
          "polygon": [
            [
              84.8671875,
              88.171875
            ],
            [
              482.607421875,
              88.171875
            ],
            [
              482.607421875,
              98.6483154296875
            ],
            [
              84.8671875,
              98.6483154296875
            ]
          ],
          "bbox": [
            84.8671875,
            88.171875,
            482.607421875,
            98.6483154296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/83/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Credit: This exercise is based on an example from Abelson and Sussman's</i> Structure and Interpretation of Computer Programs<i>.</i></p>",
          "polygon": [
            [
              85.9130859375,
              108.5712890625
            ],
            [
              482.4015197753906,
              108.5712890625
            ],
            [
              482.4015197753906,
              131.12994384765625
            ],
            [
              85.9130859375,
              131.12994384765625
            ]
          ],
          "bbox": [
            85.9130859375,
            108.5712890625,
            482.4015197753906,
            131.12994384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/81/SectionHeader/3",
            "4": "/page/81/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/72/SectionHeader/1",
        "2": "/page/81/SectionHeader/3",
        "4": "/page/81/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/84/Page/165",
      "block_type": "Page",
      "html": "<content-ref src='/page/84/SectionHeader/0'></content-ref><content-ref src='/page/84/SectionHeader/1'></content-ref><content-ref src='/page/84/SectionHeader/2'></content-ref><content-ref src='/page/84/Text/3'></content-ref><content-ref src='/page/84/TextInlineMath/4'></content-ref><content-ref src='/page/84/Text/5'></content-ref><content-ref src='/page/84/Text/6'></content-ref><content-ref src='/page/84/Text/7'></content-ref><content-ref src='/page/84/Text/8'></content-ref><content-ref src='/page/84/Text/9'></content-ref><content-ref src='/page/84/Text/10'></content-ref><content-ref src='/page/84/Text/11'></content-ref><content-ref src='/page/84/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/84/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-84-0\"></span><b>Chapter 7</b></h2>",
          "polygon": [
            [
              128.794921875,
              163.99639892578125
            ],
            [
              221.73046875,
              163.99639892578125
            ],
            [
              221.73046875,
              184.65887451171875
            ],
            [
              128.794921875,
              184.65887451171875
            ]
          ],
          "bbox": [
            128.794921875,
            163.99639892578125,
            221.73046875,
            184.65887451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/72/SectionHeader/1",
            "2": "/page/84/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/84/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Iteration</b></h1>",
          "polygon": [
            [
              128.794921875,
              219.22723388671875
            ],
            [
              227.408203125,
              219.22723388671875
            ],
            [
              227.408203125,
              244.0142822265625
            ],
            [
              128.794921875,
              244.0142822265625
            ]
          ],
          "bbox": [
            128.794921875,
            219.22723388671875,
            227.408203125,
            244.0142822265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/84/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-84-1\"></span><b>7.1 Multiple assignment</b></h4>",
          "polygon": [
            [
              128.86962890625,
              292.77667236328125
            ],
            [
              299.42578125,
              292.77667236328125
            ],
            [
              299.42578125,
              307.1228942871094
            ],
            [
              128.86962890625,
              307.1228942871094
            ]
          ],
          "bbox": [
            128.86962890625,
            292.77667236328125,
            299.42578125,
            307.1228942871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you may have discovered, it is legal to make more than one assignment to the same variable. A new assignment makes an existing variable refer to a new value (and stop referring to the old value).</p>",
          "polygon": [
            [
              129.2431640625,
              319.3432312011719
            ],
            [
              526.53515625,
              319.3432312011719
            ],
            [
              526.53515625,
              353.84765625
            ],
            [
              129.2431640625,
              353.84765625
            ]
          ],
          "bbox": [
            129.2431640625,
            319.3432312011719,
            526.53515625,
            353.84765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/TextInlineMath/4",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">bruce = 5 print bruce, bruce = 7 print bruce</p>",
          "polygon": [
            [
              128.57080078125,
              359.6236572265625
            ],
            [
              193.341796875,
              359.6236572265625
            ],
            [
              193.341796875,
              406.16925048828125
            ],
            [
              128.57080078125,
              406.16925048828125
            ]
          ],
          "bbox": [
            128.57080078125,
            359.6236572265625,
            193.341796875,
            406.16925048828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The output of this program is 5 7, because the first time bruce is printed, its value is 5, and the second time, its value is 7. The comma at the end of the first print statement suppresses the newline, which is why both outputs appear on the same line.</p>",
          "polygon": [
            [
              129.60000610351562,
              411.85546875
            ],
            [
              525.9375,
              411.85546875
            ],
            [
              525.9375,
              446.7478332519531
            ],
            [
              129.60000610351562,
              446.7478332519531
            ]
          ],
          "bbox": [
            129.60000610351562,
            411.85546875,
            525.9375,
            446.7478332519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-85-2\">7.1</a> shows what <b>multiple assignment</b> looks like in a state diagram.</p>",
          "polygon": [
            [
              128.9443359375,
              456.70111083984375
            ],
            [
              453.1051940917969,
              456.70111083984375
            ],
            [
              453.1051940917969,
              466.76953125
            ],
            [
              128.9443359375,
              466.76953125
            ]
          ],
          "bbox": [
            128.9443359375,
            456.70111083984375,
            453.1051940917969,
            466.76953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">With multiple assignment it is especially important to distinguish between an assignment operation and a statement of equality. Because Python uses the equal sign (=) for assignment, it is tempting to interpret a statement like a = b as a statement of equality. It is not!</p>",
          "polygon": [
            [
              128.794921875,
              476.81024169921875
            ],
            [
              526.236328125,
              476.81024169921875
            ],
            [
              526.236328125,
              511.1618347167969
            ],
            [
              128.794921875,
              511.1618347167969
            ]
          ],
          "bbox": [
            128.794921875,
            476.81024169921875,
            526.236328125,
            511.1618347167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">First, equality is a symmetric relation and assignment is not. For example, in mathematics, if <i>a</i> = 7 then 7 = <i>a</i>. But in Python, the statement a = 7 is legal and 7 = a is not.</p>",
          "polygon": [
            [
              128.3466796875,
              532.8984375
            ],
            [
              525.9375,
              532.8984375
            ],
            [
              525.9375,
              555.5628356933594
            ],
            [
              128.3466796875,
              555.5628356933594
            ]
          ],
          "bbox": [
            128.3466796875,
            532.8984375,
            525.9375,
            555.5628356933594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Furthermore, in mathematics, a statement of equality is either true or false, for all time. If <i>a</i> = <i>b</i> now, then <i>a</i> will always equal <i>b</i>. In Python, an assignment statement can make two variables equal, but they don't have to stay that way:</p>",
          "polygon": [
            [
              128.3466796875,
              565.3828125
            ],
            [
              525.9375,
              565.3828125
            ],
            [
              525.9375,
              599.9638366699219
            ],
            [
              128.3466796875,
              599.9638366699219
            ]
          ],
          "bbox": [
            128.3466796875,
            565.3828125,
            525.9375,
            599.9638366699219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">a = 5 b = a # a and b are now equal a = 3 # a and b are no longer equal</p>",
          "polygon": [
            [
              128.6455078125,
              605.8926849365234
            ],
            [
              329.30859375,
              605.8926849365234
            ],
            [
              329.30859375,
              640.2432861328125
            ],
            [
              128.6455078125,
              640.2432861328125
            ]
          ],
          "bbox": [
            128.6455078125,
            605.8926849365234,
            329.30859375,
            640.2432861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The third line changes the value of a but does not change the value of b, so they are no longer equal.</p>",
          "polygon": [
            [
              129.2431640625,
              646.20703125
            ],
            [
              525.9375,
              646.20703125
            ],
            [
              525.9375,
              668.63671875
            ],
            [
              129.2431640625,
              668.63671875
            ]
          ],
          "bbox": [
            129.2431640625,
            646.20703125,
            525.9375,
            668.63671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/84/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although multiple assignment is frequently helpful, you should use it with caution. If the values of variables change frequently, it can make the code difficult to read and debug.</p>",
          "polygon": [
            [
              128.6455078125,
              678.3046875
            ],
            [
              525.6033935546875,
              678.3046875
            ],
            [
              525.6033935546875,
              700.834846496582
            ],
            [
              128.6455078125,
              700.834846496582
            ]
          ],
          "bbox": [
            128.6455078125,
            678.3046875,
            525.6033935546875,
            700.834846496582
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "4": "/page/84/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/85/Page/225",
      "block_type": "Page",
      "html": "<content-ref src='/page/85/PageHeader/0'></content-ref><content-ref src='/page/85/PageHeader/20'></content-ref><content-ref src='/page/85/FigureGroup/219'></content-ref><content-ref src='/page/85/SectionHeader/3'></content-ref><content-ref src='/page/85/Text/4'></content-ref><content-ref src='/page/85/TextInlineMath/5'></content-ref><content-ref src='/page/85/Text/6'></content-ref><content-ref src='/page/85/Text/7'></content-ref><content-ref src='/page/85/Code/8'></content-ref><content-ref src='/page/85/Text/9'></content-ref><content-ref src='/page/85/TextInlineMath/10'></content-ref><content-ref src='/page/85/Text/11'></content-ref><content-ref src='/page/85/SectionHeader/12'></content-ref><content-ref src='/page/85/Text/13'></content-ref><content-ref src='/page/85/Text/14'></content-ref><content-ref src='/page/85/Text/15'></content-ref><content-ref src='/page/85/Code/16'></content-ref><content-ref src='/page/85/Text/17'></content-ref><content-ref src='/page/85/Text/18'></content-ref><content-ref src='/page/85/ListItem/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/85/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.521484375
            ],
            [
              482.607421875,
              60.521484375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.521484375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/85/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.49365234375,
              60.521484375
            ],
            [
              95.25146484375,
              60.521484375
            ],
            [
              95.25146484375,
              70.4794921875
            ],
            [
              84.49365234375,
              70.4794921875
            ]
          ],
          "bbox": [
            84.49365234375,
            60.521484375,
            95.25146484375,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/85/FigureGroup/219",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/85/Figure/1'></content-ref><content-ref src='/page/85/Caption/2'></content-ref>",
          "polygon": [
            [
              227.8564453125,
              87.3017578125
            ],
            [
              340.75885009765625,
              87.3017578125
            ],
            [
              340.75885009765625,
              144.3529052734375
            ],
            [
              227.8564453125,
              144.3529052734375
            ]
          ],
          "bbox": [
            227.8564453125,
            87.3017578125,
            340.75885009765625,
            144.3529052734375
          ],
          "children": [
            {
              "id": "/page/85/Figure/1",
              "block_type": "Figure",
              "html": "<span id=\"page-85-2\"></span>",
              "polygon": [
                [
                  251.7626953125,
                  87.3017578125
                ],
                [
                  311.9765625,
                  87.3017578125
                ],
                [
                  311.9765625,
                  118.6259765625
                ],
                [
                  251.7626953125,
                  118.6259765625
                ]
              ],
              "bbox": [
                251.7626953125,
                87.3017578125,
                311.9765625,
                118.6259765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/84/SectionHeader/1",
                "4": "/page/84/SectionHeader/2"
              },
              "images": {
                "/page/85/Figure/1": "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"
              }
            },
            {
              "id": "/page/85/Caption/2",
              "block_type": "Caption",
              "html": "<p>Figure 7.1: State diagram.</p>",
              "polygon": [
                [
                  227.8564453125,
                  133.8046875
                ],
                [
                  340.75885009765625,
                  133.8046875
                ],
                [
                  340.75885009765625,
                  144.3529052734375
                ],
                [
                  227.8564453125,
                  144.3529052734375
                ]
              ],
              "bbox": [
                227.8564453125,
                133.8046875,
                340.75885009765625,
                144.3529052734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/84/SectionHeader/1",
                "4": "/page/84/SectionHeader/2"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "4": "/page/84/SectionHeader/2"
          },
          "images": null
        },
        {
          "id": "/page/85/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-85-0\"></span><b>7.2 Updating variables</b></h3>",
          "polygon": [
            [
              85.68896484375,
              163.2919921875
            ],
            [
              244.19384765625,
              163.2919921875
            ],
            [
              244.19384765625,
              178.75494384765625
            ],
            [
              85.68896484375,
              178.75494384765625
            ]
          ],
          "bbox": [
            85.68896484375,
            163.2919921875,
            244.19384765625,
            178.75494384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the most common forms of multiple assignment is an <b>update</b>, where the new value of the variable depends on the old.</p>",
          "polygon": [
            [
              85.6142578125,
              190.5556640625
            ],
            [
              482.4026794433594,
              190.5556640625
            ],
            [
              482.4026794433594,
              213.58892822265625
            ],
            [
              85.6142578125,
              213.58892822265625
            ]
          ],
          "bbox": [
            85.6142578125,
            190.5556640625,
            482.4026794433594,
            213.58892822265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/TextInlineMath/5",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">x = x + 1</p>",
          "polygon": [
            [
              85.83837890625,
              219.462890625
            ],
            [
              123.01251220703125,
              219.462890625
            ],
            [
              123.01251220703125,
              229.84234619140625
            ],
            [
              85.83837890625,
              229.84234619140625
            ]
          ],
          "bbox": [
            85.83837890625,
            219.462890625,
            123.01251220703125,
            229.84234619140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This means \"get the current value of x, add one, and then update x with the new value.\"</p>",
          "polygon": [
            [
              85.6142578125,
              235.705078125
            ],
            [
              474.5679016113281,
              235.705078125
            ],
            [
              474.5679016113281,
              246.3939208984375
            ],
            [
              85.6142578125,
              246.3939208984375
            ]
          ],
          "bbox": [
            85.6142578125,
            235.705078125,
            474.5679016113281,
            246.3939208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you try to update a variable that doesn't exist, you get an error, because Python evaluates the right side before it assigns a value to x:</p>",
          "polygon": [
            [
              84.8671875,
              256.201171875
            ],
            [
              483.50390625,
              256.201171875
            ],
            [
              483.50390625,
              278.96295166015625
            ],
            [
              84.8671875,
              278.96295166015625
            ]
          ],
          "bbox": [
            84.8671875,
            256.201171875,
            483.50390625,
            278.96295166015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; x = x+1\nNameError: name 'x' is not defined</pre>",
          "polygon": [
            [
              85.0166015625,
              285.2537841796875
            ],
            [
              264.2071533203125,
              285.2537841796875
            ],
            [
              264.2071533203125,
              307.4103698730469
            ],
            [
              85.0166015625,
              307.4103698730469
            ]
          ],
          "bbox": [
            85.0166015625,
            285.2537841796875,
            264.2071533203125,
            307.4103698730469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Before you can update a variable, you have to <b>initialize</b> it, usually with a simple assignment:</p>",
          "polygon": [
            [
              85.0166015625,
              312.46875
            ],
            [
              482.3976135253906,
              312.46875
            ],
            [
              482.3976135253906,
              336.15692138671875
            ],
            [
              85.0166015625,
              336.15692138671875
            ]
          ],
          "bbox": [
            85.0166015625,
            312.46875,
            482.3976135253906,
            336.15692138671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/TextInlineMath/10",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; x = 0 &gt;&gt;&gt; x = x + 1</p>",
          "polygon": [
            [
              85.68896484375,
              340.3125
            ],
            [
              143.96044921875,
              340.3125
            ],
            [
              143.96044921875,
              364.67578125
            ],
            [
              85.68896484375,
              364.67578125
            ]
          ],
          "bbox": [
            85.68896484375,
            340.3125,
            143.96044921875,
            364.67578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Updating a variable by adding 1 is called an <b>increment</b>; subtracting 1 is called a <b>decrement</b>.</p>",
          "polygon": [
            [
              85.3154296875,
              369.896484375
            ],
            [
              482.39971923828125,
              369.896484375
            ],
            [
              482.39971923828125,
              381.1568908691406
            ],
            [
              85.3154296875,
              381.1568908691406
            ]
          ],
          "bbox": [
            85.3154296875,
            369.896484375,
            482.39971923828125,
            381.1568908691406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "3": "/page/85/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/85/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-85-1\"></span><b>7.3 The</b> while <b>statement</b></h2>",
          "polygon": [
            [
              85.83837890625,
              421.3271179199219
            ],
            [
              251.61328125,
              421.3271179199219
            ],
            [
              251.61328125,
              437.7499694824219
            ],
            [
              85.83837890625,
              437.7499694824219
            ]
          ],
          "bbox": [
            85.83837890625,
            421.3271179199219,
            251.61328125,
            437.7499694824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Computers are often used to automate repetitive tasks. Repeating identical or similar tasks without making errors is something that computers do well and people do poorly.</p>",
          "polygon": [
            [
              85.9130859375,
              449.3671875
            ],
            [
              482.4033508300781,
              449.3671875
            ],
            [
              482.4033508300781,
              472.58392333984375
            ],
            [
              85.9130859375,
              472.58392333984375
            ]
          ],
          "bbox": [
            85.9130859375,
            449.3671875,
            482.4033508300781,
            472.58392333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We have seen two programs, countdown and print_n, that use recursion to perform repetition, which is also called <b>iteration</b>. Because iteration is so common, Python provides several language features to make it easier. One is the for statement we saw in Section <a href=\"#page-53-0\">4.2.</a> We'll get back to that later.</p>",
          "polygon": [
            [
              85.763671875,
              482.84576416015625
            ],
            [
              482.90625,
              482.84576416015625
            ],
            [
              482.90625,
              529.5409240722656
            ],
            [
              85.763671875,
              529.5409240722656
            ]
          ],
          "bbox": [
            85.763671875,
            482.84576416015625,
            482.90625,
            529.5409240722656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another is the while statement. Here is a version of countdown that uses a while statement:</p>",
          "polygon": [
            [
              85.763671875,
              539.0859375
            ],
            [
              482.607421875,
              539.0859375
            ],
            [
              482.607421875,
              549.9149169921875
            ],
            [
              85.763671875,
              549.9149169921875
            ]
          ],
          "bbox": [
            85.763671875,
            539.0859375,
            482.607421875,
            549.9149169921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/85/Code/16",
          "block_type": "Code",
          "html": "<pre>def countdown(n):\n    while n &gt; 0:\n        print n\n        n = n-1\n    print 'Blastoff!'</pre>",
          "polygon": [
            [
              86.40008544921875,
              554.5546875
            ],
            [
              196.2124481201172,
              554.5546875
            ],
            [
              196.2124481201172,
              616.4296875
            ],
            [
              86.40008544921875,
              616.4296875
            ]
          ],
          "bbox": [
            86.40008544921875,
            554.5546875,
            196.2124481201172,
            616.4296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can almost read the while statement as if it were English. It means, \"While n is greater than 0, display the value of n and then reduce the value of n by 1. When you get to 0, display the word Blastoff!\"</p>",
          "polygon": [
            [
              85.9130859375,
              620.68359375
            ],
            [
              482.40118408203125,
              620.68359375
            ],
            [
              482.40118408203125,
              655.8859252929688
            ],
            [
              85.9130859375,
              655.8859252929688
            ]
          ],
          "bbox": [
            85.9130859375,
            620.68359375,
            482.40118408203125,
            655.8859252929688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/85/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">More formally, here is the flow of execution for a while statement:</p>",
          "polygon": [
            [
              85.53955078125,
              665.9296875
            ],
            [
              376.88201904296875,
              665.9296875
            ],
            [
              376.88201904296875,
              676.2609329223633
            ],
            [
              85.53955078125,
              676.2609329223633
            ]
          ],
          "bbox": [
            85.53955078125,
            665.9296875,
            376.88201904296875,
            676.2609329223633
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/85/ListItem/19",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">1. Evaluate the condition, yielding True or False.</li>",
          "polygon": [
            [
              96.521484375,
              690.29296875
            ],
            [
              318.5557556152344,
              690.29296875
            ],
            [
              318.5557556152344,
              700.8349304199219
            ],
            [
              96.521484375,
              700.8349304199219
            ]
          ],
          "bbox": [
            96.521484375,
            690.29296875,
            318.5557556152344,
            700.8349304199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "2": "/page/85/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/86/Page/234",
      "block_type": "Page",
      "html": "<content-ref src='/page/86/PageHeader/0'></content-ref><content-ref src='/page/86/PageHeader/16'></content-ref><content-ref src='/page/86/ListGroup/233'></content-ref><content-ref src='/page/86/Text/3'></content-ref><content-ref src='/page/86/Text/4'></content-ref><content-ref src='/page/86/Text/5'></content-ref><content-ref src='/page/86/Code/6'></content-ref><content-ref src='/page/86/Code/7'></content-ref><content-ref src='/page/86/Text/8'></content-ref><content-ref src='/page/86/Text/9'></content-ref><content-ref src='/page/86/Text/10'></content-ref><content-ref src='/page/86/Text/11'></content-ref><content-ref src='/page/86/Text/12'></content-ref><content-ref src='/page/86/SectionHeader/13'></content-ref><content-ref src='/page/86/Text/14'></content-ref><content-ref src='/page/86/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/86/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.42138671875,
              61.11871337890625
            ],
            [
              525.5996704101562,
              61.11871337890625
            ],
            [
              525.5996704101562,
              71.13372802734375
            ],
            [
              128.42138671875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.42138671875,
            61.11871337890625,
            525.5996704101562,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              61.1982421875
            ],
            [
              525.041015625,
              61.1982421875
            ],
            [
              525.041015625,
              70.2861328125
            ],
            [
              514.880859375,
              70.2861328125
            ]
          ],
          "bbox": [
            514.880859375,
            61.1982421875,
            525.041015625,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/ListGroup/233",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/86/ListItem/1'></content-ref><content-ref src='/page/86/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              140.8974609375,
              88.51025390625
            ],
            [
              525.5966796875,
              88.51025390625
            ],
            [
              525.5966796875,
              133.4578857421875
            ],
            [
              140.8974609375,
              133.4578857421875
            ]
          ],
          "bbox": [
            140.8974609375,
            88.51025390625,
            525.5966796875,
            133.4578857421875
          ],
          "children": [
            {
              "id": "/page/86/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. If the condition is false, exit the while statement and continue execution at the next statement.</li>",
              "polygon": [
                [
                  140.8974609375,
                  88.51025390625
                ],
                [
                  525.5966796875,
                  88.51025390625
                ],
                [
                  525.5966796875,
                  110.99188232421875
                ],
                [
                  140.8974609375,
                  110.99188232421875
                ]
              ],
              "bbox": [
                140.8974609375,
                88.51025390625,
                525.5966796875,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/84/SectionHeader/1",
                "2": "/page/85/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/86/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">3. If the condition is true, execute the body and then go back to step 1.</li>",
              "polygon": [
                [
                  141.1962890625,
                  122.4931640625
                ],
                [
                  451.2322998046875,
                  122.4931640625
                ],
                [
                  451.2322998046875,
                  133.4578857421875
                ],
                [
                  141.1962890625,
                  133.4578857421875
                ]
              ],
              "bbox": [
                141.1962890625,
                122.4931640625,
                451.2322998046875,
                133.4578857421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/84/SectionHeader/1",
                "2": "/page/85/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/86/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This type of flow is called a <b>loop</b> because the third step loops back around to the top.</p>",
          "polygon": [
            [
              129.2431640625,
              149.3701171875
            ],
            [
              502.62890625,
              149.3701171875
            ],
            [
              502.62890625,
              160.0938720703125
            ],
            [
              129.2431640625,
              160.0938720703125
            ]
          ],
          "bbox": [
            129.2431640625,
            149.3701171875,
            502.62890625,
            160.0938720703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The body of the loop should change the value of one or more variables so that eventually the condition becomes false and the loop terminates. Otherwise the loop will repeat forever, which is called an <b>infinite loop</b>. An endless source of amusement for computer scientists is the observation that the directions on shampoo, \"Lather, rinse, repeat,\" are an infinite loop.</p>",
          "polygon": [
            [
              128.9443359375,
              171.4130859375
            ],
            [
              525.6033935546875,
              171.4130859375
            ],
            [
              525.6033935546875,
              230.35784912109375
            ],
            [
              128.9443359375,
              230.35784912109375
            ]
          ],
          "bbox": [
            128.9443359375,
            171.4130859375,
            525.6033935546875,
            230.35784912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the case of countdown, we can prove that the loop terminates because we know that the value of n is finite, and we can see that the value of n gets smaller each time through the loop, so eventually we have to get to 0. In other cases, it is not so easy to tell:</p>",
          "polygon": [
            [
              128.3466796875,
              241.732666015625
            ],
            [
              525.59765625,
              241.732666015625
            ],
            [
              525.59765625,
              276.23284912109375
            ],
            [
              128.3466796875,
              276.23284912109375
            ]
          ],
          "bbox": [
            128.3466796875,
            241.732666015625,
            525.59765625,
            276.23284912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Code/6",
          "block_type": "Code",
          "html": "<pre>def sequence(n):</pre>",
          "polygon": [
            [
              127.8984375,
              283.63665771484375
            ],
            [
              213.36328125,
              283.63665771484375
            ],
            [
              213.36328125,
              293.5992431640625
            ],
            [
              127.8984375,
              293.5992431640625
            ]
          ],
          "bbox": [
            127.8984375,
            283.63665771484375,
            213.36328125,
            293.5992431640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Code/7",
          "block_type": "Code",
          "html": "<pre>while n != 1:\n   print n,\n   if n%2 == 0: # n is even\n      n = n/2\n   else: # n is odd\n      n = n*3+1</pre>",
          "polygon": [
            [
              147.99462890625,
              295.259765625
            ],
            [
              335.583984375,
              295.259765625
            ],
            [
              335.583984375,
              366.7652587890625
            ],
            [
              147.99462890625,
              366.7652587890625
            ]
          ],
          "bbox": [
            147.99462890625,
            295.259765625,
            335.583984375,
            366.7652587890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The condition for this loop is n != 1, so the loop will continue until n is 1, which makes the condition false.</p>",
          "polygon": [
            [
              129.392578125,
              374.150390625
            ],
            [
              525.5995483398438,
              374.150390625
            ],
            [
              525.5995483398438,
              396.62384033203125
            ],
            [
              129.392578125,
              396.62384033203125
            ]
          ],
          "bbox": [
            129.392578125,
            374.150390625,
            525.5995483398438,
            396.62384033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each time through the loop, the program outputs the value of n and then checks whether it is even or odd. If it is even, n is divided by 2. If it is odd, the value of n is replaced with n*3+1. For example, if the argument passed to sequence is 3, the resulting sequence is 3, 10, 5, 16, 8, 4, 2, 1.</p>",
          "polygon": [
            [
              128.6455078125,
              407.98828125
            ],
            [
              525.6026611328125,
              407.98828125
            ],
            [
              525.6026611328125,
              454.69384765625
            ],
            [
              128.6455078125,
              454.69384765625
            ]
          ],
          "bbox": [
            128.6455078125,
            407.98828125,
            525.6026611328125,
            454.69384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since n sometimes increases and sometimes decreases, there is no obvious proof that n will ever reach 1, or that the program terminates. For some particular values of n, we can prove termination. For example, if the starting value is a power of two, then the value of n will be even each time through the loop until it reaches 1. The previous example ends with such a sequence, starting with 16.</p>",
          "polygon": [
            [
              128.6455078125,
              465.609375
            ],
            [
              525.9375,
              465.609375
            ],
            [
              525.9375,
              524.9578552246094
            ],
            [
              128.6455078125,
              524.9578552246094
            ]
          ],
          "bbox": [
            128.6455078125,
            465.609375,
            525.9375,
            524.9578552246094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The hard question is whether we can prove that this program terminates for <i>all posi</i><i>tive values</i> of n. So far, no one has been able to prove it <i>or</i> disprove it! (See <a href=\"http://en.wikipedia.org/wiki/Collatz_conjecture\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Collatz_conjecture\">//en.wikipedia.org/wiki/Collatz_conjecture</a>.)</p>",
          "polygon": [
            [
              129.09375,
              535.60546875
            ],
            [
              525.6057739257812,
              535.60546875
            ],
            [
              525.6057739257812,
              570.8328552246094
            ],
            [
              129.09375,
              570.8328552246094
            ]
          ],
          "bbox": [
            129.09375,
            535.60546875,
            525.6057739257812,
            570.8328552246094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 7.1.</b> <i>Rewrite the function</i> print_n <i>from Section </i><i><a href=\"#page-65-0\">5.8</a></i><i> using iteration instead of recursion.</i></p>",
          "polygon": [
            [
              128.6455078125,
              572.73046875
            ],
            [
              524.7421875,
              572.73046875
            ],
            [
              524.7421875,
              582.9297485351562
            ],
            [
              128.6455078125,
              582.9297485351562
            ]
          ],
          "bbox": [
            128.6455078125,
            572.73046875,
            524.7421875,
            582.9297485351562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/85/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/86/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-86-0\"></span><b>7.4</b> break</h2>",
          "polygon": [
            [
              127.7490234375,
              614.340087890625
            ],
            [
              198.31837463378906,
              614.340087890625
            ],
            [
              198.31837463378906,
              630.7629089355469
            ],
            [
              127.7490234375,
              630.7629089355469
            ]
          ],
          "bbox": [
            127.7490234375,
            614.340087890625,
            198.31837463378906,
            630.7629089355469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Sometimes you don't know it's time to end a loop until you get half way through the body. In that case you can use the break statement to jump out of the loop.</p>",
          "polygon": [
            [
              128.49609375,
              644.9972534179688
            ],
            [
              525.6034545898438,
              644.9972534179688
            ],
            [
              525.6034545898438,
              667.1538619995117
            ],
            [
              128.49609375,
              667.1538619995117
            ]
          ],
          "bbox": [
            128.49609375,
            644.9972534179688,
            525.6034545898438,
            667.1538619995117
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/86/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, suppose you want to take input from the user until they type done. You could write:</p>",
          "polygon": [
            [
              128.3466796875,
              678.5287017822266
            ],
            [
              525.6047973632812,
              678.5287017822266
            ],
            [
              525.6047973632812,
              700.8348617553711
            ],
            [
              128.3466796875,
              700.8348617553711
            ]
          ],
          "bbox": [
            128.3466796875,
            678.5287017822266,
            525.6047973632812,
            700.8348617553711
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "2": "/page/86/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/87/Page/185",
      "block_type": "Page",
      "html": "<content-ref src='/page/87/PageHeader/0'></content-ref><content-ref src='/page/87/PageHeader/16'></content-ref><content-ref src='/page/87/Code/1'></content-ref><content-ref src='/page/87/Text/2'></content-ref><content-ref src='/page/87/Text/3'></content-ref><content-ref src='/page/87/Text/4'></content-ref><content-ref src='/page/87/Code/5'></content-ref><content-ref src='/page/87/Text/6'></content-ref><content-ref src='/page/87/SectionHeader/7'></content-ref><content-ref src='/page/87/Text/8'></content-ref><content-ref src='/page/87/Text/9'></content-ref><content-ref src='/page/87/Equation/10'></content-ref><content-ref src='/page/87/Text/11'></content-ref><content-ref src='/page/87/Code/12'></content-ref><content-ref src='/page/87/Text/13'></content-ref><content-ref src='/page/87/Code/14'></content-ref><content-ref src='/page/87/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/87/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.4033508300781,
              60.8115234375
            ],
            [
              482.4033508300781,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.4033508300781,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.39013671875,
              60.908203125
            ],
            [
              96.89501953125,
              60.908203125
            ],
            [
              96.89501953125,
              70.2861328125
            ],
            [
              85.39013671875,
              70.2861328125
            ]
          ],
          "bbox": [
            85.39013671875,
            60.908203125,
            96.89501953125,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/Code/1",
          "block_type": "Code",
          "html": "<pre>while True:\n    line = raw_input('&gt; ')\n    if line == 'done':\n        break\n    print line</pre>",
          "polygon": [
            [
              86.2119140625,
              88.55859375
            ],
            [
              223.0751953125,
              88.55859375
            ],
            [
              223.0751953125,
              152.947265625
            ],
            [
              86.2119140625,
              152.947265625
            ]
          ],
          "bbox": [
            86.2119140625,
            88.55859375,
            223.0751953125,
            152.947265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">print 'Done!'</p>",
          "polygon": [
            [
              86.2119140625,
              161.26171875
            ],
            [
              154.37936401367188,
              161.26171875
            ],
            [
              154.37936401367188,
              171.81427001953125
            ],
            [
              86.2119140625,
              171.81427001953125
            ]
          ],
          "bbox": [
            86.2119140625,
            161.26171875,
            154.37936401367188,
            171.81427001953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The loop condition is True, which is always true, so the loop runs until it hits the break statement.</p>",
          "polygon": [
            [
              85.3154296875,
              179.05078125
            ],
            [
              482.4029235839844,
              179.05078125
            ],
            [
              482.4029235839844,
              201.81085205078125
            ],
            [
              85.3154296875,
              201.81085205078125
            ]
          ],
          "bbox": [
            85.3154296875,
            179.05078125,
            482.4029235839844,
            201.81085205078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each time through, it prompts the user with an angle bracket. If the user types done, the break statement exits the loop. Otherwise the program echoes whatever the user types and goes back to the top of the loop. Here's a sample run:</p>",
          "polygon": [
            [
              85.46484375,
              212.501953125
            ],
            [
              482.40045166015625,
              212.501953125
            ],
            [
              482.40045166015625,
              247.8248291015625
            ],
            [
              85.46484375,
              247.8248291015625
            ]
          ],
          "bbox": [
            85.46484375,
            212.501953125,
            482.40045166015625,
            247.8248291015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt; not done\nnot done\n&gt; done\nDone!</pre>",
          "polygon": [
            [
              85.98779296875,
              255.36566162109375
            ],
            [
              138.70364379882812,
              255.36566162109375
            ],
            [
              138.70364379882812,
              301.9112243652344
            ],
            [
              85.98779296875,
              301.9112243652344
            ]
          ],
          "bbox": [
            85.98779296875,
            255.36566162109375,
            138.70364379882812,
            301.9112243652344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This way of writing while loops is common because you can check the condition anywhere in the loop (not just at the top) and you can express the stop condition affirmatively (\"stop when this happens\") rather than negatively (\"keep going until that happens.\").</p>",
          "polygon": [
            [
              86.0625,
              309.375
            ],
            [
              482.40447998046875,
              309.375
            ],
            [
              482.40447998046875,
              344.1796875
            ],
            [
              86.0625,
              344.1796875
            ]
          ],
          "bbox": [
            86.0625,
            309.375,
            482.40447998046875,
            344.1796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/87/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-87-0\"></span><b>7.5 Square roots</b></h4>",
          "polygon": [
            [
              85.763671875,
              377.9056091308594
            ],
            [
              201.16961669921875,
              377.9056091308594
            ],
            [
              201.16961669921875,
              392.2518310546875
            ],
            [
              85.763671875,
              392.2518310546875
            ]
          ],
          "bbox": [
            85.763671875,
            377.9056091308594,
            201.16961669921875,
            392.2518310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Loops are often used in programs that compute numerical results by starting with an approximate answer and iteratively improving it.</p>",
          "polygon": [
            [
              86.2119140625,
              406.44140625
            ],
            [
              482.40338134765625,
              406.44140625
            ],
            [
              482.40338134765625,
              428.83575439453125
            ],
            [
              86.2119140625,
              428.83575439453125
            ]
          ],
          "bbox": [
            86.2119140625,
            406.44140625,
            482.40338134765625,
            428.83575439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, one way of computing square roots is Newton's method. Suppose that you want to know the square root of <i>a</i>. If you start with almost any estimate, <i>x</i>, you can compute a better estimate with the following formula:</p>",
          "polygon": [
            [
              86.0625,
              440.0859375
            ],
            [
              482.4034423828125,
              440.0859375
            ],
            [
              482.4034423828125,
              474.8497619628906
            ],
            [
              86.0625,
              474.8497619628906
            ]
          ],
          "bbox": [
            86.0625,
            440.0859375,
            482.4034423828125,
            474.8497619628906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Equation/10",
          "block_type": "Equation",
          "html": "<p block-type=\"Equation\"><math display=\"block\">y = \\frac{x + a/x}{2}</math></p>",
          "polygon": [
            [
              255.498046875,
              493.453125
            ],
            [
              310.86724853515625,
              493.453125
            ],
            [
              310.86724853515625,
              518.306884765625
            ],
            [
              255.498046875,
              518.306884765625
            ]
          ],
          "bbox": [
            255.498046875,
            493.453125,
            310.86724853515625,
            518.306884765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, if <i>a</i> is 4 and <i>x</i> is 3:</p>",
          "polygon": [
            [
              86.361328125,
              522.0703125
            ],
            [
              223.673828125,
              522.0703125
            ],
            [
              223.673828125,
              532.6678771972656
            ],
            [
              86.361328125,
              532.6678771972656
            ]
          ],
          "bbox": [
            86.361328125,
            522.0703125,
            223.673828125,
            532.6678771972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; a = 4.0\n&gt;&gt;&gt; x = 3.0\n&gt;&gt;&gt; y = (x + a/x) / 2\n&gt;&gt;&gt; print y\n2.16666666667</pre>",
          "polygon": [
            [
              85.46484375,
              539.859375
            ],
            [
              196.23760986328125,
              539.859375
            ],
            [
              196.23760986328125,
              598.9493408203125
            ],
            [
              85.46484375,
              598.9493408203125
            ]
          ],
          "bbox": [
            85.46484375,
            539.859375,
            196.23760986328125,
            598.9493408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Which is closer to the correct answer (√ 4 = 2). If we repeat the process with the new estimate, it gets even closer:</p>",
          "polygon": [
            [
              85.46484375,
              597.00830078125
            ],
            [
              482.4031677246094,
              597.00830078125
            ],
            [
              482.4031677246094,
              628.9459075927734
            ],
            [
              85.46484375,
              628.9459075927734
            ]
          ],
          "bbox": [
            85.46484375,
            597.00830078125,
            482.4031677246094,
            628.9459075927734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; x = y\n&gt;&gt;&gt; y = (x + a/x) / 2\n&gt;&gt;&gt; print y\n2.00641025641</pre>",
          "polygon": [
            [
              85.166015625,
              636.4867553710938
            ],
            [
              197.525390625,
              636.4867553710938
            ],
            [
              197.525390625,
              683.032356262207
            ],
            [
              85.166015625,
              683.032356262207
            ]
          ],
          "bbox": [
            85.166015625,
            636.4867553710938,
            197.525390625,
            683.032356262207
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/87/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">After a few more updates, the estimate is almost exact:</p>",
          "polygon": [
            [
              86.13720703125,
              690.6796875
            ],
            [
              326.3092956542969,
              690.6796875
            ],
            [
              326.3092956542969,
              700.8349227905273
            ],
            [
              86.13720703125,
              700.8349227905273
            ]
          ],
          "bbox": [
            86.13720703125,
            690.6796875,
            326.3092956542969,
            700.8349227905273
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "2": "/page/86/SectionHeader/13",
        "4": "/page/87/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/88/Page/204",
      "block_type": "Page",
      "html": "<content-ref src='/page/88/PageHeader/0'></content-ref><content-ref src='/page/88/PageHeader/13'></content-ref><content-ref src='/page/88/Code/1'></content-ref><content-ref src='/page/88/Text/2'></content-ref><content-ref src='/page/88/Code/3'></content-ref><content-ref src='/page/88/Text/4'></content-ref><content-ref src='/page/88/Code/5'></content-ref><content-ref src='/page/88/Text/6'></content-ref><content-ref src='/page/88/Text/7'></content-ref><content-ref src='/page/88/Code/8'></content-ref><content-ref src='/page/88/Text/9'></content-ref><content-ref src='/page/88/SectionHeader/10'></content-ref><content-ref src='/page/88/Text/11'></content-ref><content-ref src='/page/88/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/88/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.0478515625,
              60.8115234375
            ],
            [
              525.6033935546875,
              60.8115234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.0478515625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.0478515625,
            60.8115234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/PageHeader/13",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.76318359375
            ],
            [
              525.638671875,
              60.76318359375
            ],
            [
              525.638671875,
              70.43115234375
            ],
            [
              514.880859375,
              70.43115234375
            ]
          ],
          "bbox": [
            514.880859375,
            60.76318359375,
            525.638671875,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; x = y\n&gt;&gt;&gt; y = (x + a/x) / 2\n&gt;&gt;&gt; print y\n2.00001024003\n&gt;&gt;&gt; x = y\n&gt;&gt;&gt; y = (x + a/x) / 2\n&gt;&gt;&gt; print y\n2.00000000003</pre>",
          "polygon": [
            [
              129.60000610351562,
              87.8818359375
            ],
            [
              242.2001953125,
              87.8818359375
            ],
            [
              242.2001953125,
              184.00830078125
            ],
            [
              129.60000610351562,
              184.00830078125
            ]
          ],
          "bbox": [
            129.60000610351562,
            87.8818359375,
            242.2001953125,
            184.00830078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In general we don't know ahead of time how many steps it takes to get to the right answer, but we know when we get there because the estimate stops changing:</p>",
          "polygon": [
            [
              128.9443359375,
              189.9755859375
            ],
            [
              525.6033325195312,
              189.9755859375
            ],
            [
              525.6033325195312,
              212.78289794921875
            ],
            [
              128.9443359375,
              212.78289794921875
            ]
          ],
          "bbox": [
            128.9443359375,
            189.9755859375,
            525.6033325195312,
            212.78289794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; x = y\n&gt;&gt;&gt; y = (x + a/x) / 2\n&gt;&gt;&gt; print y\n2.0\n&gt;&gt;&gt; x = y\n&gt;&gt;&gt; y = (x + a/x) / 2\n&gt;&gt;&gt; print y\n2.0</pre>",
          "polygon": [
            [
              129.60000610351562,
              219.10174560546875
            ],
            [
              242.947265625,
              219.10174560546875
            ],
            [
              242.947265625,
              314.42431640625
            ],
            [
              129.60000610351562,
              314.42431640625
            ]
          ],
          "bbox": [
            129.60000610351562,
            219.10174560546875,
            242.947265625,
            314.42431640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When y == x, we can stop. Here is a loop that starts with an initial estimate, x, and improves it until it stops changing:</p>",
          "polygon": [
            [
              129.392578125,
              320.8927307128906
            ],
            [
              525.603759765625,
              320.8927307128906
            ],
            [
              525.603759765625,
              343.40625
            ],
            [
              129.392578125,
              343.40625
            ]
          ],
          "bbox": [
            129.392578125,
            320.8927307128906,
            525.603759765625,
            343.40625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Code/5",
          "block_type": "Code",
          "html": "<pre>while True:\n    print x\n    y = (x + a/x) / 2\n    if y == x:\n        break\n    x = y</pre>",
          "polygon": [
            [
              129.60000610351562,
              349.5177307128906
            ],
            [
              239.4322052001953,
              349.5177307128906
            ],
            [
              239.4322052001953,
              420.45233154296875
            ],
            [
              129.60000610351562,
              420.45233154296875
            ]
          ],
          "bbox": [
            129.60000610351562,
            349.5177307128906,
            239.4322052001953,
            420.45233154296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For most values of a this works fine, but in general it is dangerous to test float equality. Floating-point values are only approximately right: most rational numbers, like 1/3, and irrational numbers, like √ 2, can't be represented exactly with a float.</p>",
          "polygon": [
            [
              128.6455078125,
              426.1640625
            ],
            [
              525.603271484375,
              426.1640625
            ],
            [
              525.603271484375,
              462.451904296875
            ],
            [
              128.6455078125,
              462.451904296875
            ]
          ],
          "bbox": [
            128.6455078125,
            426.1640625,
            525.603271484375,
            462.451904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Rather than checking whether x and y are exactly equal, it is safer to use the built-in function abs to compute the absolute value, or magnitude, of the difference between them:</p>",
          "polygon": [
            [
              128.6455078125,
              472.18359375
            ],
            [
              525.5997924804688,
              472.18359375
            ],
            [
              525.5997924804688,
              495.04888916015625
            ],
            [
              128.6455078125,
              495.04888916015625
            ]
          ],
          "bbox": [
            128.6455078125,
            472.18359375,
            525.5997924804688,
            495.04888916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Code/8",
          "block_type": "Code",
          "html": "<pre>if abs(y-x) &lt; epsilon:\n    break</pre>",
          "polygon": [
            [
              147.1728515625,
              501.36773681640625
            ],
            [
              265.5939636230469,
              501.36773681640625
            ],
            [
              265.5939636230469,
              523.5243225097656
            ],
            [
              147.1728515625,
              523.5243225097656
            ]
          ],
          "bbox": [
            147.1728515625,
            501.36773681640625,
            265.5939636230469,
            523.5243225097656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Where epsilon has a value like 0.0000001 that determines how close is close enough. <b>Exercise 7.2.</b> <i>Encapsulate this loop in a function called</i> square_root <i>that takes</i> a <i>as a parameter,</i> <i>chooses a reasonable value of</i> x<i>, and returns an estimate of the square root of</i> a<i>.</i></p>",
          "polygon": [
            [
              128.49609375,
              529.41796875
            ],
            [
              525.6019897460938,
              529.41796875
            ],
            [
              525.6019897460938,
              564.3443450927734
            ],
            [
              128.49609375,
              564.3443450927734
            ]
          ],
          "bbox": [
            128.49609375,
            529.41796875,
            525.6019897460938,
            564.3443450927734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "4": "/page/87/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/88/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-88-0\"></span><b>7.6 Algorithms</b></h3>",
          "polygon": [
            [
              128.12255859375,
              594.0
            ],
            [
              236.7947998046875,
              594.0
            ],
            [
              236.7947998046875,
              608.9769439697266
            ],
            [
              128.12255859375,
              608.9769439697266
            ]
          ],
          "bbox": [
            128.12255859375,
            594.0,
            236.7947998046875,
            608.9769439697266
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/88/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Newton's method is an example of an <b>algorithm</b>: it is a mechanical process for solving a category of problems (in this case, computing square roots).</p>",
          "polygon": [
            [
              128.49609375,
              621.0703125
            ],
            [
              525.5950927734375,
              621.0703125
            ],
            [
              525.5950927734375,
              643.8498992919922
            ],
            [
              128.49609375,
              643.8498992919922
            ]
          ],
          "bbox": [
            128.49609375,
            621.0703125,
            525.5950927734375,
            643.8498992919922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/88/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is not easy to define an algorithm. It might help to start with something that is not an algorithm. When you learned to multiply single-digit numbers, you probably memorized the multiplication table. In effect, you memorized 100 specific solutions. That kind of knowledge is not algorithmic.</p>",
          "polygon": [
            [
              128.6455078125,
              653.5546875
            ],
            [
              525.9375,
              653.5546875
            ],
            [
              525.9375,
              700.8348999023438
            ],
            [
              128.6455078125,
              700.8348999023438
            ]
          ],
          "bbox": [
            128.6455078125,
            653.5546875,
            525.9375,
            700.8348999023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "2": "/page/86/SectionHeader/13",
        "3": "/page/88/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/89/Page/152",
      "block_type": "Page",
      "html": "<content-ref src='/page/89/PageHeader/0'></content-ref><content-ref src='/page/89/PageHeader/15'></content-ref><content-ref src='/page/89/Text/1'></content-ref><content-ref src='/page/89/Text/2'></content-ref><content-ref src='/page/89/Text/3'></content-ref><content-ref src='/page/89/Text/4'></content-ref><content-ref src='/page/89/Text/5'></content-ref><content-ref src='/page/89/SectionHeader/6'></content-ref><content-ref src='/page/89/Text/7'></content-ref><content-ref src='/page/89/Text/8'></content-ref><content-ref src='/page/89/Text/9'></content-ref><content-ref src='/page/89/Text/10'></content-ref><content-ref src='/page/89/Text/11'></content-ref><content-ref src='/page/89/Text/12'></content-ref><content-ref src='/page/89/SectionHeader/13'></content-ref><content-ref src='/page/89/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/89/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.2314453125
            ],
            [
              482.90625,
              60.2314453125
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.2314453125,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/89/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.39013671875,
              59.98974609375
            ],
            [
              97.79150390625,
              59.98974609375
            ],
            [
              97.79150390625,
              70.33447265625
            ],
            [
              85.39013671875,
              70.33447265625
            ]
          ],
          "bbox": [
            85.39013671875,
            59.98974609375,
            97.79150390625,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you were \"lazy,\" you probably cheated by learning a few tricks. For example, to find the product of <i>n</i> and 9, you can write <i>n</i> − 1 as the first digit and 10 − <i>n</i> as the second digit. This trick is a general solution for multiplying any single-digit number by 9. That's an algorithm!</p>",
          "polygon": [
            [
              85.3154296875,
              87.3984375
            ],
            [
              483.50390625,
              87.3984375
            ],
            [
              483.50390625,
              135.38092041015625
            ],
            [
              85.3154296875,
              135.38092041015625
            ]
          ],
          "bbox": [
            85.3154296875,
            87.3984375,
            483.50390625,
            135.38092041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Similarly, the techniques you learned for addition with carrying, subtraction with borrowing, and long division are all algorithms. One of the characteristics of algorithms is that they do not require any intelligence to carry out. They are mechanical processes in which each step follows from the last according to a simple set of rules.</p>",
          "polygon": [
            [
              85.46484375,
              144.439453125
            ],
            [
              483.50390625,
              144.439453125
            ],
            [
              483.50390625,
              192.05889892578125
            ],
            [
              85.46484375,
              192.05889892578125
            ]
          ],
          "bbox": [
            85.46484375,
            144.439453125,
            483.50390625,
            192.05889892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In my opinion, it is embarrassing that humans spend so much time in school learning to execute algorithms that, quite literally, require no intelligence.</p>",
          "polygon": [
            [
              85.6142578125,
              200.70703125
            ],
            [
              483.50390625,
              200.70703125
            ],
            [
              483.50390625,
              224.34783935546875
            ],
            [
              85.6142578125,
              224.34783935546875
            ]
          ],
          "bbox": [
            85.6142578125,
            200.70703125,
            483.50390625,
            224.34783935546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">On the other hand, the process of designing algorithms is interesting, intellectually challenging, and a central part of what we call programming.</p>",
          "polygon": [
            [
              85.6142578125,
              232.611328125
            ],
            [
              482.90625,
              232.611328125
            ],
            [
              482.90625,
              256.6378173828125
            ],
            [
              85.6142578125,
              256.6378173828125
            ]
          ],
          "bbox": [
            85.6142578125,
            232.611328125,
            482.90625,
            256.6378173828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Some of the things that people do naturally, without difficulty or conscious thought, are the hardest to express algorithmically. Understanding natural language is a good example. We all do it, but so far no one has been able to explain <i>how</i> we do it, at least not in the form of an algorithm.</p>",
          "polygon": [
            [
              85.763671875,
              265.2890625
            ],
            [
              483.50390625,
              265.2890625
            ],
            [
              483.50390625,
              313.62890625
            ],
            [
              85.763671875,
              313.62890625
            ]
          ],
          "bbox": [
            85.763671875,
            265.2890625,
            483.50390625,
            313.62890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/86/SectionHeader/13",
            "3": "/page/88/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/89/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-89-0\"></span><b>7.7 Debugging</b></h2>",
          "polygon": [
            [
              85.46484375,
              340.892578125
            ],
            [
              193.341796875,
              340.892578125
            ],
            [
              193.341796875,
              357.908203125
            ],
            [
              85.46484375,
              357.908203125
            ]
          ],
          "bbox": [
            85.46484375,
            340.892578125,
            193.341796875,
            357.908203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you start writing bigger programs, you might find yourself spending more time debugging. More code means more chances to make an error and more place for bugs to hide.</p>",
          "polygon": [
            [
              85.46484375,
              368.15625
            ],
            [
              482.90625,
              368.15625
            ],
            [
              482.90625,
              391.74609375
            ],
            [
              85.46484375,
              391.74609375
            ]
          ],
          "bbox": [
            85.46484375,
            368.15625,
            482.90625,
            391.74609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One way to cut your debugging time is \"debugging by bisection.\" For example, if there are 100 lines in your program and you check them one at a time, it would take 100 steps.</p>",
          "polygon": [
            [
              85.6142578125,
              411.46875
            ],
            [
              484.1015625,
              411.46875
            ],
            [
              484.1015625,
              435.8877868652344
            ],
            [
              85.6142578125,
              435.8877868652344
            ]
          ],
          "bbox": [
            85.6142578125,
            411.46875,
            484.1015625,
            435.8877868652344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Instead, try to break the problem in half. Look at the middle of the program, or near it, for an intermediate value you can check. Add a print statement (or something else that has a verifiable effect) and run the program.</p>",
          "polygon": [
            [
              85.9130859375,
              444.33984375
            ],
            [
              483.50390625,
              444.33984375
            ],
            [
              483.50390625,
              480.3717956542969
            ],
            [
              85.9130859375,
              480.3717956542969
            ]
          ],
          "bbox": [
            85.9130859375,
            444.33984375,
            483.50390625,
            480.3717956542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the mid-point check is incorrect, there must be a problem in the first half of the program. If it is correct, the problem is in the second half.</p>",
          "polygon": [
            [
              85.763671875,
              489.19921875
            ],
            [
              483.205078125,
              489.19921875
            ],
            [
              483.205078125,
              512.6607971191406
            ],
            [
              85.763671875,
              512.6607971191406
            ]
          ],
          "bbox": [
            85.763671875,
            489.19921875,
            483.205078125,
            512.6607971191406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Every time you perform a check like this, you halve the number of lines you have to search. After six steps (which is fewer than 100), you would be down to one or two lines of code, at least in theory.</p>",
          "polygon": [
            [
              85.9130859375,
              521.296875
            ],
            [
              483.50390625,
              521.296875
            ],
            [
              483.50390625,
              557.1448059082031
            ],
            [
              85.9130859375,
              557.1448059082031
            ]
          ],
          "bbox": [
            85.9130859375,
            521.296875,
            483.50390625,
            557.1448059082031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In practice it is not always clear what the \"middle of the program\" is and not always possible to check it. It doesn't make sense to count lines and find the exact midpoint. Instead, think about places in the program where there might be errors and places where it is easy to put a check. Then choose a spot where you think the chances are about the same that the bug is before or after the check.</p>",
          "polygon": [
            [
              85.9130859375,
              565.76953125
            ],
            [
              484.1015625,
              565.76953125
            ],
            [
              484.1015625,
              626.0168151855469
            ],
            [
              85.9130859375,
              626.0168151855469
            ]
          ],
          "bbox": [
            85.9130859375,
            565.76953125,
            484.1015625,
            626.0168151855469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/89/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-89-1\"></span><b>7.8 Glossary</b></h2>",
          "polygon": [
            [
              85.6142578125,
              653.94140625
            ],
            [
              177.205078125,
              653.94140625
            ],
            [
              177.205078125,
              669.645866394043
            ],
            [
              85.6142578125,
              669.645866394043
            ]
          ],
          "bbox": [
            85.6142578125,
            653.94140625,
            177.205078125,
            669.645866394043
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/89/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>multiple assignment:</b> Making more than one assignment to the same variable during the execution of a program.</p>",
          "polygon": [
            [
              86.39991760253906,
              676.7578125
            ],
            [
              483.802734375,
              676.7578125
            ],
            [
              483.802734375,
              700.8348236083984
            ],
            [
              86.39991760253906,
              700.8348236083984
            ]
          ],
          "bbox": [
            86.39991760253906,
            676.7578125,
            483.802734375,
            700.8348236083984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "2": "/page/89/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/90/Page/237",
      "block_type": "Page",
      "html": "<content-ref src='/page/90/PageHeader/0'></content-ref><content-ref src='/page/90/PageHeader/17'></content-ref><content-ref src='/page/90/Text/1'></content-ref><content-ref src='/page/90/Text/2'></content-ref><content-ref src='/page/90/Text/3'></content-ref><content-ref src='/page/90/Text/4'></content-ref><content-ref src='/page/90/Text/5'></content-ref><content-ref src='/page/90/Text/6'></content-ref><content-ref src='/page/90/SectionHeader/7'></content-ref><content-ref src='/page/90/Text/8'></content-ref><content-ref src='/page/90/Code/9'></content-ref><content-ref src='/page/90/Text/10'></content-ref><content-ref src='/page/90/Text/11'></content-ref><content-ref src='/page/90/Code/12'></content-ref><content-ref src='/page/90/Text/13'></content-ref><content-ref src='/page/90/Text/14'></content-ref><content-ref src='/page/90/Text/15'></content-ref><content-ref src='/page/90/Equation/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/90/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.283203125,
              61.1015625
            ],
            [
              525.041015625,
              61.1015625
            ],
            [
              525.041015625,
              70.0927734375
            ],
            [
              514.283203125,
              70.0927734375
            ]
          ],
          "bbox": [
            514.283203125,
            61.1015625,
            525.041015625,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>update:</b> An assignment where the new value of the variable depends on the old.</p>",
          "polygon": [
            [
              129.2431640625,
              88.55859375
            ],
            [
              484.69921875,
              88.55859375
            ],
            [
              484.69921875,
              98.79791259765625
            ],
            [
              129.2431640625,
              98.79791259765625
            ]
          ],
          "bbox": [
            129.2431640625,
            88.55859375,
            484.69921875,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>initialization:</b> An assignment that gives an initial value to a variable that will be updated.</p>",
          "polygon": [
            [
              128.9443359375,
              108.16015625
            ],
            [
              525.6035766601562,
              108.16015625
            ],
            [
              525.6035766601562,
              118.21990966796875
            ],
            [
              128.9443359375,
              118.21990966796875
            ]
          ],
          "bbox": [
            128.9443359375,
            108.16015625,
            525.6035766601562,
            118.21990966796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>increment:</b> An update that increases the value of a variable (often by one).</p>",
          "polygon": [
            [
              128.6455078125,
              139.21875
            ],
            [
              458.365234375,
              139.21875
            ],
            [
              458.365234375,
              149.83489990234375
            ],
            [
              128.6455078125,
              149.83489990234375
            ]
          ],
          "bbox": [
            128.6455078125,
            139.21875,
            458.365234375,
            149.83489990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>decrement:</b> An update that decreases the value of a variable.</p>",
          "polygon": [
            [
              128.794921875,
              159.134765625
            ],
            [
              398.63671875,
              159.134765625
            ],
            [
              398.63671875,
              169.25689697265625
            ],
            [
              128.794921875,
              169.25689697265625
            ]
          ],
          "bbox": [
            128.794921875,
            159.134765625,
            398.63671875,
            169.25689697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>iteration:</b> Repeated execution of a set of statements using either a recursive function call or a loop.</p>",
          "polygon": [
            [
              128.3466796875,
              178.3740234375
            ],
            [
              525.6027221679688,
              178.3740234375
            ],
            [
              525.6027221679688,
              200.87286376953125
            ],
            [
              128.3466796875,
              200.87286376953125
            ]
          ],
          "bbox": [
            128.3466796875,
            178.3740234375,
            525.6027221679688,
            200.87286376953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>infinite loop:</b> A loop in which the terminating condition is never satisfied.</p>",
          "polygon": [
            [
              128.9443359375,
              209.794921875
            ],
            [
              457.8475646972656,
              209.794921875
            ],
            [
              457.8475646972656,
              220.29486083984375
            ],
            [
              128.9443359375,
              220.29486083984375
            ]
          ],
          "bbox": [
            128.9443359375,
            209.794921875,
            457.8475646972656,
            220.29486083984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/90/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-90-0\"></span><b>7.9 Exercises</b></h4>",
          "polygon": [
            [
              128.49609375,
              248.41668701171875
            ],
            [
              221.73046875,
              248.41668701171875
            ],
            [
              221.73046875,
              262.76287841796875
            ],
            [
              128.49609375,
              262.76287841796875
            ]
          ],
          "bbox": [
            128.49609375,
            248.41668701171875,
            221.73046875,
            262.76287841796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 7.3.</b> <i>To test the square root algorithm in this chapter, you could compare it with</i> math.sqrt<i>. Write a function named</i> test_square_root <i>that prints a table like this:</i></p>",
          "polygon": [
            [
              129.2431640625,
              273.796875
            ],
            [
              525.5997314453125,
              273.796875
            ],
            [
              525.5997314453125,
              296.2452392578125
            ],
            [
              129.2431640625,
              296.2452392578125
            ]
          ],
          "bbox": [
            129.2431640625,
            273.796875,
            525.5997314453125,
            296.2452392578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Code/9",
          "block_type": "Code",
          "html": "<pre>1.0 1.0 1.0 0.0\n2.0 1.41421356237 1.41421356237 2.22044604925e-16\n3.0 1.73205080757 1.73205080757 0.0\n4.0 2.0 2.0 0.0\n5.0 2.2360679775 2.2360679775 0.0\n6.0 2.44948974278 2.44948974278 0.0\n7.0 2.64575131106 2.64575131106 0.0\n8.0 2.82842712475 2.82842712475 4.4408920985e-16\n9.0 3.0 3.0 0.0</pre>",
          "polygon": [
            [
              128.72021484375,
              301.5776672363281
            ],
            [
              386.982421875,
              301.5776672363281
            ],
            [
              386.982421875,
              409.0942687988281
            ],
            [
              128.72021484375,
              409.0942687988281
            ]
          ],
          "bbox": [
            128.72021484375,
            301.5776672363281,
            386.982421875,
            409.0942687988281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The first column is a number, a; the second column is the square root of a computed with the function</i> <i>from Section </i><i><a href=\"#page-87-0\">7.5;</a></i><i> the third column is the square root computed by</i> math.sqrt<i>; the fourth column is</i> <i>the absolute value of the difference between the two estimates.</i></p>",
          "polygon": [
            [
              128.197265625,
              426.55078125
            ],
            [
              525.6033935546875,
              426.55078125
            ],
            [
              525.6033935546875,
              460.9491271972656
            ],
            [
              128.197265625,
              460.9491271972656
            ]
          ],
          "bbox": [
            128.197265625,
            426.55078125,
            525.6033935546875,
            460.9491271972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 7.4.</b> <i>The built-in function</i> eval <i>takes a string and evaluates it using the Python inter</i><i>preter. For example:</i></p>",
          "polygon": [
            [
              128.6455078125,
              462.90234375
            ],
            [
              525.5967407226562,
              462.90234375
            ],
            [
              525.5967407226562,
              485.338134765625
            ],
            [
              128.6455078125,
              485.338134765625
            ]
          ],
          "bbox": [
            128.6455078125,
            462.90234375,
            525.5967407226562,
            485.338134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; eval('1 + 2 * 3')\n7\n&gt;&gt;&gt; import math\n&gt;&gt;&gt; eval('math.sqrt(5)')\n2.2360679774997898\n&gt;&gt;&gt; eval('type(math.pi)')\n&lt;type 'float'&gt;</pre>",
          "polygon": [
            [
              128.794921875,
              490.6936950683594
            ],
            [
              260.32940673828125,
              490.6936950683594
            ],
            [
              260.32940673828125,
              573.8223114013672
            ],
            [
              128.794921875,
              573.8223114013672
            ]
          ],
          "bbox": [
            128.794921875,
            490.6936950683594,
            260.32940673828125,
            573.8223114013672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a function called</i> eval_loop <i>that iteratively prompts the user, takes the resulting input and</i> <i>evaluates it using</i> eval<i>, and prints the result.</i></p>",
          "polygon": [
            [
              128.794921875,
              578.91796875
            ],
            [
              525.5994873046875,
              578.91796875
            ],
            [
              525.5994873046875,
              601.3113098144531
            ],
            [
              128.794921875,
              601.3113098144531
            ]
          ],
          "bbox": [
            128.794921875,
            578.91796875,
            525.5994873046875,
            601.3113098144531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>It should continue until the user enters</i> 'done'<i>, and then return the value of the last expression it</i> <i>evaluated.</i></p>",
          "polygon": [
            [
              128.9443359375,
              610.5925598144531
            ],
            [
              525.6043090820312,
              610.5925598144531
            ],
            [
              525.6043090820312,
              632.7491607666016
            ],
            [
              128.9443359375,
              632.7491607666016
            ]
          ],
          "bbox": [
            128.9443359375,
            610.5925598144531,
            525.6043090820312,
            632.7491607666016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 7.5.</b> <i>The mathematician Srinivasa Ramanujan found an infinite series that can be used to</i> <i>generate a numerical approximation of</i> 1/<i>π</i><i>:</i></p>",
          "polygon": [
            [
              128.49609375,
              634.9805603027344
            ],
            [
              525.5974731445312,
              634.9805603027344
            ],
            [
              525.5974731445312,
              658.1195068359375
            ],
            [
              128.49609375,
              658.1195068359375
            ]
          ],
          "bbox": [
            128.49609375,
            634.9805603027344,
            525.5974731445312,
            658.1195068359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/90/Equation/16",
          "block_type": "Equation",
          "html": "<p block-type=\"Equation\"><math display=\"block\">\\frac{1}{\\pi} = \\frac{2\\sqrt{2}}{9801} \\sum_{k=0}^{\\infty} \\frac{(4k)!(1103 + 26390k)}{(k!)^4 396^{4k}}</math></p>",
          "polygon": [
            [
              248.923828125,
              667.3243103027344
            ],
            [
              404.6767883300781,
              667.3243103027344
            ],
            [
              404.6767883300781,
              704.0226211547852
            ],
            [
              248.923828125,
              704.0226211547852
            ]
          ],
          "bbox": [
            248.923828125,
            667.3243103027344,
            404.6767883300781,
            704.0226211547852
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "2": "/page/89/SectionHeader/13",
        "4": "/page/90/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/91/Page/52",
      "block_type": "Page",
      "html": "<content-ref src='/page/91/PageHeader/0'></content-ref><content-ref src='/page/91/PageHeader/3'></content-ref><content-ref src='/page/91/Text/1'></content-ref><content-ref src='/page/91/Text/2'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/91/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.90625,
              60.8115234375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/91/PageHeader/3",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.6142578125,
              60.6181640625
            ],
            [
              96.9697265625,
              60.6181640625
            ],
            [
              96.9697265625,
              70.3828125
            ],
            [
              85.6142578125,
              70.3828125
            ]
          ],
          "bbox": [
            85.6142578125,
            60.6181640625,
            96.9697265625,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/91/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a function called</i> estimate_pi <i>that uses this formula to compute and return an estimate of</i> <i>π</i><i>. It should use a</i> while <i>loop to compute terms of the summation until the last term is smaller than</i> 1e-15 <i>(which is Python notation for</i> 10−15<i>). You can check the result by comparing it to</i> math.pi<i>.</i></p>",
          "polygon": [
            [
              85.166015625,
              88.55859375
            ],
            [
              482.90625,
              88.55859375
            ],
            [
              482.90625,
              123.1868896484375
            ],
            [
              85.166015625,
              123.1868896484375
            ]
          ],
          "bbox": [
            85.166015625,
            88.55859375,
            482.90625,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/91/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/pi.py\">http:</a> <a href=\"http://thinkpython.com/code/pi.py\">//</a> <a href=\"http://thinkpython.com/code/pi.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/pi.py\">com/</a> <a href=\"http://thinkpython.com/code/pi.py\">code/</a> <a href=\"http://thinkpython.com/code/pi.py\">pi.</a> <a href=\"http://thinkpython.com/code/pi.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              86.2119140625,
              132.5478515625
            ],
            [
              313.45562744140625,
              132.5478515625
            ],
            [
              313.45562744140625,
              143.15118408203125
            ],
            [
              86.2119140625,
              143.15118408203125
            ]
          ],
          "bbox": [
            86.2119140625,
            132.5478515625,
            313.45562744140625,
            143.15118408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/89/SectionHeader/13",
            "4": "/page/90/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/84/SectionHeader/1",
        "2": "/page/89/SectionHeader/13",
        "4": "/page/90/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/92/Page/140",
      "block_type": "Page",
      "html": "<content-ref src='/page/92/SectionHeader/0'></content-ref><content-ref src='/page/92/SectionHeader/1'></content-ref><content-ref src='/page/92/SectionHeader/2'></content-ref><content-ref src='/page/92/Text/3'></content-ref><content-ref src='/page/92/Text/4'></content-ref><content-ref src='/page/92/Text/5'></content-ref><content-ref src='/page/92/Text/6'></content-ref><content-ref src='/page/92/Text/7'></content-ref><content-ref src='/page/92/Text/8'></content-ref><content-ref src='/page/92/Text/9'></content-ref><content-ref src='/page/92/Code/10'></content-ref><content-ref src='/page/92/Text/11'></content-ref><content-ref src='/page/92/Text/12'></content-ref><content-ref src='/page/92/Code/13'></content-ref><content-ref src='/page/92/SectionHeader/14'></content-ref><content-ref src='/page/92/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/92/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-92-0\"></span><b>Chapter 8</b></h2>",
          "polygon": [
            [
              128.197265625,
              164.62750244140625
            ],
            [
              220.84561157226562,
              164.62750244140625
            ],
            [
              220.84561157226562,
              185.28997802734375
            ],
            [
              128.197265625,
              185.28997802734375
            ]
          ],
          "bbox": [
            128.197265625,
            164.62750244140625,
            220.84561157226562,
            185.28997802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/84/SectionHeader/1",
            "2": "/page/92/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/92/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Strings</b></h1>",
          "polygon": [
            [
              129.2431640625,
              220.4903564453125
            ],
            [
              211.1220703125,
              220.4903564453125
            ],
            [
              211.1220703125,
              245.27740478515625
            ],
            [
              129.2431640625,
              245.27740478515625
            ]
          ],
          "bbox": [
            129.2431640625,
            220.4903564453125,
            211.1220703125,
            245.27740478515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/92/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-92-1\"></span><b>8.1 A string is a sequence</b></h4>",
          "polygon": [
            [
              128.49609375,
              294.6708068847656
            ],
            [
              304.5088806152344,
              294.6708068847656
            ],
            [
              304.5088806152344,
              309.01702880859375
            ],
            [
              128.49609375,
              309.01702880859375
            ]
          ],
          "bbox": [
            128.49609375,
            294.6708068847656,
            304.5088806152344,
            309.01702880859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A string is a <b>sequence</b> of characters. You can access the characters one at a time with the bracket operator:</p>",
          "polygon": [
            [
              129.2431640625,
              321.9742431640625
            ],
            [
              526.53515625,
              321.9742431640625
            ],
            [
              526.53515625,
              344.22796630859375
            ],
            [
              129.2431640625,
              344.22796630859375
            ]
          ],
          "bbox": [
            129.2431640625,
            321.9742431640625,
            526.53515625,
            344.22796630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; fruit = 'banana' &gt;&gt;&gt; letter = fruit[1]</p>",
          "polygon": [
            [
              128.57080078125,
              350.7878112792969
            ],
            [
              239.43765258789062,
              350.7878112792969
            ],
            [
              239.43765258789062,
              372.990234375
            ],
            [
              128.57080078125,
              372.990234375
            ]
          ],
          "bbox": [
            128.57080078125,
            350.7878112792969,
            239.43765258789062,
            372.990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second statement selects character number 1 from fruit and assigns it to letter.</p>",
          "polygon": [
            [
              129.09375,
              379.65380859375
            ],
            [
              506.2596740722656,
              379.65380859375
            ],
            [
              506.2596740722656,
              389.7659606933594
            ],
            [
              129.09375,
              389.7659606933594
            ]
          ],
          "bbox": [
            129.09375,
            379.65380859375,
            506.2596740722656,
            389.7659606933594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The expression in brackets is called an <b>index</b>. The index indicates which character in the sequence you want (hence the name).</p>",
          "polygon": [
            [
              129.2431640625,
              399.8671875
            ],
            [
              526.53515625,
              399.8671875
            ],
            [
              526.53515625,
              422.6039733886719
            ],
            [
              129.2431640625,
              422.6039733886719
            ]
          ],
          "bbox": [
            129.2431640625,
            399.8671875,
            526.53515625,
            422.6039733886719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But you might not get what you expect:</p>",
          "polygon": [
            [
              129.46728515625,
              433.125
            ],
            [
              304.505859375,
              433.125
            ],
            [
              304.505859375,
              443.24798583984375
            ],
            [
              129.46728515625,
              443.24798583984375
            ]
          ],
          "bbox": [
            129.46728515625,
            433.125,
            304.505859375,
            443.24798583984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; print letter a</p>",
          "polygon": [
            [
              129.5999755859375,
              449.8078308105469
            ],
            [
              213.2858123779297,
              449.8078308105469
            ],
            [
              213.2858123779297,
              477.2109375
            ],
            [
              129.5999755859375,
              477.2109375
            ]
          ],
          "bbox": [
            129.5999755859375,
            449.8078308105469,
            213.2858123779297,
            477.2109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For most people, the first letter of 'banana' is b, not a. But for computer scientists, the index is an offset from the beginning of the string, and the offset of the first letter is zero.</p>",
          "polygon": [
            [
              129.59994506835938,
              478.673828125
            ],
            [
              525.9375,
              478.673828125
            ],
            [
              525.9375,
              501.1875
            ],
            [
              129.59994506835938,
              501.1875
            ]
          ],
          "bbox": [
            129.59994506835938,
            478.673828125,
            525.9375,
            501.1875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; letter = fruit[0]\n&gt;&gt;&gt; print letter\nb</pre>",
          "polygon": [
            [
              128.42138671875,
              507.54083251953125
            ],
            [
              239.43759155273438,
              507.54083251953125
            ],
            [
              239.43759155273438,
              541.8914337158203
            ],
            [
              128.42138671875,
              541.8914337158203
            ]
          ],
          "bbox": [
            128.42138671875,
            507.54083251953125,
            239.43759155273438,
            541.8914337158203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So b is the 0th letter (\"zero-eth\") of 'banana', a is the 1th letter (\"one-eth\"), and n is the 2th (\"two-eth\") letter.</p>",
          "polygon": [
            [
              129.09375,
              548.3671875
            ],
            [
              525.9375,
              548.3671875
            ],
            [
              525.9375,
              570.9079895019531
            ],
            [
              129.09375,
              570.9079895019531
            ]
          ],
          "bbox": [
            129.09375,
            548.3671875,
            525.9375,
            570.9079895019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can use any expression, including variables and operators, as an index, but the value of the index has to be an integer. Otherwise you get:</p>",
          "polygon": [
            [
              128.49609375,
              581.23828125
            ],
            [
              526.53515625,
              581.23828125
            ],
            [
              526.53515625,
              603.7460021972656
            ],
            [
              128.49609375,
              603.7460021972656
            ]
          ],
          "bbox": [
            128.49609375,
            581.23828125,
            526.53515625,
            603.7460021972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/Code/13",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; letter = fruit[1.5]\nTypeError: string indices must be integers, not float</pre>",
          "polygon": [
            [
              128.57080078125,
              610.3058471679688
            ],
            [
              406.8192138671875,
              610.3058471679688
            ],
            [
              406.8192138671875,
              632.4624481201172
            ],
            [
              128.57080078125,
              632.4624481201172
            ]
          ],
          "bbox": [
            128.57080078125,
            610.3058471679688,
            406.8192138671875,
            632.4624481201172
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "4": "/page/92/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/92/SectionHeader/14",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-92-2\"></span><b>8.2</b> len</h2>",
          "polygon": [
            [
              127.67431640625,
              661.3962249755859
            ],
            [
              183.7425537109375,
              661.3962249755859
            ],
            [
              183.7425537109375,
              677.8190460205078
            ],
            [
              127.67431640625,
              677.8190460205078
            ]
          ],
          "bbox": [
            127.67431640625,
            661.3962249755859,
            183.7425537109375,
            677.8190460205078
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/92/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">len is a built-in function that returns the number of characters in a string:</p>",
          "polygon": [
            [
              128.3466796875,
              690.7228393554688
            ],
            [
              452.2249755859375,
              690.7228393554688
            ],
            [
              452.2249755859375,
              700.8349990844727
            ],
            [
              128.3466796875,
              700.8349990844727
            ]
          ],
          "bbox": [
            128.3466796875,
            690.7228393554688,
            452.2249755859375,
            700.8349990844727
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/92/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/93/Page/198",
      "block_type": "Page",
      "html": "<content-ref src='/page/93/PageHeader/0'></content-ref><content-ref src='/page/93/PageHeader/16'></content-ref><content-ref src='/page/93/Code/1'></content-ref><content-ref src='/page/93/Text/2'></content-ref><content-ref src='/page/93/Code/3'></content-ref><content-ref src='/page/93/Text/4'></content-ref><content-ref src='/page/93/Code/5'></content-ref><content-ref src='/page/93/Text/6'></content-ref><content-ref src='/page/93/SectionHeader/7'></content-ref><content-ref src='/page/93/Text/8'></content-ref><content-ref src='/page/93/Code/9'></content-ref><content-ref src='/page/93/Text/10'></content-ref><content-ref src='/page/93/Text/11'></content-ref><content-ref src='/page/93/Text/12'></content-ref><content-ref src='/page/93/Code/13'></content-ref><content-ref src='/page/93/Text/14'></content-ref><content-ref src='/page/93/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/93/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.4034118652344,
              60.66650390625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              60.95654296875
            ],
            [
              96.89501953125,
              60.95654296875
            ],
            [
              96.89501953125,
              70.52783203125
            ],
            [
              85.68896484375,
              70.52783203125
            ]
          ],
          "bbox": [
            85.68896484375,
            60.95654296875,
            96.89501953125,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fruit = 'banana'\n&gt;&gt;&gt; len(fruit)\n6</pre>",
          "polygon": [
            [
              86.2119140625,
              88.68572998046875
            ],
            [
              191.548828125,
              88.68572998046875
            ],
            [
              191.548828125,
              123.03729248046875
            ],
            [
              86.2119140625,
              123.03729248046875
            ]
          ],
          "bbox": [
            86.2119140625,
            88.68572998046875,
            191.548828125,
            123.03729248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To get the last letter of a string, you might be tempted to try something like this:</p>",
          "polygon": [
            [
              86.4000015258789,
              130.2275390625
            ],
            [
              438.08203125,
              130.2275390625
            ],
            [
              438.08203125,
              140.8623046875
            ],
            [
              86.4000015258789,
              140.8623046875
            ]
          ],
          "bbox": [
            86.4000015258789,
            130.2275390625,
            438.08203125,
            140.8623046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; length = len(fruit)\n&gt;&gt;&gt; last = fruit[length]\nIndexError: string index out of range</pre>",
          "polygon": [
            [
              85.46484375,
              148.13671875
            ],
            [
              279.93341064453125,
              148.13671875
            ],
            [
              279.93341064453125,
              182.48834228515625
            ],
            [
              85.46484375,
              182.48834228515625
            ]
          ],
          "bbox": [
            85.46484375,
            148.13671875,
            279.93341064453125,
            182.48834228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The reason for the IndexError is that there is no letter in 'banana' with the index 6. Since we started counting at zero, the six letters are numbered 0 to 5. To get the last character, you have to subtract 1 from length:</p>",
          "polygon": [
            [
              86.361328125,
              189.2021484375
            ],
            [
              482.40338134765625,
              189.2021484375
            ],
            [
              482.40338134765625,
              224.5579833984375
            ],
            [
              86.361328125,
              224.5579833984375
            ]
          ],
          "bbox": [
            86.361328125,
            189.2021484375,
            482.40338134765625,
            224.5579833984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; last = fruit[length-1]\n&gt;&gt;&gt; print last\na</pre>",
          "polygon": [
            [
              85.9130859375,
              231.976806640625
            ],
            [
              222.39944458007812,
              231.976806640625
            ],
            [
              222.39944458007812,
              266.32843017578125
            ],
            [
              85.9130859375,
              266.32843017578125
            ]
          ],
          "bbox": [
            85.9130859375,
            231.976806640625,
            222.39944458007812,
            266.32843017578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Alternatively, you can use negative indices, which count backward from the end of the string. The expression fruit[-1] yields the last letter, fruit[-2] yields the second to last, and so on.</p>",
          "polygon": [
            [
              85.9130859375,
              273.41015625
            ],
            [
              482.40338134765625,
              273.41015625
            ],
            [
              482.40338134765625,
              308.3970031738281
            ],
            [
              85.9130859375,
              308.3970031738281
            ]
          ],
          "bbox": [
            85.9130859375,
            273.41015625,
            482.40338134765625,
            308.3970031738281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/92/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/93/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-93-0\"></span><b>8.3 Traversal with a</b> for <b>loop</b></h2>",
          "polygon": [
            [
              85.763671875,
              339.75921630859375
            ],
            [
              281.5877685546875,
              339.75921630859375
            ],
            [
              281.5877685546875,
              356.18206787109375
            ],
            [
              85.763671875,
              356.18206787109375
            ]
          ],
          "bbox": [
            85.763671875,
            339.75921630859375,
            281.5877685546875,
            356.18206787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A lot of computations involve processing a string one character at a time. Often they start at the beginning, select each character in turn, do something to it, and continue until the end. This pattern of processing is called a <b>traversal</b>. One way to write a traversal is with a while loop:</p>",
          "polygon": [
            [
              85.6142578125,
              369.896484375
            ],
            [
              482.4033203125,
              369.896484375
            ],
            [
              482.4033203125,
              416.9840087890625
            ],
            [
              85.6142578125,
              416.9840087890625
            ]
          ],
          "bbox": [
            85.6142578125,
            369.896484375,
            482.4033203125,
            416.9840087890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Code/9",
          "block_type": "Code",
          "html": "<pre>index = 0\nwhile index &lt; len(fruit):\n    letter = fruit[index]\n    print letter\n    index = index + 1</pre>",
          "polygon": [
            [
              85.763671875,
              424.4028625488281
            ],
            [
              219.33984375,
              424.4028625488281
            ],
            [
              219.33984375,
              483.3984375
            ],
            [
              85.763671875,
              483.3984375
            ]
          ],
          "bbox": [
            85.763671875,
            424.4028625488281,
            219.33984375,
            483.3984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This loop traverses the string and displays each letter on a line by itself. The loop condition is index &lt; len(fruit), so when index is equal to the length of the string, the condition is false, and the body of the loop is not executed. The last character accessed is the one with the index len(fruit)-1, which is the last character in the string.</p>",
          "polygon": [
            [
              85.763671875,
              490.74609375
            ],
            [
              482.40338134765625,
              490.74609375
            ],
            [
              482.40338134765625,
              537.4070434570312
            ],
            [
              85.763671875,
              537.4070434570312
            ]
          ],
          "bbox": [
            85.763671875,
            490.74609375,
            482.40338134765625,
            537.4070434570312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 8.1.</b> <i>Write a function that takes a string as an argument and displays the letters backward,</i> <i>one per line.</i></p>",
          "polygon": [
            [
              85.6142578125,
              539.0859375
            ],
            [
              482.4005126953125,
              539.0859375
            ],
            [
              482.4005126953125,
              561.6233520507812
            ],
            [
              85.6142578125,
              561.6233520507812
            ]
          ],
          "bbox": [
            85.6142578125,
            539.0859375,
            482.4005126953125,
            561.6233520507812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another way to write a traversal is with a for loop:</p>",
          "polygon": [
            [
              86.28662109375,
              572.73046875
            ],
            [
              312.6154479980469,
              572.73046875
            ],
            [
              312.6154479980469,
              583.2980499267578
            ],
            [
              86.28662109375,
              583.2980499267578
            ]
          ],
          "bbox": [
            86.28662109375,
            572.73046875,
            312.6154479980469,
            583.2980499267578
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Code/13",
          "block_type": "Code",
          "html": "<pre>for char in fruit:\n    print char</pre>",
          "polygon": [
            [
              85.6142578125,
              590.51953125
            ],
            [
              181.6875,
              590.51953125
            ],
            [
              181.6875,
              612.94921875
            ],
            [
              85.6142578125,
              612.94921875
            ]
          ],
          "bbox": [
            85.6142578125,
            590.51953125,
            181.6875,
            612.94921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each time through the loop, the next character in the string is assigned to the variable char. The loop continues until no characters are left.</p>",
          "polygon": [
            [
              86.39997863769531,
              620.296875
            ],
            [
              482.399658203125,
              620.296875
            ],
            [
              482.399658203125,
              642.7500610351562
            ],
            [
              86.39997863769531,
              642.7500610351562
            ]
          ],
          "bbox": [
            86.39997863769531,
            620.296875,
            482.399658203125,
            642.7500610351562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/93/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following example shows how to use concatenation (string addition) and a for loop to generate an abecedarian series (that is, in alphabetical order). In Robert McCloskey's book <i>Make Way for Ducklings</i>, the names of the ducklings are Jack, Kack, Lack, Mack, Nack, Ouack, Pack, and Quack. This loop outputs these names in order:</p>",
          "polygon": [
            [
              85.763671875,
              653.94140625
            ],
            [
              482.4034423828125,
              653.94140625
            ],
            [
              482.4034423828125,
              700.8350677490234
            ],
            [
              85.763671875,
              700.8350677490234
            ]
          ],
          "bbox": [
            85.763671875,
            653.94140625,
            482.4034423828125,
            700.8350677490234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/93/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/94/Page/172",
      "block_type": "Page",
      "html": "<content-ref src='/page/94/PageHeader/0'></content-ref><content-ref src='/page/94/PageHeader/12'></content-ref><content-ref src='/page/94/FigureGroup/170'></content-ref><content-ref src='/page/94/Code/3'></content-ref><content-ref src='/page/94/SectionHeader/4'></content-ref><content-ref src='/page/94/Text/5'></content-ref><content-ref src='/page/94/Code/6'></content-ref><content-ref src='/page/94/Text/7'></content-ref><content-ref src='/page/94/Text/8'></content-ref><content-ref src='/page/94/Code/9'></content-ref><content-ref src='/page/94/Text/10'></content-ref><content-ref src='/page/94/Code/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/94/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.7490234375,
              61.05322265625
            ],
            [
              525.6033935546875,
              61.05322265625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              127.7490234375,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.7490234375,
            61.05322265625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/94/PageHeader/12",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.77734375,
              60.71484375
            ],
            [
              526.53515625,
              60.71484375
            ],
            [
              526.53515625,
              70.4794921875
            ],
            [
              515.77734375,
              70.4794921875
            ]
          ],
          "bbox": [
            515.77734375,
            60.71484375,
            526.53515625,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/94/FigureGroup/170",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/94/Figure/1'></content-ref><content-ref src='/page/94/Caption/2'></content-ref>",
          "polygon": [
            [
              248.7744140625,
              86.044921875
            ],
            [
              408.19921875,
              86.044921875
            ],
            [
              408.19921875,
              152.3529052734375
            ],
            [
              248.7744140625,
              152.3529052734375
            ]
          ],
          "bbox": [
            248.7744140625,
            86.044921875,
            408.19921875,
            152.3529052734375
          ],
          "children": [
            {
              "id": "/page/94/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  248.7744140625,
                  86.044921875
                ],
                [
                  408.19921875,
                  86.044921875
                ],
                [
                  408.19921875,
                  131.291015625
                ],
                [
                  248.7744140625,
                  131.291015625
                ]
              ],
              "bbox": [
                248.7744140625,
                86.044921875,
                408.19921875,
                131.291015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/92/SectionHeader/1",
                "2": "/page/93/SectionHeader/7"
              },
              "images": {
                "/page/94/Figure/1": "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"
              }
            },
            {
              "id": "/page/94/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-94-1\"></span>Figure 8.1: Slice indices.</p>",
              "polygon": [
                [
                  270.5888671875,
                  141.345703125
                ],
                [
                  380.27252197265625,
                  141.345703125
                ],
                [
                  380.27252197265625,
                  152.3529052734375
                ],
                [
                  270.5888671875,
                  152.3529052734375
                ]
              ],
              "bbox": [
                270.5888671875,
                141.345703125,
                380.27252197265625,
                152.3529052734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/92/SectionHeader/1",
                "2": "/page/93/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/94/Code/3",
          "block_type": "Code",
          "html": "<pre>prefixes = 'JKLMNOPQ'\nsuffix = 'ack'\nfor letter in prefixes:\n    print letter + suffix\nThe output is:\nJack\nKack\nLack\nMack\nNack\nOack\nPack\nQack\nOf course, that's not quite right because \"Ouack\" and \"Quack\" are misspelled.\nExercise 8.2. Modify the program to fix this error.</pre>",
          "polygon": [
            [
              107.4287109375,
              172.4765625
            ],
            [
              474.7243347167969,
              172.4765625
            ],
            [
              474.7243347167969,
              373.77685546875
            ],
            [
              107.4287109375,
              373.77685546875
            ]
          ],
          "bbox": [
            107.4287109375,
            172.4765625,
            474.7243347167969,
            373.77685546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/94/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-94-0\"></span><b>8.4 String slices</b></h4>",
          "polygon": [
            [
              128.9443359375,
              401.02734375
            ],
            [
              241.945068359375,
              401.02734375
            ],
            [
              241.945068359375,
              415.7750244140625
            ],
            [
              128.9443359375,
              415.7750244140625
            ]
          ],
          "bbox": [
            128.9443359375,
            401.02734375,
            241.945068359375,
            415.7750244140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/94/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A segment of a string is called a <b>slice</b>. Selecting a slice is similar to selecting a character:</p>",
          "polygon": [
            [
              129.5419921875,
              426.55078125
            ],
            [
              514.7135620117188,
              426.55078125
            ],
            [
              514.7135620117188,
              436.80596923828125
            ],
            [
              129.5419921875,
              436.80596923828125
            ]
          ],
          "bbox": [
            129.5419921875,
            426.55078125,
            514.7135620117188,
            436.80596923828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/94/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; s = 'Monty Python'\n&gt;&gt;&gt; print s[0:5]\nMonty\n&gt;&gt;&gt; print s[6:12]\nPython</pre>",
          "polygon": [
            [
              129.2431640625,
              441.5838317871094
            ],
            [
              244.64134216308594,
              441.5838317871094
            ],
            [
              244.64134216308594,
              501.1875
            ],
            [
              129.2431640625,
              501.1875
            ]
          ],
          "bbox": [
            129.2431640625,
            441.5838317871094,
            244.64134216308594,
            501.1875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/94/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The operator [n:m] returns the part of the string from the \"n-eth\" character to the \"m-eth\" character, including the first but excluding the last. This behavior is counterintuitive, but it might help to imagine the indices pointing <i>between</i> the characters, as in Figure <a href=\"#page-94-1\">8.1.</a></p>",
          "polygon": [
            [
              129.392578125,
              505.2508544921875
            ],
            [
              525.638671875,
              505.2508544921875
            ],
            [
              525.638671875,
              539.7510070800781
            ],
            [
              129.392578125,
              539.7510070800781
            ]
          ],
          "bbox": [
            129.392578125,
            505.2508544921875,
            525.638671875,
            539.7510070800781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/94/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you omit the first index (before the colon), the slice starts at the beginning of the string. If you omit the second index, the slice goes to the end of the string:</p>",
          "polygon": [
            [
              129.09375,
              547.98046875
            ],
            [
              525.603271484375,
              547.98046875
            ],
            [
              525.603271484375,
              570.8070068359375
            ],
            [
              129.09375,
              570.8070068359375
            ]
          ],
          "bbox": [
            129.09375,
            547.98046875,
            525.603271484375,
            570.8070068359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/94/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fruit = 'banana'\n&gt;&gt;&gt; fruit[:3]\n'ban'\n&gt;&gt;&gt; fruit[3:]\n'ana'</pre>",
          "polygon": [
            [
              129.392578125,
              575.05078125
            ],
            [
              234.1833038330078,
              575.05078125
            ],
            [
              234.1833038330078,
              634.60546875
            ],
            [
              129.392578125,
              634.60546875
            ]
          ],
          "bbox": [
            129.392578125,
            575.05078125,
            234.1833038330078,
            634.60546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/94/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the first index is greater than or equal to the second the result is an <b>empty string</b>, represented by two quotation marks:</p>",
          "polygon": [
            [
              129.5419921875,
              639.24609375
            ],
            [
              525.6005249023438,
              639.24609375
            ],
            [
              525.6005249023438,
              661.5570220947266
            ],
            [
              129.5419921875,
              661.5570220947266
            ]
          ],
          "bbox": [
            129.5419921875,
            639.24609375,
            525.6005249023438,
            661.5570220947266
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/94/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fruit = 'banana'\n&gt;&gt;&gt; fruit[3:3]\n''</pre>",
          "polygon": [
            [
              129.59994506835938,
              665.54296875
            ],
            [
              234.1833038330078,
              665.54296875
            ],
            [
              234.1833038330078,
              697.25390625
            ],
            [
              129.59994506835938,
              697.25390625
            ]
          ],
          "bbox": [
            129.59994506835938,
            665.54296875,
            234.1833038330078,
            697.25390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/93/SectionHeader/7",
        "4": "/page/94/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/95/Page/216",
      "block_type": "Page",
      "html": "<content-ref src='/page/95/PageHeader/0'></content-ref><content-ref src='/page/95/PageHeader/19'></content-ref><content-ref src='/page/95/Text/1'></content-ref><content-ref src='/page/95/Text/2'></content-ref><content-ref src='/page/95/SectionHeader/3'></content-ref><content-ref src='/page/95/Text/4'></content-ref><content-ref src='/page/95/Code/5'></content-ref><content-ref src='/page/95/Text/6'></content-ref><content-ref src='/page/95/Text/7'></content-ref><content-ref src='/page/95/Text/8'></content-ref><content-ref src='/page/95/Code/9'></content-ref><content-ref src='/page/95/Text/10'></content-ref><content-ref src='/page/95/SectionHeader/11'></content-ref><content-ref src='/page/95/Text/12'></content-ref><content-ref src='/page/95/Code/13'></content-ref><content-ref src='/page/95/Text/14'></content-ref><content-ref src='/page/95/Text/15'></content-ref><content-ref src='/page/95/Text/16'></content-ref><content-ref src='/page/95/Text/17'></content-ref><content-ref src='/page/95/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/95/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.95654296875
            ],
            [
              482.4034118652344,
              60.95654296875
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.95654296875,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/95/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.8115234375
            ],
            [
              96.59619140625,
              60.8115234375
            ],
            [
              96.59619140625,
              70.8662109375
            ],
            [
              85.53955078125,
              70.8662109375
            ]
          ],
          "bbox": [
            85.53955078125,
            60.8115234375,
            96.59619140625,
            70.8662109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An empty string contains no characters and has length 0, but other than that, it is the same as any other string.</p>",
          "polygon": [
            [
              85.763671875,
              88.55859375
            ],
            [
              482.90625,
              88.55859375
            ],
            [
              482.90625,
              110.99188232421875
            ],
            [
              85.763671875,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.763671875,
            88.55859375,
            482.90625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 8.3.</b> <i>Given that</i> fruit <i>is a string, what does</i> fruit[:] <i>mean?</i></p>",
          "polygon": [
            [
              85.53955078125,
              112.341796875
            ],
            [
              378.8342590332031,
              112.341796875
            ],
            [
              378.8342590332031,
              123.0897216796875
            ],
            [
              85.53955078125,
              123.0897216796875
            ]
          ],
          "bbox": [
            85.53955078125,
            112.341796875,
            378.8342590332031,
            123.0897216796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "4": "/page/94/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/95/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-95-0\"></span><b>8.5 Strings are immutable</b></h3>",
          "polygon": [
            [
              85.46484375,
              150.43359375
            ],
            [
              264.5080871582031,
              150.43359375
            ],
            [
              264.5080871582031,
              165.4459228515625
            ],
            [
              85.46484375,
              165.4459228515625
            ]
          ],
          "bbox": [
            85.46484375,
            150.43359375,
            264.5080871582031,
            165.4459228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is tempting to use the [] operator on the left side of an assignment, with the intention of changing a character in a string. For example:</p>",
          "polygon": [
            [
              85.3154296875,
              175.8603515625
            ],
            [
              482.39837646484375,
              175.8603515625
            ],
            [
              482.39837646484375,
              198.92694091796875
            ],
            [
              85.3154296875,
              198.92694091796875
            ]
          ],
          "bbox": [
            85.3154296875,
            175.8603515625,
            482.39837646484375,
            198.92694091796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; greeting = 'Hello, world!'\n&gt;&gt;&gt; greeting[0] = 'J'\nTypeError: 'str' object does not support item assignment</pre>",
          "polygon": [
            [
              85.53955078125,
              203.02734375
            ],
            [
              379.2892150878906,
              203.02734375
            ],
            [
              379.2892150878906,
              238.3114013671875
            ],
            [
              85.53955078125,
              238.3114013671875
            ]
          ],
          "bbox": [
            85.53955078125,
            203.02734375,
            379.2892150878906,
            238.3114013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The \"object\" in this case is the string and the \"item\" is the character you tried to assign. For</p>",
          "polygon": [
            [
              86.4000473022461,
              238.21875
            ],
            [
              482.4034423828125,
              238.21875
            ],
            [
              482.4034423828125,
              262.58203125
            ],
            [
              86.4000473022461,
              262.58203125
            ]
          ],
          "bbox": [
            86.4000473022461,
            238.21875,
            482.4034423828125,
            262.58203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">now, an <b>object</b> is the same thing as a value, but we will refine that definition later. An <b>item</b> is one of the values in a sequence.</p>",
          "polygon": [
            [
              85.3154296875,
              255.740234375
            ],
            [
              482.4001770019531,
              255.740234375
            ],
            [
              482.4001770019531,
              283.078125
            ],
            [
              85.3154296875,
              283.078125
            ]
          ],
          "bbox": [
            85.3154296875,
            255.740234375,
            482.4001770019531,
            283.078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The reason for the error is that strings are <b>immutable</b>, which means you can't change an existing string. The best you can do is create a new string that is a variation on the original:</p>",
          "polygon": [
            [
              85.9130859375,
              286.9453125
            ],
            [
              482.90625,
              286.9453125
            ],
            [
              482.90625,
              309.76171875
            ],
            [
              85.9130859375,
              309.76171875
            ]
          ],
          "bbox": [
            85.9130859375,
            286.9453125,
            482.90625,
            309.76171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; greeting = 'Hello, world!'\n&gt;&gt;&gt; new_greeting = 'J' + greeting[1:]\n&gt;&gt;&gt; print new_greeting\nJello, world!</pre>",
          "polygon": [
            [
              85.763671875,
              314.33880615234375
            ],
            [
              279.8952331542969,
              314.33880615234375
            ],
            [
              279.8952331542969,
              362.548828125
            ],
            [
              85.763671875,
              362.548828125
            ]
          ],
          "bbox": [
            85.763671875,
            314.33880615234375,
            279.8952331542969,
            362.548828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example concatenates a new first letter onto a slice of greeting. It has no effect on the original string.</p>",
          "polygon": [
            [
              86.0625,
              365.8359375
            ],
            [
              482.90625,
              365.8359375
            ],
            [
              482.90625,
              388.3729553222656
            ],
            [
              86.0625,
              388.3729553222656
            ]
          ],
          "bbox": [
            86.0625,
            365.8359375,
            482.90625,
            388.3729553222656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/95/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-95-1\"></span><b>8.6 Searching</b></h4>",
          "polygon": [
            [
              86.13720703125,
              416.109375
            ],
            [
              184.02597045898438,
              416.109375
            ],
            [
              184.02597045898438,
              430.8046875
            ],
            [
              86.13720703125,
              430.8046875
            ]
          ],
          "bbox": [
            86.13720703125,
            416.109375,
            184.02597045898438,
            430.8046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">What does the following function do?</p>",
          "polygon": [
            [
              85.83837890625,
              441.24609375
            ],
            [
              252.80859375,
              441.24609375
            ],
            [
              252.80859375,
              452.07421875
            ],
            [
              85.83837890625,
              452.07421875
            ]
          ],
          "bbox": [
            85.83837890625,
            441.24609375,
            252.80859375,
            452.07421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/95/Code/13",
          "block_type": "Code",
          "html": "<pre>def find(word, letter):\n    index = 0\n    while index &lt; len(word):\n        if word[index] == letter:\n            return index\n        index = index + 1\n    return -1</pre>",
          "polygon": [
            [
              86.40008544921875,
              456.328125
            ],
            [
              259.98046875,
              456.328125
            ],
            [
              259.98046875,
              540.0814056396484
            ],
            [
              86.40008544921875,
              540.0814056396484
            ]
          ],
          "bbox": [
            86.40008544921875,
            456.328125,
            259.98046875,
            540.0814056396484
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In a sense, find is the opposite of the [] operator. Instead of taking an index and extracting the corresponding character, it takes a character and finds the index where that character appears. If the character is not found, the function returns -1.</p>",
          "polygon": [
            [
              86.0625,
              544.5
            ],
            [
              483.205078125,
              544.5
            ],
            [
              483.205078125,
              579.7639617919922
            ],
            [
              86.0625,
              579.7639617919922
            ]
          ],
          "bbox": [
            86.0625,
            544.5,
            483.205078125,
            579.7639617919922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This is the first example we have seen of a return statement inside a loop. If word[index] == letter, the function breaks out of the loop and returns immediately.</p>",
          "polygon": [
            [
              85.763671875,
              587.8125
            ],
            [
              482.4141540527344,
              587.8125
            ],
            [
              482.4141540527344,
              611.0749664306641
            ],
            [
              85.763671875,
              611.0749664306641
            ]
          ],
          "bbox": [
            85.763671875,
            587.8125,
            482.4141540527344,
            611.0749664306641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the character doesn't appear in the string, the program exits the loop normally and returns -1.</p>",
          "polygon": [
            [
              85.6142578125,
              618.75
            ],
            [
              482.4034729003906,
              618.75
            ],
            [
              482.4034729003906,
              642.3859710693359
            ],
            [
              85.6142578125,
              642.3859710693359
            ]
          ],
          "bbox": [
            85.6142578125,
            618.75,
            482.4034729003906,
            642.3859710693359
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This pattern of computation—traversing a sequence and returning when we find what we are looking for—is called a <b>search</b>.</p>",
          "polygon": [
            [
              85.9130859375,
              650.07421875
            ],
            [
              482.90625,
              650.07421875
            ],
            [
              482.90625,
              673.6969833374023
            ],
            [
              85.9130859375,
              673.6969833374023
            ]
          ],
          "bbox": [
            85.9130859375,
            650.07421875,
            482.90625,
            673.6969833374023
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/95/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 8.4.</b> <i>Modify</i> find <i>so that it has a third parameter, the index in</i> word <i>where it should start</i> <i>looking.</i></p>",
          "polygon": [
            [
              85.46484375,
              675.59765625
            ],
            [
              482.607421875,
              675.59765625
            ],
            [
              482.607421875,
              697.9132843017578
            ],
            [
              85.46484375,
              697.9132843017578
            ]
          ],
          "bbox": [
            85.46484375,
            675.59765625,
            482.607421875,
            697.9132843017578
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/93/SectionHeader/7",
        "3": "/page/95/SectionHeader/3",
        "4": "/page/95/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/96/Page/224",
      "block_type": "Page",
      "html": "<content-ref src='/page/96/PageHeader/0'></content-ref><content-ref src='/page/96/PageHeader/18'></content-ref><content-ref src='/page/96/SectionHeader/1'></content-ref><content-ref src='/page/96/Text/2'></content-ref><content-ref src='/page/96/Code/3'></content-ref><content-ref src='/page/96/Text/4'></content-ref><content-ref src='/page/96/Text/5'></content-ref><content-ref src='/page/96/Text/6'></content-ref><content-ref src='/page/96/SectionHeader/7'></content-ref><content-ref src='/page/96/Text/8'></content-ref><content-ref src='/page/96/Text/9'></content-ref><content-ref src='/page/96/Code/10'></content-ref><content-ref src='/page/96/Text/11'></content-ref><content-ref src='/page/96/Text/12'></content-ref><content-ref src='/page/96/Text/13'></content-ref><content-ref src='/page/96/Code/14'></content-ref><content-ref src='/page/96/Text/15'></content-ref><content-ref src='/page/96/Text/16'></content-ref><content-ref src='/page/96/Code/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/96/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/96/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.1796875,
              60.908203125
            ],
            [
              525.9375,
              60.908203125
            ],
            [
              525.9375,
              70.0927734375
            ],
            [
              515.1796875,
              70.0927734375
            ]
          ],
          "bbox": [
            515.1796875,
            60.908203125,
            525.9375,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/95/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/96/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-96-0\"></span><b>8.7 Looping and counting</b></h4>",
          "polygon": [
            [
              127.82373046875,
              85.95379638671875
            ],
            [
              307.494140625,
              85.95379638671875
            ],
            [
              307.494140625,
              100.546875
            ],
            [
              127.82373046875,
              100.546875
            ]
          ],
          "bbox": [
            127.82373046875,
            85.95379638671875,
            307.494140625,
            100.546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following program counts the number of times the letter a appears in a string:</p>",
          "polygon": [
            [
              128.0478515625,
              112.6187744140625
            ],
            [
              491.1990966796875,
              112.6187744140625
            ],
            [
              491.1990966796875,
              122.73095703125
            ],
            [
              128.0478515625,
              122.73095703125
            ]
          ],
          "bbox": [
            128.0478515625,
            112.6187744140625,
            491.1990966796875,
            122.73095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/96/Code/3",
          "block_type": "Code",
          "html": "<pre>word = 'banana'\ncount = 0\nfor letter in word:\n    if letter == 'a':\n        count = count + 1\nprint count</pre>",
          "polygon": [
            [
              128.0478515625,
              128.87176513671875
            ],
            [
              261.9228515625,
              128.87176513671875
            ],
            [
              261.9228515625,
              199.80633544921875
            ],
            [
              128.0478515625,
              199.80633544921875
            ]
          ],
          "bbox": [
            128.0478515625,
            128.87176513671875,
            261.9228515625,
            199.80633544921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This program demonstrates another pattern of computation called a <b>counter</b>. The variable count is initialized to 0 and then incremented each time an a is found. When the loop exits, count contains the result—the total number of a's.</p>",
          "polygon": [
            [
              127.8984375,
              206.149169921875
            ],
            [
              525.9375,
              206.149169921875
            ],
            [
              525.9375,
              240.597900390625
            ],
            [
              127.8984375,
              240.597900390625
            ]
          ],
          "bbox": [
            127.8984375,
            206.149169921875,
            525.9375,
            240.597900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 8.5.</b> <i>Encapsulate this code in a function named</i> count<i>, and generalize it so that it accepts</i> <i>the string and the letter as arguments.</i></p>",
          "polygon": [
            [
              128.3466796875,
              242.6566162109375
            ],
            [
              525.6008911132812,
              242.6566162109375
            ],
            [
              525.6008911132812,
              264.81317138671875
            ],
            [
              128.3466796875,
              264.81317138671875
            ]
          ],
          "bbox": [
            128.3466796875,
            242.6566162109375,
            525.6008911132812,
            264.81317138671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 8.6.</b> <i>Rewrite this function so that instead of traversing the string, it uses the three</i><i>parameter version of</i> find <i>from the previous section.</i></p>",
          "polygon": [
            [
              128.49609375,
              267.04559326171875
            ],
            [
              525.6040649414062,
              267.04559326171875
            ],
            [
              525.6040649414062,
              289.2253112792969
            ],
            [
              128.49609375,
              289.2253112792969
            ]
          ],
          "bbox": [
            128.49609375,
            267.04559326171875,
            525.6040649414062,
            289.2253112792969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/96/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-96-1\"></span><b>8.8 String methods</b></h4>",
          "polygon": [
            [
              128.3466796875,
              318.9787292480469
            ],
            [
              262.68975830078125,
              318.9787292480469
            ],
            [
              262.68975830078125,
              333.324951171875
            ],
            [
              128.3466796875,
              333.324951171875
            ]
          ],
          "bbox": [
            128.3466796875,
            318.9787292480469,
            262.68975830078125,
            333.324951171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>method</b> is similar to a function—it takes arguments and returns a value—but the syntax is different. For example, the method upper takes a string and returns a new string with all uppercase letters:</p>",
          "polygon": [
            [
              129.2431640625,
              345.6951599121094
            ],
            [
              525.9375,
              345.6951599121094
            ],
            [
              525.9375,
              380.1438903808594
            ],
            [
              129.2431640625,
              380.1438903808594
            ]
          ],
          "bbox": [
            129.2431640625,
            345.6951599121094,
            525.9375,
            380.1438903808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Instead of the function syntax upper(word), it uses the method syntax word.upper().</p>",
          "polygon": [
            [
              128.49609375,
              390.2567443847656
            ],
            [
              505.4187316894531,
              390.2567443847656
            ],
            [
              505.4187316894531,
              400.368896484375
            ],
            [
              128.49609375,
              400.368896484375
            ]
          ],
          "bbox": [
            128.49609375,
            390.2567443847656,
            505.4187316894531,
            400.368896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; word = 'banana'\n&gt;&gt;&gt; new_word = word.upper()\n&gt;&gt;&gt; print new_word\nBANANA</pre>",
          "polygon": [
            [
              128.86962890625,
              406.5097351074219
            ],
            [
              270.8299255371094,
              406.5097351074219
            ],
            [
              270.8299255371094,
              453.0553283691406
            ],
            [
              128.86962890625,
              453.0553283691406
            ]
          ],
          "bbox": [
            128.86962890625,
            406.5097351074219,
            270.8299255371094,
            453.0553283691406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This form of dot notation specifies the name of the method, upper, and the name of the string to apply the method to, word. The empty parentheses indicate that this method takes no argument.</p>",
          "polygon": [
            [
              129.60011291503906,
              459.3457336425781
            ],
            [
              525.6026000976562,
              459.3457336425781
            ],
            [
              525.6026000976562,
              493.8468933105469
            ],
            [
              129.60011291503906,
              493.8468933105469
            ]
          ],
          "bbox": [
            129.60011291503906,
            459.3457336425781,
            525.6026000976562,
            493.8468933105469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A method call is called an <b>invocation</b>; in this case, we would say that we are invoking upper on the word.</p>",
          "polygon": [
            [
              129.392578125,
              504.0121765136719
            ],
            [
              525.638671875,
              504.0121765136719
            ],
            [
              525.638671875,
              526.2658996582031
            ],
            [
              129.392578125,
              526.2658996582031
            ]
          ],
          "bbox": [
            129.392578125,
            504.0121765136719,
            525.638671875,
            526.2658996582031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As it turns out, there is a string method named find that is remarkably similar to the function we wrote:</p>",
          "polygon": [
            [
              128.6455078125,
              536.3787536621094
            ],
            [
              525.9375,
              536.3787536621094
            ],
            [
              525.9375,
              558.6849060058594
            ],
            [
              128.6455078125,
              558.6849060058594
            ]
          ],
          "bbox": [
            128.6455078125,
            536.3787536621094,
            525.9375,
            558.6849060058594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; word = 'banana'\n&gt;&gt;&gt; index = word.find('a')\n&gt;&gt;&gt; print index\n1</pre>",
          "polygon": [
            [
              129.09375,
              564.8257598876953
            ],
            [
              265.5585021972656,
              564.8257598876953
            ],
            [
              265.5585021972656,
              611.7890625
            ],
            [
              129.09375,
              611.7890625
            ]
          ],
          "bbox": [
            129.09375,
            564.8257598876953,
            265.5585021972656,
            611.7890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this example, we invoke find on word and pass the letter we are looking for as a parameter.</p>",
          "polygon": [
            [
              129.09375,
              617.6627655029297
            ],
            [
              525.6044921875,
              617.6627655029297
            ],
            [
              525.6044921875,
              640.40625
            ],
            [
              129.09375,
              640.40625
            ]
          ],
          "bbox": [
            129.09375,
            617.6627655029297,
            525.6044921875,
            640.40625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Actually, the find method is more general than our function; it can find substrings, not just characters:</p>",
          "polygon": [
            [
              128.6455078125,
              650.0817718505859
            ],
            [
              525.602783203125,
              650.0817718505859
            ],
            [
              525.602783203125,
              672.50390625
            ],
            [
              128.6455078125,
              672.50390625
            ]
          ],
          "bbox": [
            128.6455078125,
            650.0817718505859,
            525.602783203125,
            672.50390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/96/Code/17",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; word.find('na')\n2</pre>",
          "polygon": [
            [
              129.09375,
              678.5287628173828
            ],
            [
              228.9545135498047,
              678.5287628173828
            ],
            [
              228.9545135498047,
              700.6863632202148
            ],
            [
              129.09375,
              700.6863632202148
            ]
          ],
          "bbox": [
            129.09375,
            678.5287628173828,
            228.9545135498047,
            700.6863632202148
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/93/SectionHeader/7",
        "3": "/page/95/SectionHeader/3",
        "4": "/page/96/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/97/Page/244",
      "block_type": "Page",
      "html": "<content-ref src='/page/97/PageHeader/0'></content-ref><content-ref src='/page/97/PageHeader/19'></content-ref><content-ref src='/page/97/Text/1'></content-ref><content-ref src='/page/97/Code/2'></content-ref><content-ref src='/page/97/Text/3'></content-ref><content-ref src='/page/97/Code/4'></content-ref><content-ref src='/page/97/Text/5'></content-ref><content-ref src='/page/97/Text/6'></content-ref><content-ref src='/page/97/Text/7'></content-ref><content-ref src='/page/97/SectionHeader/8'></content-ref><content-ref src='/page/97/Text/9'></content-ref><content-ref src='/page/97/Code/10'></content-ref><content-ref src='/page/97/Text/11'></content-ref><content-ref src='/page/97/Text/12'></content-ref><content-ref src='/page/97/Code/13'></content-ref><content-ref src='/page/97/Text/14'></content-ref><content-ref src='/page/97/Text/15'></content-ref><content-ref src='/page/97/Code/16'></content-ref><content-ref src='/page/97/SectionHeader/17'></content-ref><content-ref src='/page/97/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/97/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.95654296875
            ],
            [
              482.607421875,
              60.95654296875
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.95654296875,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.2314453125
            ],
            [
              97.716796875,
              60.2314453125
            ],
            [
              97.716796875,
              70.4794921875
            ],
            [
              85.763671875,
              70.4794921875
            ]
          ],
          "bbox": [
            85.763671875,
            60.2314453125,
            97.716796875,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It can take as a second argument the index where it should start:</p>",
          "polygon": [
            [
              86.0625,
              88.0751953125
            ],
            [
              369.1186218261719,
              88.0751953125
            ],
            [
              369.1186218261719,
              98.79791259765625
            ],
            [
              86.0625,
              98.79791259765625
            ]
          ],
          "bbox": [
            86.0625,
            88.0751953125,
            369.1186218261719,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/Code/2",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; word.find('na', 3)\n4</pre>",
          "polygon": [
            [
              85.83837890625,
              103.833984375
            ],
            [
              201.4454803466797,
              103.833984375
            ],
            [
              201.4454803466797,
              126.477294921875
            ],
            [
              85.83837890625,
              126.477294921875
            ]
          ],
          "bbox": [
            85.83837890625,
            103.833984375,
            201.4454803466797,
            126.477294921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And as a third argument the index where it should stop:</p>",
          "polygon": [
            [
              86.4000244140625,
              131.484375
            ],
            [
              333.7314453125,
              131.484375
            ],
            [
              333.7314453125,
              142.26190185546875
            ],
            [
              86.4000244140625,
              142.26190185546875
            ]
          ],
          "bbox": [
            86.4000244140625,
            131.484375,
            333.7314453125,
            142.26190185546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; name = 'bob'\n&gt;&gt;&gt; name.find('b', 1, 2)\n-1</pre>",
          "polygon": [
            [
              85.46484375,
              147.78570556640625
            ],
            [
              211.9075927734375,
              147.78570556640625
            ],
            [
              211.9075927734375,
              182.13623046875
            ],
            [
              85.46484375,
              182.13623046875
            ]
          ],
          "bbox": [
            85.46484375,
            147.78570556640625,
            211.9075927734375,
            182.13623046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This search fails because b does not appear in the index range from 1 to 2 (not including 2). <b>Exercise 8.7.</b> <i>There is a string method called</i> count <i>that is similar to the function in the previous</i> <i>exercise. Read the documentation of this method and write an invocation that counts the number of</i> a<i>s in</i> 'banana'<i>.</i></p>",
          "polygon": [
            [
              85.763671875,
              187.751953125
            ],
            [
              482.607421875,
              187.751953125
            ],
            [
              482.607421875,
              234.354248046875
            ],
            [
              85.763671875,
              234.354248046875
            ]
          ],
          "bbox": [
            85.763671875,
            187.751953125,
            482.607421875,
            234.354248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 8.8.</b> <i>Read the documentation of the string methods at</i> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">http:</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">//</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">docs.</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">python.</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">org/</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">2/</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">library/</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">stdtypes.</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">html#</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#string-methods\">string-methods</a> <i>. You might want to experiment with some of them</i> <i>to make sure you understand how they work.</i> strip <i>and</i> replace <i>are particularly useful.</i></p>",
          "polygon": [
            [
              86.0625,
              235.51171875
            ],
            [
              482.40093994140625,
              235.51171875
            ],
            [
              482.40093994140625,
              270.937255859375
            ],
            [
              86.0625,
              270.937255859375
            ]
          ],
          "bbox": [
            86.0625,
            235.51171875,
            482.40093994140625,
            270.937255859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The documentation uses a syntax that might be confusing. For example, in</i> find(sub[, start[, end]])<i>, the brackets indicate optional arguments. So</i> sub <i>is required, but</i> start <i>is optional, and if you include</i> start<i>, then</i> end <i>is optional.</i></p>",
          "polygon": [
            [
              86.2119140625,
              280.177734375
            ],
            [
              482.4034118652344,
              280.177734375
            ],
            [
              482.4034118652344,
              314.9332580566406
            ],
            [
              86.2119140625,
              314.9332580566406
            ]
          ],
          "bbox": [
            86.2119140625,
            280.177734375,
            482.4034118652344,
            314.9332580566406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/93/SectionHeader/7",
            "3": "/page/95/SectionHeader/3",
            "4": "/page/96/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/97/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-97-0\"></span><b>8.9 The</b> in <b>operator</b></h2>",
          "polygon": [
            [
              85.9130859375,
              341.6040344238281
            ],
            [
              220.9252471923828,
              341.6040344238281
            ],
            [
              220.9252471923828,
              358.0268859863281
            ],
            [
              85.9130859375,
              358.0268859863281
            ]
          ],
          "bbox": [
            85.9130859375,
            341.6040344238281,
            220.9252471923828,
            358.0268859863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The word in is a boolean operator that takes two strings and returns True if the first appears as a substring in the second:</p>",
          "polygon": [
            [
              85.6142578125,
              369.31640625
            ],
            [
              482.39691162109375,
              369.31640625
            ],
            [
              482.39691162109375,
              391.9988098144531
            ],
            [
              85.6142578125,
              391.9988098144531
            ]
          ],
          "bbox": [
            85.6142578125,
            369.31640625,
            482.39691162109375,
            391.9988098144531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; 'a' in 'banana'\nTrue\n&gt;&gt;&gt; 'seed' in 'banana'</pre>",
          "polygon": [
            [
              85.6142578125,
              397.52166748046875
            ],
            [
              201.44131469726562,
              397.52166748046875
            ],
            [
              201.44131469726562,
              432.3515625
            ],
            [
              85.6142578125,
              432.3515625
            ]
          ],
          "bbox": [
            85.6142578125,
            397.52166748046875,
            201.44131469726562,
            432.3515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">False</p>",
          "polygon": [
            [
              86.0625,
              434.10467529296875
            ],
            [
              112.55177307128906,
              434.10467529296875
            ],
            [
              112.55177307128906,
              444.7265625
            ],
            [
              86.0625,
              444.7265625
            ]
          ],
          "bbox": [
            86.0625,
            434.10467529296875,
            112.55177307128906,
            444.7265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, the following function prints all the letters from word1 that also appear in word2:</p>",
          "polygon": [
            [
              85.6142578125,
              448.98046875
            ],
            [
              482.398681640625,
              448.98046875
            ],
            [
              482.398681640625,
              472.0468444824219
            ],
            [
              85.6142578125,
              472.0468444824219
            ]
          ],
          "bbox": [
            85.6142578125,
            448.98046875,
            482.398681640625,
            472.0468444824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Code/13",
          "block_type": "Code",
          "html": "<pre>def in_both(word1, word2):\n    for letter in word1:\n        if letter in word2:\n            print letter</pre>",
          "polygon": [
            [
              85.6142578125,
              477.5697021484375
            ],
            [
              227.60986328125,
              477.5697021484375
            ],
            [
              227.60986328125,
              524.1152954101562
            ],
            [
              85.6142578125,
              524.1152954101562
            ]
          ],
          "bbox": [
            85.6142578125,
            477.5697021484375,
            227.60986328125,
            524.1152954101562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">With well-chosen variable names, Python sometimes reads like English. You could read this loop, \"for (each) letter in (the first) word, if (the) letter (appears) in (the second) word, print (the) letter.\"</p>",
          "polygon": [
            [
              85.46484375,
              528.64453125
            ],
            [
              482.4033508300781,
              528.64453125
            ],
            [
              482.4033508300781,
              564.2878570556641
            ],
            [
              85.46484375,
              564.2878570556641
            ]
          ],
          "bbox": [
            85.46484375,
            528.64453125,
            482.4033508300781,
            564.2878570556641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's what you get if you compare apples and oranges:</p>",
          "polygon": [
            [
              85.6142578125,
              573.1171875
            ],
            [
              334.538330078125,
              573.1171875
            ],
            [
              334.538330078125,
              583.9453125
            ],
            [
              85.6142578125,
              583.9453125
            ]
          ],
          "bbox": [
            85.6142578125,
            573.1171875,
            334.538330078125,
            583.9453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/Code/16",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; in_both('apples', 'oranges')\na\ne\ns</pre>",
          "polygon": [
            [
              85.68896484375,
              589.4176940917969
            ],
            [
              253.73231506347656,
              589.4176940917969
            ],
            [
              253.73231506347656,
              635.9633026123047
            ],
            [
              85.68896484375,
              635.9633026123047
            ]
          ],
          "bbox": [
            85.68896484375,
            589.4176940917969,
            253.73231506347656,
            635.9633026123047
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/97/SectionHeader/17",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-97-1\"></span><b>8.10 String comparison</b></h4>",
          "polygon": [
            [
              85.98779296875,
              664.7117080688477
            ],
            [
              246.83203125,
              664.7117080688477
            ],
            [
              246.83203125,
              679.0579071044922
            ],
            [
              85.98779296875,
              679.0579071044922
            ]
          ],
          "bbox": [
            85.98779296875,
            664.7117080688477,
            246.83203125,
            679.0579071044922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/97/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The relational operators work on strings. To see if two strings are equal:</p>",
          "polygon": [
            [
              86.2119140625,
              690.29296875
            ],
            [
              401.73614501953125,
              690.29296875
            ],
            [
              401.73614501953125,
              700.8348617553711
            ],
            [
              86.2119140625,
              700.8348617553711
            ]
          ],
          "bbox": [
            86.2119140625,
            690.29296875,
            401.73614501953125,
            700.8348617553711
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/97/SectionHeader/8",
        "4": "/page/97/SectionHeader/17"
      },
      "images": null
    },
    {
      "id": "/page/98/Page/208",
      "block_type": "Page",
      "html": "<content-ref src='/page/98/PageHeader/0'></content-ref><content-ref src='/page/98/PageHeader/14'></content-ref><content-ref src='/page/98/TextInlineMath/1'></content-ref><content-ref src='/page/98/Text/2'></content-ref><content-ref src='/page/98/Code/3'></content-ref><content-ref src='/page/98/Text/4'></content-ref><content-ref src='/page/98/Text/5'></content-ref><content-ref src='/page/98/Text/6'></content-ref><content-ref src='/page/98/SectionHeader/7'></content-ref><content-ref src='/page/98/Text/8'></content-ref><content-ref src='/page/98/Code/9'></content-ref><content-ref src='/page/98/Text/10'></content-ref><content-ref src='/page/98/Text/11'></content-ref><content-ref src='/page/98/Text/12'></content-ref><content-ref src='/page/98/TextInlineMath/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/98/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              61.1982421875
            ],
            [
              525.041015625,
              61.1982421875
            ],
            [
              525.041015625,
              70.2861328125
            ],
            [
              514.880859375,
              70.2861328125
            ]
          ],
          "bbox": [
            514.880859375,
            61.1982421875,
            525.041015625,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/TextInlineMath/1",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">if word == 'banana': print 'All right, bananas.'</p>",
          "polygon": [
            [
              129.60000610351562,
              88.68572998046875
            ],
            [
              291.7033996582031,
              88.68572998046875
            ],
            [
              291.7033996582031,
              110.84228515625
            ],
            [
              129.60000610351562,
              110.84228515625
            ]
          ],
          "bbox": [
            129.60000610351562,
            88.68572998046875,
            291.7033996582031,
            110.84228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Other relational operations are useful for putting words in alphabetical order:</p>",
          "polygon": [
            [
              129.09375,
              116.982421875
            ],
            [
              471.01824951171875,
              116.982421875
            ],
            [
              471.01824951171875,
              127.19989013671875
            ],
            [
              129.09375,
              127.19989013671875
            ]
          ],
          "bbox": [
            129.09375,
            116.982421875,
            471.01824951171875,
            127.19989013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/Code/3",
          "block_type": "Code",
          "html": "<pre>if word &lt; 'banana':\n    print 'Your word,' + word + ', comes before banana.'\nelif word &gt; 'banana':\n    print 'Your word,' + word + ', comes after banana.'\nelse:\n    print 'All right, bananas.'</pre>",
          "polygon": [
            [
              129.60000610351562,
              133.29669189453125
            ],
            [
              424.634765625,
              133.29669189453125
            ],
            [
              424.634765625,
              204.230224609375
            ],
            [
              129.60000610351562,
              204.230224609375
            ]
          ],
          "bbox": [
            129.60000610351562,
            133.29669189453125,
            424.634765625,
            204.230224609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python does not handle uppercase and lowercase letters the same way that people do. All the uppercase letters come before all the lowercase letters, so:</p>",
          "polygon": [
            [
              129.60006713867188,
              209.21484375
            ],
            [
              525.6034545898438,
              209.21484375
            ],
            [
              525.6034545898438,
              232.78277587890625
            ],
            [
              129.60006713867188,
              232.78277587890625
            ]
          ],
          "bbox": [
            129.60006713867188,
            209.21484375,
            525.6034545898438,
            232.78277587890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Your word, Pineapple, comes before banana.</p>",
          "polygon": [
            [
              128.12255859375,
              238.87860107421875
            ],
            [
              349.2853088378906,
              238.87860107421875
            ],
            [
              349.2853088378906,
              248.8411865234375
            ],
            [
              128.12255859375,
              248.8411865234375
            ]
          ],
          "bbox": [
            128.12255859375,
            238.87860107421875,
            349.2853088378906,
            248.8411865234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A common way to address this problem is to convert strings to a standard format, such as all lowercase, before performing the comparison. Keep that in mind in case you have to defend yourself against a man armed with a Pineapple.</p>",
          "polygon": [
            [
              128.49609375,
              255.23614501953125
            ],
            [
              525.603515625,
              255.23614501953125
            ],
            [
              525.603515625,
              289.5877685546875
            ],
            [
              128.49609375,
              289.5877685546875
            ]
          ],
          "bbox": [
            128.49609375,
            255.23614501953125,
            525.603515625,
            289.5877685546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/97/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/98/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-98-0\"></span><b>8.11 Debugging</b></h4>",
          "polygon": [
            [
              128.0478515625,
              319.0566101074219
            ],
            [
              243.17892456054688,
              319.0566101074219
            ],
            [
              243.17892456054688,
              333.40283203125
            ],
            [
              128.0478515625,
              333.40283203125
            ]
          ],
          "bbox": [
            128.0478515625,
            319.0566101074219,
            243.17892456054688,
            333.40283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you use indices to traverse the values in a sequence, it is tricky to get the beginning and end of the traversal right. Here is a function that is supposed to compare two words and return True if one of the words is the reverse of the other, but it contains two errors:</p>",
          "polygon": [
            [
              128.9443359375,
              345.80718994140625
            ],
            [
              525.9375,
              345.80718994140625
            ],
            [
              525.9375,
              380.1587829589844
            ],
            [
              128.9443359375,
              380.1587829589844
            ]
          ],
          "bbox": [
            128.9443359375,
            345.80718994140625,
            525.9375,
            380.1587829589844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/98/Code/9",
          "block_type": "Code",
          "html": "<pre>def is_reverse(word1, word2):\n    if len(word1) != len(word2):\n        return False\n    i = 0\n    j = len(word2)\n    while j &gt; 0:\n        if word1[i] != word2[j]:\n            return False\n        i = i+1\n        j = j-1\n    return True</pre>",
          "polygon": [
            [
              129.60006713867188,
              386.254638671875
            ],
            [
              301.9658203125,
              386.254638671875
            ],
            [
              301.9658203125,
              554.7442779541016
            ],
            [
              129.60006713867188,
              554.7442779541016
            ]
          ],
          "bbox": [
            129.60006713867188,
            386.254638671875,
            301.9658203125,
            554.7442779541016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first if statement checks whether the words are the same length. If not, we can return False immediately and then, for the rest of the function, we can assume that the words are the same length. This is an example of the guardian pattern in Section <a href=\"#page-79-0\">6.8.</a></p>",
          "polygon": [
            [
              128.3466796875,
              560.35546875
            ],
            [
              525.9375,
              560.35546875
            ],
            [
              525.9375,
              595.4898376464844
            ],
            [
              128.3466796875,
              595.4898376464844
            ]
          ],
          "bbox": [
            128.3466796875,
            560.35546875,
            525.9375,
            595.4898376464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">i and j are indices: i traverses word1 forward while j traverses word2 backward. If we find two letters that don't match, we can return False immediately. If we get through the whole loop and all the letters match, we return True.</p>",
          "polygon": [
            [
              128.6455078125,
              605.5576782226562
            ],
            [
              525.9375,
              605.5576782226562
            ],
            [
              525.9375,
              640.058837890625
            ],
            [
              128.6455078125,
              640.058837890625
            ]
          ],
          "bbox": [
            128.6455078125,
            605.5576782226562,
            525.9375,
            640.058837890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/98/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we test this function with the words \"pots\" and \"stop\", we expect the return value True, but we get an IndexError:</p>",
          "polygon": [
            [
              128.0478515625,
              650.1266784667969
            ],
            [
              525.5997314453125,
              650.1266784667969
            ],
            [
              525.5997314453125,
              672.4328384399414
            ],
            [
              128.0478515625,
              672.4328384399414
            ]
          ],
          "bbox": [
            128.0478515625,
            650.1266784667969,
            525.5997314453125,
            672.4328384399414
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/98/TextInlineMath/13",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; is_reverse('pots', 'stop') ...</p>",
          "polygon": [
            [
              129.60006713867188,
              678.5286712646484
            ],
            [
              286.4744567871094,
              678.5286712646484
            ],
            [
              286.4744567871094,
              700.734375
            ],
            [
              129.60006713867188,
              700.734375
            ]
          ],
          "bbox": [
            129.60006713867188,
            678.5286712646484,
            286.4744567871094,
            700.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/97/SectionHeader/8",
        "4": "/page/98/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/99/Page/182",
      "block_type": "Page",
      "html": "<content-ref src='/page/99/PageHeader/0'></content-ref><content-ref src='/page/99/PageHeader/16'></content-ref><content-ref src='/page/99/FigureGroup/179'></content-ref><content-ref src='/page/99/Code/3'></content-ref><content-ref src='/page/99/Text/4'></content-ref><content-ref src='/page/99/Code/5'></content-ref><content-ref src='/page/99/Text/6'></content-ref><content-ref src='/page/99/Code/7'></content-ref><content-ref src='/page/99/Text/8'></content-ref><content-ref src='/page/99/Text/9'></content-ref><content-ref src='/page/99/Code/10'></content-ref><content-ref src='/page/99/Text/11'></content-ref><content-ref src='/page/99/Text/12'></content-ref><content-ref src='/page/99/Text/13'></content-ref><content-ref src='/page/99/SectionHeader/14'></content-ref><content-ref src='/page/99/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/99/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.90625,
              60.85986328125
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.94189453125,
              60.8115234375
            ],
            [
              96.14794921875,
              60.8115234375
            ],
            [
              96.14794921875,
              70.3828125
            ],
            [
              84.94189453125,
              70.3828125
            ]
          ],
          "bbox": [
            84.94189453125,
            60.8115234375,
            96.14794921875,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/FigureGroup/179",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/99/Figure/178'></content-ref><content-ref src='/page/99/Caption/2'></content-ref>",
          "polygon": [
            [
              188.26171875,
              86.28662109375
            ],
            [
              380.109375,
              86.28662109375
            ],
            [
              380.109375,
              155.55291748046875
            ],
            [
              188.26171875,
              155.55291748046875
            ]
          ],
          "bbox": [
            188.26171875,
            86.28662109375,
            380.109375,
            155.55291748046875
          ],
          "children": [
            {
              "id": "/page/99/Figure/178",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  188.26171875,
                  86.28662109375
                ],
                [
                  380.109375,
                  86.28662109375
                ],
                [
                  380.109375,
                  131.9677734375
                ],
                [
                  188.26171875,
                  131.9677734375
                ]
              ],
              "bbox": [
                188.26171875,
                86.28662109375,
                380.109375,
                131.9677734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/92/SectionHeader/1",
                "2": "/page/97/SectionHeader/8",
                "4": "/page/98/SectionHeader/7"
              },
              "images": {
                "/page/99/Figure/178": "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LKjQNt8lAuCnHOT3yanoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAwfFXhw+JbOxgF0Lf7LexXeSm7dsOdvUYz61vUVBE1ybm4EyRiAFfJZSdzDHO705oAnooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCCKO4W6uHkuA8L7fKj2AeXgc898nn2qeoIoZkuriR7gyRSbfLiKgCPAwee+TzU9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUEX2r7Tced5P2fK+Rszuxj5t2eOvTHap6giW6FzcGZ4zASvkhQdwGOd3rzQBPRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEEUDx3VxK1w7pLt2xtjEeBg4+vWp6KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACoIkuFubhpZleFivkoFwUGOcnvk81PRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAc5pcto3jfXIotTvJrlIoTLZyZ8qAEcFO2T3ro64Xw//AMla8W/9e9r/AOgmu5bJU7SAccEjNAC0VhfYvFH/AEHdM/8ABW//AMfo+xeKP+g7pn/grf8A+P0AbtRXFzBZwNPczxwQrjdJK4VRk4GSeOprH+xeKP8AoO6Z/wCCt/8A4/Ve+i1+1spZrzXdLFuo+fOkO3B46CY5oA6OORJY1kjdXRhkMpyD+NOrymTRtVupDJodn5UjHP2i20uTTVJ9WzcIzf8AfDV0nhnSfHVpKra34gsLiAHmBbUu2PQSZQg+5DUAdlXB6/f6trvjiPwppWpSaZbwWv2u9uoFBlOThUUnp65rvK4CxIs/jfqiTHab7S4ngz/FsOGAoAm8LalqumeML/wlrF++oiO3W7sruRQJGjJwVbHUg967muAiIvfjlM8J3JY6QI5iOisz5APvjmu/oAKKKKACiiigAooooAKK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"
              }
            },
            {
              "id": "/page/99/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-99-1\"></span>Figure 8.2: State diagram.</p>",
              "polygon": [
                [
                  227.5576171875,
                  145.01953125
                ],
                [
                  341.859375,
                  145.01953125
                ],
                [
                  341.859375,
                  155.55291748046875
                ],
                [
                  227.5576171875,
                  155.55291748046875
                ]
              ],
              "bbox": [
                227.5576171875,
                145.01953125,
                341.859375,
                155.55291748046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/92/SectionHeader/1",
                "2": "/page/97/SectionHeader/8",
                "4": "/page/98/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/99/Code/3",
          "block_type": "Code",
          "html": "<pre>File \"reverse.py\", line 15, in is_reverse\n    if word1[i] != word2[j]:\nIndexError: string index out of range</pre>",
          "polygon": [
            [
              86.39998626708984,
              178.27734375
            ],
            [
              311.3128356933594,
              178.27734375
            ],
            [
              311.3128356933594,
              214.048828125
            ],
            [
              86.39998626708984,
              214.048828125
            ]
          ],
          "bbox": [
            86.39998626708984,
            178.27734375,
            311.3128356933594,
            214.048828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For debugging this kind of error, my first move is to print the values of the indices immediately before the line where the error appears.</p>",
          "polygon": [
            [
              84.7177734375,
              218.689453125
            ],
            [
              482.40338134765625,
              218.689453125
            ],
            [
              482.40338134765625,
              241.505859375
            ],
            [
              84.7177734375,
              241.505859375
            ]
          ],
          "bbox": [
            84.7177734375,
            218.689453125,
            482.40338134765625,
            241.505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Code/5",
          "block_type": "Code",
          "html": "<pre>while j &gt; 0:\n   print i, j # print here\n   if word1[i] != word2[j]:\n       return False\n   i = i+1\n   j = j-1</pre>",
          "polygon": [
            [
              105.56103515625,
              247.82684326171875
            ],
            [
              285.1339416503906,
              247.82684326171875
            ],
            [
              285.1339416503906,
              334.51171875
            ],
            [
              105.56103515625,
              334.51171875
            ]
          ],
          "bbox": [
            105.56103515625,
            247.82684326171875,
            285.1339416503906,
            334.51171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now when I run the program again, I get more information:</p>",
          "polygon": [
            [
              85.166015625,
              337.21875
            ],
            [
              350.6977233886719,
              337.21875
            ],
            [
              350.6977233886719,
              347.5429992675781
            ],
            [
              85.166015625,
              347.5429992675781
            ]
          ],
          "bbox": [
            85.166015625,
            337.21875,
            350.6977233886719,
            347.5429992675781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; is_reverse('pots', 'stop')\n0 4\n...\nIndexError: string index out of range</pre>",
          "polygon": [
            [
              84.7177734375,
              353.86785888671875
            ],
            [
              279.9334411621094,
              353.86785888671875
            ],
            [
              279.9334411621094,
              400.4134521484375
            ],
            [
              84.7177734375,
              400.4134521484375
            ]
          ],
          "bbox": [
            84.7177734375,
            353.86785888671875,
            279.9334411621094,
            400.4134521484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first time through the loop, the value of j is 4, which is out of range for the string 'pots'. The index of the last character is 3, so the initial value for j should be len(word2)-1.</p>",
          "polygon": [
            [
              85.0166015625,
              406.0546875
            ],
            [
              482.40484619140625,
              406.0546875
            ],
            [
              482.40484619140625,
              441.6328125
            ],
            [
              85.0166015625,
              441.6328125
            ]
          ],
          "bbox": [
            85.0166015625,
            406.0546875,
            482.40484619140625,
            441.6328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If I fix that error and run the program again, I get:</p>",
          "polygon": [
            [
              85.3154296875,
              451.30078125
            ],
            [
              304.9893493652344,
              451.30078125
            ],
            [
              304.9893493652344,
              461.79803466796875
            ],
            [
              85.3154296875,
              461.79803466796875
            ]
          ],
          "bbox": [
            85.3154296875,
            451.30078125,
            304.9893493652344,
            461.79803466796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; is_reverse('pots', 'stop')\n0 3\n1 2\n2 1\nTrue</pre>",
          "polygon": [
            [
              85.9130859375,
              468.1228942871094
            ],
            [
              250.2685546875,
              468.1228942871094
            ],
            [
              250.2685546875,
              526.8624877929688
            ],
            [
              85.9130859375,
              526.8624877929688
            ]
          ],
          "bbox": [
            85.9130859375,
            468.1228942871094,
            250.2685546875,
            526.8624877929688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This time we get the right answer, but it looks like the loop only ran three times, which is suspicious. To get a better idea of what is happening, it is useful to draw a state diagram. During the first iteration, the frame for is_reverse is shows in Figure <a href=\"#page-99-1\">8.2.</a></p>",
          "polygon": [
            [
              85.46484375,
              532.8984375
            ],
            [
              482.607421875,
              532.8984375
            ],
            [
              482.607421875,
              567.8380584716797
            ],
            [
              85.46484375,
              567.8380584716797
            ]
          ],
          "bbox": [
            85.46484375,
            532.8984375,
            482.607421875,
            567.8380584716797
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I took a little license by arranging the variables in the frame and adding dotted lines to show that the values of i and j indicate characters in word1 and word2.</p>",
          "polygon": [
            [
              85.3154296875,
              577.7578125
            ],
            [
              482.4034423828125,
              577.7578125
            ],
            [
              482.4034423828125,
              601.734375
            ],
            [
              85.3154296875,
              601.734375
            ]
          ],
          "bbox": [
            85.3154296875,
            577.7578125,
            482.4034423828125,
            601.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-99-2\"></span><b>Exercise 8.9.</b> <i>Starting with this diagram, execute the program on paper, changing the values of</i> i <i>and</i> j <i>during each iteration. Find and fix the second error in this function.</i></p>",
          "polygon": [
            [
              84.8671875,
              602.5007629394531
            ],
            [
              482.4013977050781,
              602.5007629394531
            ],
            [
              482.4013977050781,
              624.6805114746094
            ],
            [
              84.8671875,
              624.6805114746094
            ]
          ],
          "bbox": [
            84.8671875,
            602.5007629394531,
            482.4013977050781,
            624.6805114746094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/98/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/99/SectionHeader/14",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-99-0\"></span><b>8.12 Glossary</b></h4>",
          "polygon": [
            [
              85.68896484375,
              654.71484375
            ],
            [
              184.02589416503906,
              654.71484375
            ],
            [
              184.02589416503906,
              669.3321151733398
            ],
            [
              85.68896484375,
              669.3321151733398
            ]
          ],
          "bbox": [
            85.68896484375,
            654.71484375,
            184.02589416503906,
            669.3321151733398
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/99/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>object:</b> Something a variable can refer to. For now, you can use \"object\" and \"value\" interchangeably.</p>",
          "polygon": [
            [
              86.2119140625,
              677.53125
            ],
            [
              482.4032287597656,
              677.53125
            ],
            [
              482.4032287597656,
              700.835075378418
            ],
            [
              86.2119140625,
              700.835075378418
            ]
          ],
          "bbox": [
            86.2119140625,
            677.53125,
            482.4032287597656,
            700.835075378418
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/97/SectionHeader/8",
        "4": "/page/99/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/100/Page/177",
      "block_type": "Page",
      "html": "<content-ref src='/page/100/PageHeader/0'></content-ref><content-ref src='/page/100/PageHeader/19'></content-ref><content-ref src='/page/100/ListItem/1'></content-ref><content-ref src='/page/100/Text/2'></content-ref><content-ref src='/page/100/Text/3'></content-ref><content-ref src='/page/100/Text/4'></content-ref><content-ref src='/page/100/ListItem/5'></content-ref><content-ref src='/page/100/Text/6'></content-ref><content-ref src='/page/100/ListItem/7'></content-ref><content-ref src='/page/100/Text/8'></content-ref><content-ref src='/page/100/ListItem/9'></content-ref><content-ref src='/page/100/Text/10'></content-ref><content-ref src='/page/100/Text/11'></content-ref><content-ref src='/page/100/SectionHeader/12'></content-ref><content-ref src='/page/100/Text/13'></content-ref><content-ref src='/page/100/Code/14'></content-ref><content-ref src='/page/100/Text/15'></content-ref><content-ref src='/page/100/Text/16'></content-ref><content-ref src='/page/100/Text/17'></content-ref><content-ref src='/page/100/Code/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/100/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.01904296875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.01904296875,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.01904296875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.77734375,
              60.71484375
            ],
            [
              525.33984375,
              60.71484375
            ],
            [
              525.33984375,
              69.609375
            ],
            [
              515.77734375,
              69.609375
            ]
          ],
          "bbox": [
            515.77734375,
            60.71484375,
            525.33984375,
            69.609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>sequence:</b> An ordered set; that is, a set of values where each value is identified by an integer index.</li>",
          "polygon": [
            [
              129.60000610351562,
              88.7381591796875
            ],
            [
              525.9375,
              88.7381591796875
            ],
            [
              525.9375,
              110.99188232421875
            ],
            [
              129.60000610351562,
              110.99188232421875
            ]
          ],
          "bbox": [
            129.60000610351562,
            88.7381591796875,
            525.9375,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>item:</b> One of the values in a sequence.</p>",
          "polygon": [
            [
              128.197265625,
              120.953125
            ],
            [
              298.49591064453125,
              120.953125
            ],
            [
              298.49591064453125,
              131.01287841796875
            ],
            [
              128.197265625,
              131.01287841796875
            ]
          ],
          "bbox": [
            128.197265625,
            120.953125,
            298.49591064453125,
            131.01287841796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>index:</b> An integer value used to select an item in a sequence, such as a character in a string.</p>",
          "polygon": [
            [
              127.7490234375,
              140.97412109375
            ],
            [
              525.6030883789062,
              140.97412109375
            ],
            [
              525.6030883789062,
              151.03387451171875
            ],
            [
              127.7490234375,
              151.03387451171875
            ]
          ],
          "bbox": [
            127.7490234375,
            140.97412109375,
            525.6030883789062,
            151.03387451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>slice:</b> A part of a string specified by a range of indices.</p>",
          "polygon": [
            [
              127.97314453125,
              173.18914794921875
            ],
            [
              370.3261413574219,
              173.18914794921875
            ],
            [
              370.3261413574219,
              183.2489013671875
            ],
            [
              127.97314453125,
              183.2489013671875
            ]
          ],
          "bbox": [
            127.97314453125,
            173.18914794921875,
            370.3261413574219,
            183.2489013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/ListItem/5",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>empty string:</b> A string with no characters and length 0, represented by two quotation marks.</li>",
          "polygon": [
            [
              128.0478515625,
              193.21014404296875
            ],
            [
              525.6033935546875,
              193.21014404296875
            ],
            [
              525.6033935546875,
              215.46392822265625
            ],
            [
              128.0478515625,
              215.46392822265625
            ]
          ],
          "bbox": [
            128.0478515625,
            193.21014404296875,
            525.6033935546875,
            215.46392822265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>immutable:</b> The property of a sequence whose items cannot be assigned.</p>",
          "polygon": [
            [
              128.0478515625,
              225.4251708984375
            ],
            [
              452.1889343261719,
              225.4251708984375
            ],
            [
              452.1889343261719,
              235.48492431640625
            ],
            [
              128.0478515625,
              235.48492431640625
            ]
          ],
          "bbox": [
            128.0478515625,
            225.4251708984375,
            452.1889343261719,
            235.48492431640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/ListItem/7",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>traverse:</b> To iterate through the items in a sequence, performing a similar operation on each.</li>",
          "polygon": [
            [
              127.8984375,
              245.4461669921875
            ],
            [
              525.6033935546875,
              245.4461669921875
            ],
            [
              525.6033935546875,
              267.69989013671875
            ],
            [
              127.8984375,
              267.69989013671875
            ]
          ],
          "bbox": [
            127.8984375,
            245.4461669921875,
            525.6033935546875,
            267.69989013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>search:</b> A pattern of traversal that stops when it finds what it is looking for.</p>",
          "polygon": [
            [
              128.6455078125,
              277.6611328125
            ],
            [
              462.2711486816406,
              277.6611328125
            ],
            [
              462.2711486816406,
              287.7208557128906
            ],
            [
              128.6455078125,
              287.7208557128906
            ]
          ],
          "bbox": [
            128.6455078125,
            277.6611328125,
            462.2711486816406,
            287.7208557128906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/ListItem/9",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>counter:</b> A variable used to count something, usually initialized to zero and then incremented.</li>",
          "polygon": [
            [
              129.09375,
              297.68212890625
            ],
            [
              525.6032104492188,
              297.68212890625
            ],
            [
              525.6032104492188,
              319.93585205078125
            ],
            [
              129.09375,
              319.93585205078125
            ]
          ],
          "bbox": [
            129.09375,
            297.68212890625,
            525.6032104492188,
            319.93585205078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>method:</b> A function that is associated with an object and called using dot notation.</p>",
          "polygon": [
            [
              129.2431640625,
              329.8971252441406
            ],
            [
              494.46026611328125,
              329.8971252441406
            ],
            [
              494.46026611328125,
              339.95684814453125
            ],
            [
              129.2431640625,
              339.95684814453125
            ]
          ],
          "bbox": [
            129.2431640625,
            329.8971252441406,
            494.46026611328125,
            339.95684814453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>invocation:</b> A statement that calls a method.</p>",
          "polygon": [
            [
              129.392578125,
              349.9181213378906
            ],
            [
              326.82940673828125,
              349.9181213378906
            ],
            [
              326.82940673828125,
              359.97784423828125
            ],
            [
              129.392578125,
              359.97784423828125
            ]
          ],
          "bbox": [
            129.392578125,
            349.9181213378906,
            326.82940673828125,
            359.97784423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/99/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/100/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-100-0\"></span><b>8.13 Exercises</b></h4>",
          "polygon": [
            [
              128.9443359375,
              389.08367919921875
            ],
            [
              228.80398559570312,
              389.08367919921875
            ],
            [
              228.80398559570312,
              403.4299011230469
            ],
            [
              128.9443359375,
              403.4299011230469
            ]
          ],
          "bbox": [
            128.9443359375,
            389.08367919921875,
            228.80398559570312,
            403.4299011230469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 8.10.</b> <i>A string slice can take a third index that specifies the \"step size;\" that is, the number</i> <i>of spaces between successive characters. A step size of 2 means every other character; 3 means every</i> <i>third, etc.</i></p>",
          "polygon": [
            [
              128.6455078125,
              415.4345397949219
            ],
            [
              525.6035766601562,
              415.4345397949219
            ],
            [
              525.6035766601562,
              449.7861328125
            ],
            [
              128.6455078125,
              449.7861328125
            ]
          ],
          "bbox": [
            128.6455078125,
            415.4345397949219,
            525.6035766601562,
            449.7861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/100/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fruit = 'banana'\n&gt;&gt;&gt; fruit[0:5:2]\n'bnn'</pre>",
          "polygon": [
            [
              127.97314453125,
              455.84368896484375
            ],
            [
              234.1833953857422,
              455.84368896484375
            ],
            [
              234.1833953857422,
              490.74609375
            ],
            [
              127.97314453125,
              490.74609375
            ]
          ],
          "bbox": [
            127.97314453125,
            455.84368896484375,
            234.1833953857422,
            490.74609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>A step size of -1 goes through the word backwards, so the slice</i> [::-1] <i>generates a reversed string.</i></p>",
          "polygon": [
            [
              129.5419921875,
              496.2065734863281
            ],
            [
              522.5155029296875,
              496.2065734863281
            ],
            [
              522.5155029296875,
              506.1922912597656
            ],
            [
              129.5419921875,
              506.1922912597656
            ]
          ],
          "bbox": [
            129.5419921875,
            496.2065734863281,
            522.5155029296875,
            506.1922912597656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Use this idiom to write a one-line version of</i> is_palindrome <i>from Exercise </i><i><a href=\"#page-82-0\">6.6.</a></i> <b>Exercise 8.11.</b> <i>The following functions are all</i> intended <i>to check whether a string contains any</i></p>",
          "polygon": [
            [
              126.8525390625,
              516.1765747070312
            ],
            [
              525.5995483398438,
              516.1765747070312
            ],
            [
              525.5995483398438,
              545.66015625
            ],
            [
              126.8525390625,
              545.66015625
            ]
          ],
          "bbox": [
            126.8525390625,
            516.1765747070312,
            525.5995483398438,
            545.66015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/100/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>lowercase letters, but at least some of them are wrong. For each function, describe what the function</i> <i>actually does (assuming that the parameter is a string).</i></p>",
          "polygon": [
            [
              129.392578125,
              540.5645599365234
            ],
            [
              525.6033935546875,
              540.5645599365234
            ],
            [
              525.6033935546875,
              566.9296875
            ],
            [
              129.392578125,
              566.9296875
            ]
          ],
          "bbox": [
            129.392578125,
            540.5645599365234,
            525.6033935546875,
            566.9296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/100/Code/18",
          "block_type": "Code",
          "html": "<pre>def any_lowercase1(s):\n    for c in s:\n        if c.islower():\n            return True\n        else:\n            return False\ndef any_lowercase2(s):\n    for c in s:\n        if 'c'.islower():\n            return 'True'</pre>",
          "polygon": [
            [
              128.27197265625,
              568.7797088623047
            ],
            [
              262.669921875,
              568.7797088623047
            ],
            [
              262.669921875,
              700.6853179931641
            ],
            [
              128.27197265625,
              700.6853179931641
            ]
          ],
          "bbox": [
            128.27197265625,
            568.7797088623047,
            262.669921875,
            700.6853179931641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/97/SectionHeader/8",
        "4": "/page/100/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/101/Page/119",
      "block_type": "Page",
      "html": "<content-ref src='/page/101/PageHeader/0'></content-ref><content-ref src='/page/101/PageHeader/7'></content-ref><content-ref src='/page/101/Code/1'></content-ref><content-ref src='/page/101/Text/2'></content-ref><content-ref src='/page/101/Text/3'></content-ref><content-ref src='/page/101/Text/4'></content-ref><content-ref src='/page/101/Text/5'></content-ref><content-ref src='/page/101/Text/6'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/101/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.6181640625
            ],
            [
              482.4034118652344,
              60.6181640625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.6181640625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/101/PageHeader/7",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              61.1982421875
            ],
            [
              96.89501953125,
              61.1982421875
            ],
            [
              96.89501953125,
              70.2861328125
            ],
            [
              85.53955078125,
              70.2861328125
            ]
          ],
          "bbox": [
            85.53955078125,
            61.1982421875,
            96.89501953125,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/101/Code/1",
          "block_type": "Code",
          "html": "<pre>else:\n            return 'False'\ndef any_lowercase3(s):\n    for c in s:\n        flag = c.islower()\n    return flag\ndef any_lowercase4(s):\n    flag = False\n    for c in s:\n        flag = flag or c.islower()\n    return flag\ndef any_lowercase5(s):\n    for c in s:\n        if not c.islower():\n            return False\n    return True</pre>",
          "polygon": [
            [
              85.9130859375,
              86.431640625
            ],
            [
              271.1865234375,
              86.431640625
            ],
            [
              271.1865234375,
              318.1463623046875
            ],
            [
              85.9130859375,
              318.1463623046875
            ]
          ],
          "bbox": [
            85.9130859375,
            86.431640625,
            271.1865234375,
            318.1463623046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/101/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-101-0\"></span><b>Exercise 8.12.</b> <i>ROT13 is a weak form of encryption that involves \"rotating\" each letter in a word</i> <i>by 13 places. To rotate a letter means to shift it through the alphabet, wrapping around to the</i> <i>beginning if necessary, so 'A' shifted by 3 is 'D' and 'Z' shifted by 1 is 'A'.</i></p>",
          "polygon": [
            [
              85.6142578125,
              319.81640625
            ],
            [
              482.40338134765625,
              319.81640625
            ],
            [
              482.40338134765625,
              354.70623779296875
            ],
            [
              85.6142578125,
              354.70623779296875
            ]
          ],
          "bbox": [
            85.6142578125,
            319.81640625,
            482.40338134765625,
            354.70623779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/101/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a function called</i> rotate_word <i>that takes a string and an integer as parameters, and that</i> <i>returns a new string that contains the letters from the original string \"rotated\" by the given amount.</i></p>",
          "polygon": [
            [
              85.6142578125,
              364.482421875
            ],
            [
              482.4034423828125,
              364.482421875
            ],
            [
              482.4034423828125,
              387.0372314453125
            ],
            [
              85.6142578125,
              387.0372314453125
            ]
          ],
          "bbox": [
            85.6142578125,
            364.482421875,
            482.4034423828125,
            387.0372314453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/101/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>For example, \"cheer\" rotated by 7 is \"jolly\" and \"melon\" rotated by -10 is \"cubed\".</i></p>",
          "polygon": [
            [
              85.9130859375,
              396.0
            ],
            [
              420.75,
              396.0
            ],
            [
              420.75,
              407.17523193359375
            ],
            [
              85.9130859375,
              407.17523193359375
            ]
          ],
          "bbox": [
            85.9130859375,
            396.0,
            420.75,
            407.17523193359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/101/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You might want to use the built-in functions</i> ord<i>, which converts a character to a numeric code,</i> <i>and</i> chr<i>, which converts numeric codes to characters.</i></p>",
          "polygon": [
            [
              85.166015625,
              416.49609375
            ],
            [
              482.4031677246094,
              416.49609375
            ],
            [
              482.4031677246094,
              439.5303649902344
            ],
            [
              85.166015625,
              439.5303649902344
            ]
          ],
          "bbox": [
            85.166015625,
            416.49609375,
            482.4031677246094,
            439.5303649902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/101/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Potentially offensive jokes on the Internet are sometimes encoded in ROT13. If you are not easily</i> <i>offended, find and decode some of them. Solution:</i> <a href=\"http://thinkpython.com/code/rotate.py\">http:</a> <a href=\"http://thinkpython.com/code/rotate.py\">//</a> <a href=\"http://thinkpython.com/code/rotate.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/rotate.py\">com/</a> <a href=\"http://thinkpython.com/code/rotate.py\">code/</a> <a href=\"http://thinkpython.com/code/rotate.py\">rotate.</a> <a href=\"http://thinkpython.com/code/rotate.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.3154296875,
              448.59375
            ],
            [
              482.4035339355469,
              448.59375
            ],
            [
              482.4035339355469,
              484.171875
            ],
            [
              85.3154296875,
              484.171875
            ]
          ],
          "bbox": [
            85.3154296875,
            448.59375,
            482.4035339355469,
            484.171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/97/SectionHeader/8",
            "4": "/page/100/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/92/SectionHeader/1",
        "2": "/page/97/SectionHeader/8",
        "4": "/page/100/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/102/Page/154",
      "block_type": "Page",
      "html": "<content-ref src='/page/102/SectionHeader/0'></content-ref><content-ref src='/page/102/SectionHeader/1'></content-ref><content-ref src='/page/102/SectionHeader/2'></content-ref><content-ref src='/page/102/Text/3'></content-ref><content-ref src='/page/102/Text/4'></content-ref><content-ref src='/page/102/Code/5'></content-ref><content-ref src='/page/102/Text/6'></content-ref><content-ref src='/page/102/Text/7'></content-ref><content-ref src='/page/102/Code/8'></content-ref><content-ref src='/page/102/Text/9'></content-ref><content-ref src='/page/102/Text/10'></content-ref><content-ref src='/page/102/Code/11'></content-ref><content-ref src='/page/102/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/102/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-102-0\"></span><b>Chapter 9</b></h2>",
          "polygon": [
            [
              129.2431640625,
              162.73150634765625
            ],
            [
              220.84561157226562,
              162.73150634765625
            ],
            [
              220.84561157226562,
              183.39398193359375
            ],
            [
              129.2431640625,
              183.39398193359375
            ]
          ],
          "bbox": [
            129.2431640625,
            162.73150634765625,
            220.84561157226562,
            183.39398193359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/92/SectionHeader/1",
            "2": "/page/102/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/102/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Case study: word play</b></h1>",
          "polygon": [
            [
              128.42138671875,
              216.69732666015625
            ],
            [
              381.684814453125,
              216.69732666015625
            ],
            [
              381.684814453125,
              241.484375
            ],
            [
              128.42138671875,
              241.484375
            ]
          ],
          "bbox": [
            128.42138671875,
            216.69732666015625,
            381.684814453125,
            241.484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/102/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-102-1\"></span><b>9.1 Reading word lists</b></h4>",
          "polygon": [
            [
              128.27197265625,
              288.9817810058594
            ],
            [
              285.3853759765625,
              288.9817810058594
            ],
            [
              285.3853759765625,
              303.3280029296875
            ],
            [
              128.27197265625,
              303.3280029296875
            ]
          ],
          "bbox": [
            128.27197265625,
            288.9817810058594,
            285.3853759765625,
            303.3280029296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For the exercises in this chapter we need a list of English words. There are lots of word lists available on the Web, but the one most suitable for our purpose is one of the word lists collected and contributed to the public domain by Grady Ward as part of the Moby lexicon project (see <a href=\"http://wikipedia.org/wiki/Moby_Project\">http://wikipedia.org/wiki/Moby_Project</a>). It is a list of 113,809 official crosswords; that is, words that are considered valid in crossword puzzles and other word games. In the Moby collection, the filename is 113809of.fic; you can download a copy, with the simpler name words.txt, from <a href=\"http://thinkpython.com/code/words.txt\">http://thinkpython.com/code/words.txt</a>.</p>",
          "polygon": [
            [
              127.8984375,
              314.2833557128906
            ],
            [
              525.9375,
              314.2833557128906
            ],
            [
              525.9375,
              397.4119567871094
            ],
            [
              127.8984375,
              397.4119567871094
            ]
          ],
          "bbox": [
            127.8984375,
            314.2833557128906,
            525.9375,
            397.4119567871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This file is in plain text, so you can open it with a text editor, but you can also read it from Python. The built-in function open takes the name of the file as a parameter and returns a <b>file object</b> you can use to read the file.</p>",
          "polygon": [
            [
              127.8984375,
              405.28125
            ],
            [
              525.9375,
              405.28125
            ],
            [
              525.9375,
              440.5479431152344
            ],
            [
              127.8984375,
              440.5479431152344
            ]
          ],
          "bbox": [
            127.8984375,
            405.28125,
            525.9375,
            440.5479431152344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fin = open('words.txt')\n&gt;&gt;&gt; print fin\n&lt;open file 'words.txt', mode 'r' at 0xb7f4b380&gt;</pre>",
          "polygon": [
            [
              128.86962890625,
              443.56640625
            ],
            [
              375.3861999511719,
              443.56640625
            ],
            [
              375.3861999511719,
              482.23828125
            ],
            [
              128.86962890625,
              482.23828125
            ]
          ],
          "bbox": [
            128.86962890625,
            443.56640625,
            375.3861999511719,
            482.23828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">fin is a common name for a file object used for input. Mode 'r' indicates that this file is open for reading (as opposed to 'w' for writing).</p>",
          "polygon": [
            [
              129.5419921875,
              484.37579345703125
            ],
            [
              525.9375,
              484.37579345703125
            ],
            [
              525.9375,
              506.98828125
            ],
            [
              129.5419921875,
              506.98828125
            ]
          ],
          "bbox": [
            129.5419921875,
            484.37579345703125,
            525.9375,
            506.98828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The file object provides several methods for reading, including readline, which reads characters from the file until it gets to a newline and returns the result as a string:</p>",
          "polygon": [
            [
              128.6455078125,
              514.72265625
            ],
            [
              525.9375,
              514.72265625
            ],
            [
              525.9375,
              537.6239624023438
            ],
            [
              128.6455078125,
              537.6239624023438
            ]
          ],
          "bbox": [
            128.6455078125,
            514.72265625,
            525.9375,
            537.6239624023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fin.readline()\n'aa\\r\\n'</pre>",
          "polygon": [
            [
              128.72021484375,
              542.1796875
            ],
            [
              223.75668334960938,
              542.1796875
            ],
            [
              223.75668334960938,
              564.4454193115234
            ],
            [
              128.72021484375,
              564.4454193115234
            ]
          ],
          "bbox": [
            128.72021484375,
            542.1796875,
            223.75668334960938,
            564.4454193115234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first word in this particular list is \"aa,\" which is a kind of lava. The sequence \\r\\n represents two whitespace characters, a carriage return and a newline, that separate this word from the next.</p>",
          "polygon": [
            [
              128.49609375,
              568.86328125
            ],
            [
              525.9375,
              568.86328125
            ],
            [
              525.9375,
              603.7589721679688
            ],
            [
              128.49609375,
              603.7589721679688
            ]
          ],
          "bbox": [
            128.49609375,
            568.86328125,
            525.9375,
            603.7589721679688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The file object keeps track of where it is in the file, so if you call readline again, you get the next word:</p>",
          "polygon": [
            [
              128.49609375,
              612.17578125
            ],
            [
              525.9375,
              612.17578125
            ],
            [
              525.9375,
              634.7009887695312
            ],
            [
              128.49609375,
              634.7009887695312
            ]
          ],
          "bbox": [
            128.49609375,
            612.17578125,
            525.9375,
            634.7009887695312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fin.readline()\n'aah\\r\\n'</pre>",
          "polygon": [
            [
              128.27197265625,
              638.47265625
            ],
            [
              225.31640625,
              638.47265625
            ],
            [
              225.31640625,
              661.5214385986328
            ],
            [
              128.27197265625,
              661.5214385986328
            ]
          ],
          "bbox": [
            128.27197265625,
            638.47265625,
            225.31640625,
            661.5214385986328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/102/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next word is \"aah,\" which is a perfectly legitimate word, so stop looking at me like that. Or, if it's the whitespace that's bothering you, we can get rid of it with the string method strip:</p>",
          "polygon": [
            [
              129.392578125,
              665.54296875
            ],
            [
              526.236328125,
              665.54296875
            ],
            [
              526.236328125,
              700.8349990844727
            ],
            [
              129.392578125,
              700.8349990844727
            ]
          ],
          "bbox": [
            129.392578125,
            665.54296875,
            526.236328125,
            700.8349990844727
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/102/SectionHeader/1",
        "4": "/page/102/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/103/Page/226",
      "block_type": "Page",
      "html": "<content-ref src='/page/103/PageHeader/0'></content-ref><content-ref src='/page/103/Code/1'></content-ref><content-ref src='/page/103/Text/2'></content-ref><content-ref src='/page/103/Text/3'></content-ref><content-ref src='/page/103/Code/4'></content-ref><content-ref src='/page/103/Text/5'></content-ref><content-ref src='/page/103/SectionHeader/6'></content-ref><content-ref src='/page/103/Text/7'></content-ref><content-ref src='/page/103/Text/8'></content-ref><content-ref src='/page/103/Text/9'></content-ref><content-ref src='/page/103/Text/10'></content-ref><content-ref src='/page/103/Text/11'></content-ref><content-ref src='/page/103/Text/12'></content-ref><content-ref src='/page/103/Text/13'></content-ref><content-ref src='/page/103/Text/14'></content-ref><content-ref src='/page/103/Text/15'></content-ref><content-ref src='/page/103/Text/16'></content-ref><content-ref src='/page/103/Text/17'></content-ref><content-ref src='/page/103/SectionHeader/18'></content-ref><content-ref src='/page/103/Text/19'></content-ref><content-ref src='/page/103/Text/224'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/103/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.69970703125
            ],
            [
              482.40350341796875,
              59.69970703125
            ],
            [
              482.40350341796875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.69970703125,
            482.40350341796875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/103/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; line = fin.readline()\n&gt;&gt;&gt; word = line.strip()\n&gt;&gt;&gt; print word</pre>",
          "polygon": [
            [
              85.83837890625,
              87.35009765625
            ],
            [
              217.16905212402344,
              87.35009765625
            ],
            [
              217.16905212402344,
              126.650390625
            ],
            [
              85.83837890625,
              126.650390625
            ]
          ],
          "bbox": [
            85.83837890625,
            87.35009765625,
            217.16905212402344,
            126.650390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">aahed</p>",
          "polygon": [
            [
              85.83837890625,
              125.26873779296875
            ],
            [
              113.03173828125,
              125.26873779296875
            ],
            [
              113.03173828125,
              136.2216796875
            ],
            [
              85.83837890625,
              136.2216796875
            ]
          ],
          "bbox": [
            85.83837890625,
            125.26873779296875,
            113.03173828125,
            136.2216796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can also use a file object as part of a for loop. This program reads words.txt and prints each word, one per line:</p>",
          "polygon": [
            [
              85.46484375,
              138.1552734375
            ],
            [
              482.607421875,
              138.1552734375
            ],
            [
              482.607421875,
              162.33392333984375
            ],
            [
              85.46484375,
              162.33392333984375
            ]
          ],
          "bbox": [
            85.46484375,
            138.1552734375,
            482.607421875,
            162.33392333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/103/Code/4",
          "block_type": "Code",
          "html": "<pre>fin = open('words.txt')\nfor line in fin:\n    word = line.strip()\n    print word</pre>",
          "polygon": [
            [
              85.166015625,
              166.095703125
            ],
            [
              211.1220703125,
              166.095703125
            ],
            [
              211.1220703125,
              216.17578125
            ],
            [
              85.166015625,
              216.17578125
            ]
          ],
          "bbox": [
            85.166015625,
            166.095703125,
            211.1220703125,
            216.17578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 9.1.</b> <i>Write a program that reads</i> words.txt <i>and prints only the words with more than 20</i> <i>characters (not counting whitespace).</i></p>",
          "polygon": [
            [
              85.6142578125,
              215.733642578125
            ],
            [
              482.4020690917969,
              215.733642578125
            ],
            [
              482.4020690917969,
              237.8912353515625
            ],
            [
              85.6142578125,
              237.8912353515625
            ]
          ],
          "bbox": [
            85.6142578125,
            215.733642578125,
            482.4020690917969,
            237.8912353515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "4": "/page/102/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/103/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-103-0\"></span><b>9.2 Exercises</b></h2>",
          "polygon": [
            [
              85.6142578125,
              264.12890625
            ],
            [
              178.430908203125,
              264.12890625
            ],
            [
              178.430908203125,
              279.781005859375
            ],
            [
              85.6142578125,
              279.781005859375
            ]
          ],
          "bbox": [
            85.6142578125,
            264.12890625,
            178.430908203125,
            279.781005859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are solutions to these exercises in the next section. You should at least attempt each one before you read the solutions.</p>",
          "polygon": [
            [
              85.9130859375,
              290.0390625
            ],
            [
              482.90625,
              290.0390625
            ],
            [
              482.90625,
              312.8759460449219
            ],
            [
              85.9130859375,
              312.8759460449219
            ]
          ],
          "bbox": [
            85.9130859375,
            290.0390625,
            482.90625,
            312.8759460449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 9.2.</b> <i>In 1939 Ernest Vincent Wright published a 50,000 word novel called</i> Gadsby <i>that</i> <i>does not contain the letter \"e.\" Since \"e\" is the most common letter in English, that's not easy to</i> <i>do.</i></p>",
          "polygon": [
            [
              85.763671875,
              314.40234375
            ],
            [
              482.90625,
              314.40234375
            ],
            [
              482.90625,
              349.2862548828125
            ],
            [
              85.763671875,
              349.2862548828125
            ]
          ],
          "bbox": [
            85.763671875,
            314.40234375,
            482.90625,
            349.2862548828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>In fact, it is difficult to construct a solitary thought without using that most common symbol. It is</i> <i>slow going at first, but with caution and hours of training you can gradually gain facility.</i></p>",
          "polygon": [
            [
              85.6142578125,
              357.134765625
            ],
            [
              482.90625,
              357.134765625
            ],
            [
              482.90625,
              380.21026611328125
            ],
            [
              85.6142578125,
              380.21026611328125
            ]
          ],
          "bbox": [
            85.6142578125,
            357.134765625,
            482.90625,
            380.21026611328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>All right, I'll stop now.</i></p>",
          "polygon": [
            [
              85.763671875,
              387.4921875
            ],
            [
              178.8330535888672,
              387.4921875
            ],
            [
              178.8330535888672,
              398.9402770996094
            ],
            [
              85.763671875,
              398.9402770996094
            ]
          ],
          "bbox": [
            85.763671875,
            387.4921875,
            178.8330535888672,
            398.9402770996094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a function called</i> has_no_e <i>that returns</i> True <i>if the given word doesn't have the letter \"e\" in</i> <i>it.</i></p>",
          "polygon": [
            [
              85.6142578125,
              406.44140625
            ],
            [
              482.3984069824219,
              406.44140625
            ],
            [
              482.3984069824219,
              429.8642883300781
            ],
            [
              85.6142578125,
              429.8642883300781
            ]
          ],
          "bbox": [
            85.6142578125,
            406.44140625,
            482.3984069824219,
            429.8642883300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Modify your program from the previous section to print only the words that have no \"e\" and com</i><i>pute the percentage of the words in the list have no \"e.\"</i></p>",
          "polygon": [
            [
              85.46484375,
              437.765625
            ],
            [
              482.4034729003906,
              437.765625
            ],
            [
              482.4034729003906,
              460.7882995605469
            ],
            [
              85.46484375,
              460.7882995605469
            ]
          ],
          "bbox": [
            85.46484375,
            437.765625,
            482.4034729003906,
            460.7882995605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 9.3.</b> <i>Write a function named</i> avoids <i>that takes a word and a string of forbidden letters,</i> <i>and that returns</i> True <i>if the word doesn't use any of the forbidden letters.</i></p>",
          "polygon": [
            [
              85.3154296875,
              462.515625
            ],
            [
              482.4031066894531,
              462.515625
            ],
            [
              482.4031066894531,
              485.200439453125
            ],
            [
              85.3154296875,
              485.200439453125
            ]
          ],
          "bbox": [
            85.3154296875,
            462.515625,
            482.4031066894531,
            485.200439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Modify your program to prompt the user to enter a string of forbidden letters and then print the</i> <i>number of words that don't contain any of them. Can you find a combination of 5 forbidden letters</i> <i>that excludes the smallest number of words?</i></p>",
          "polygon": [
            [
              85.46484375,
              493.06640625
            ],
            [
              482.607421875,
              493.06640625
            ],
            [
              482.607421875,
              528.2953186035156
            ],
            [
              85.46484375,
              528.2953186035156
            ]
          ],
          "bbox": [
            85.46484375,
            493.06640625,
            482.607421875,
            528.2953186035156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 9.4.</b> <i>Write a function named</i> uses_only <i>that takes a word and a string of letters, and</i> <i>that returns</i> True <i>if the word contains only letters in the list. Can you make a sentence using only</i> <i>the letters</i> acefhlo<i>? Other than \"Hoe alfalfa?\"</i></p>",
          "polygon": [
            [
              85.46484375,
              529.8046875
            ],
            [
              482.607421875,
              529.8046875
            ],
            [
              482.607421875,
              564.9014739990234
            ],
            [
              85.46484375,
              564.9014739990234
            ]
          ],
          "bbox": [
            85.46484375,
            529.8046875,
            482.607421875,
            564.9014739990234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 9.5.</b> <i>Write a function named</i> uses_all <i>that takes a word and a string of required letters,</i> <i>and that returns</i> True <i>if the word uses all the required letters at least once. How many words are</i> <i>there that use all the vowels</i> aeiou<i>? How about</i> aeiouy<i>?</i></p>",
          "polygon": [
            [
              85.3154296875,
              566.15625
            ],
            [
              482.90625,
              566.15625
            ],
            [
              482.90625,
              601.4844818115234
            ],
            [
              85.3154296875,
              601.4844818115234
            ]
          ],
          "bbox": [
            85.3154296875,
            566.15625,
            482.90625,
            601.4844818115234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 9.6.</b> <i>Write a function called</i> is_abecedarian <i>that returns</i> True <i>if the letters in a word</i> <i>appear in alphabetical order (double letters are ok). How many abecedarian words are there?</i></p>",
          "polygon": [
            [
              85.166015625,
              602.89453125
            ],
            [
              482.607421875,
              602.89453125
            ],
            [
              482.607421875,
              625.850341796875
            ],
            [
              85.166015625,
              625.850341796875
            ]
          ],
          "bbox": [
            85.166015625,
            602.89453125,
            482.607421875,
            625.850341796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/103/SectionHeader/18",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-103-1\"></span><b>9.3 Search</b></h3>",
          "polygon": [
            [
              86.13720703125,
              652.78125
            ],
            [
              162.50668334960938,
              652.78125
            ],
            [
              162.50668334960938,
              667.7410888671875
            ],
            [
              86.13720703125,
              667.7410888671875
            ]
          ],
          "bbox": [
            86.13720703125,
            652.78125,
            162.50668334960938,
            667.7410888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">All of the exercises in the previous section have something in common; they can be solved with the search pattern we saw in Section <a href=\"#page-95-1\">8.6.</a> The simplest example is:</p>",
          "polygon": [
            [
              86.2119140625,
              677.53125
            ],
            [
              482.4034118652344,
              677.53125
            ],
            [
              482.4034118652344,
              700.8350448608398
            ],
            [
              86.2119140625,
              700.8350448608398
            ]
          ],
          "bbox": [
            86.2119140625,
            677.53125,
            482.4034118652344,
            700.8350448608398
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/103/Text/224",
          "block_type": "Text",
          "html": "<p>82</p>\n",
          "polygon": [
            [
              84.94189453125,
              60.134765625
            ],
            [
              96.89501953125,
              60.134765625
            ],
            [
              96.89501953125,
              69.8994140625
            ],
            [
              84.94189453125,
              69.8994140625
            ]
          ],
          "bbox": [
            84.94189453125,
            60.134765625,
            96.89501953125,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/102/SectionHeader/1",
        "2": "/page/103/SectionHeader/6",
        "3": "/page/103/SectionHeader/18"
      },
      "images": null
    },
    {
      "id": "/page/104/Page/201",
      "block_type": "Page",
      "html": "<content-ref src='/page/104/PageHeader/0'></content-ref><content-ref src='/page/104/PageHeader/17'></content-ref><content-ref src='/page/104/Code/1'></content-ref><content-ref src='/page/104/Text/2'></content-ref><content-ref src='/page/104/Text/3'></content-ref><content-ref src='/page/104/Code/200'></content-ref><content-ref src='/page/104/Text/5'></content-ref><content-ref src='/page/104/Text/6'></content-ref><content-ref src='/page/104/Code/7'></content-ref><content-ref src='/page/104/Text/8'></content-ref><content-ref src='/page/104/Text/9'></content-ref><content-ref src='/page/104/Code/10'></content-ref><content-ref src='/page/104/Text/11'></content-ref><content-ref src='/page/104/Text/12'></content-ref><content-ref src='/page/104/Code/13'></content-ref><content-ref src='/page/104/Text/14'></content-ref><content-ref src='/page/104/SectionHeader/15'></content-ref><content-ref src='/page/104/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/104/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.599609375,
              60.76318359375
            ],
            [
              525.6033935546875,
              60.76318359375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              127.599609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.599609375,
            60.76318359375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.908203125
            ],
            [
              526.236328125,
              60.908203125
            ],
            [
              526.236328125,
              70.0927734375
            ],
            [
              514.880859375,
              70.0927734375
            ]
          ],
          "bbox": [
            514.880859375,
            60.908203125,
            526.236328125,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Code/1",
          "block_type": "Code",
          "html": "<pre>def has_no_e(word):\n    for letter in word:\n        if letter == 'e':\n            return False\n    return True</pre>",
          "polygon": [
            [
              129.60000610351562,
              87.8818359375
            ],
            [
              260.578125,
              87.8818359375
            ],
            [
              260.578125,
              147.42529296875
            ],
            [
              129.60000610351562,
              147.42529296875
            ]
          ],
          "bbox": [
            129.60000610351562,
            87.8818359375,
            260.578125,
            147.42529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The for loop traverses the characters in word. If we find the letter \"e\", we can immediately return False; otherwise we have to go to the next letter. If we exit the loop normally, that means we didn't find an \"e\", so we return True.</p>",
          "polygon": [
            [
              128.3466796875,
              152.3671875
            ],
            [
              525.9375,
              152.3671875
            ],
            [
              525.9375,
              187.671875
            ],
            [
              128.3466796875,
              187.671875
            ]
          ],
          "bbox": [
            128.3466796875,
            152.3671875,
            525.9375,
            187.671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">avoids is a more general version of has_no_e but it has the same structure:</p>",
          "polygon": [
            [
              128.0478515625,
              197.033203125
            ],
            [
              458.746337890625,
              197.033203125
            ],
            [
              458.746337890625,
              207.35089111328125
            ],
            [
              128.0478515625,
              207.35089111328125
            ]
          ],
          "bbox": [
            128.0478515625,
            197.033203125,
            458.746337890625,
            207.35089111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Code/200",
          "block_type": "Code",
          "html": "<pre>def avoids(word, forbidden):\n    for letter in word:\n        if letter in forbidden:\n            return False\n    return True</pre>",
          "polygon": [
            [
              129.60006713867188,
              212.94671630859375
            ],
            [
              292.25390625,
              212.94671630859375
            ],
            [
              292.25390625,
              271.686279296875
            ],
            [
              129.60006713867188,
              271.686279296875
            ]
          ],
          "bbox": [
            129.60006713867188,
            212.94671630859375,
            292.25390625,
            271.686279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We can return False as soon as we find a forbidden letter; if we get to the end of the loop, we return True.</p>",
          "polygon": [
            [
              128.794921875,
              277.27734375
            ],
            [
              526.236328125,
              277.27734375
            ],
            [
              526.236328125,
              299.73785400390625
            ],
            [
              128.794921875,
              299.73785400390625
            ]
          ],
          "bbox": [
            128.794921875,
            277.27734375,
            526.236328125,
            299.73785400390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">uses_only is similar except that the sense of the condition is reversed:</p>",
          "polygon": [
            [
              127.8984375,
              308.794921875
            ],
            [
              438.08203125,
              308.794921875
            ],
            [
              438.08203125,
              319.4178466796875
            ],
            [
              127.8984375,
              319.4178466796875
            ]
          ],
          "bbox": [
            127.8984375,
            308.794921875,
            438.08203125,
            319.4178466796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Code/7",
          "block_type": "Code",
          "html": "<pre>def uses_only(word, available):\n    for letter in word:\n        if letter not in available:\n            return False\n    return True</pre>",
          "polygon": [
            [
              129.60008239746094,
              324.45703125
            ],
            [
              312.6628723144531,
              324.45703125
            ],
            [
              312.6628723144531,
              383.7532958984375
            ],
            [
              129.60008239746094,
              383.7532958984375
            ]
          ],
          "bbox": [
            129.60008239746094,
            324.45703125,
            312.6628723144531,
            383.7532958984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Instead of a list of forbidden letters, we have a list of available letters. If we find a letter in word that is not in available, we can return False.</p>",
          "polygon": [
            [
              129.60008239746094,
              388.458984375
            ],
            [
              525.9375,
              388.458984375
            ],
            [
              525.9375,
              411.80487060546875
            ],
            [
              129.60008239746094,
              411.80487060546875
            ]
          ],
          "bbox": [
            129.60008239746094,
            388.458984375,
            525.9375,
            411.80487060546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">uses_all is similar except that we reverse the role of the word and the string of letters:</p>",
          "polygon": [
            [
              128.3466796875,
              421.13671875
            ],
            [
              511.12823486328125,
              421.13671875
            ],
            [
              511.12823486328125,
              431.48486328125
            ],
            [
              128.3466796875,
              431.48486328125
            ]
          ],
          "bbox": [
            128.3466796875,
            421.13671875,
            511.12823486328125,
            431.48486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Code/10",
          "block_type": "Code",
          "html": "<pre>def uses_all(word, required):\n    for letter in required:\n        if letter not in word:\n            return False\n    return True</pre>",
          "polygon": [
            [
              129.60008239746094,
              437.0797119140625
            ],
            [
              291.955078125,
              437.0797119140625
            ],
            [
              291.955078125,
              499.25390625
            ],
            [
              129.60008239746094,
              499.25390625
            ]
          ],
          "bbox": [
            129.60008239746094,
            437.0797119140625,
            291.955078125,
            499.25390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Instead of traversing the letters in word, the loop traverses the required letters. If any of the required letters do not appear in the word, we can return False.</p>",
          "polygon": [
            [
              128.6455078125,
              501.1875
            ],
            [
              525.9375,
              501.1875
            ],
            [
              525.9375,
              523.8718872070312
            ],
            [
              128.6455078125,
              523.8718872070312
            ]
          ],
          "bbox": [
            128.6455078125,
            501.1875,
            525.9375,
            523.8718872070312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you were really thinking like a computer scientist, you would have recognized that uses_all was an instance of a previously-solved problem, and you would have written:</p>",
          "polygon": [
            [
              127.8984375,
              532.8984375
            ],
            [
              525.9375,
              532.8984375
            ],
            [
              525.9375,
              555.7458953857422
            ],
            [
              127.8984375,
              555.7458953857422
            ]
          ],
          "bbox": [
            127.8984375,
            532.8984375,
            525.9375,
            555.7458953857422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Code/13",
          "block_type": "Code",
          "html": "<pre>def uses_all(word, required):\n    return uses_only(required, word)</pre>",
          "polygon": [
            [
              129.60015869140625,
              561.3407440185547
            ],
            [
              317.89776611328125,
              561.3407440185547
            ],
            [
              317.89776611328125,
              583.4983520507812
            ],
            [
              129.60015869140625,
              583.4983520507812
            ]
          ],
          "bbox": [
            129.60015869140625,
            561.3407440185547,
            317.89776611328125,
            583.4983520507812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This is an example of a program development method called <b>problem recognition</b>, which means that you recognize the problem you are working on as an instance of a previouslysolved problem, and apply a previously-developed solution.</p>",
          "polygon": [
            [
              128.3466796875,
              588.5859375
            ],
            [
              525.9375,
              588.5859375
            ],
            [
              525.9375,
              623.743896484375
            ],
            [
              128.3466796875,
              623.743896484375
            ]
          ],
          "bbox": [
            128.3466796875,
            588.5859375,
            525.9375,
            623.743896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/104/SectionHeader/15",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-104-0\"></span><b>9.4 Looping with indices</b></h4>",
          "polygon": [
            [
              127.37548828125,
              652.4447631835938
            ],
            [
              301.3241271972656,
              652.4447631835938
            ],
            [
              301.3241271972656,
              666.7909545898438
            ],
            [
              127.37548828125,
              666.7909545898438
            ]
          ],
          "bbox": [
            127.37548828125,
            652.4447631835938,
            301.3241271972656,
            666.7909545898438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/104/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I wrote the functions in the previous section with for loops because I only needed the characters in the strings; I didn't have to do anything with the indices.</p>",
          "polygon": [
            [
              127.599609375,
              677.91796875
            ],
            [
              525.638671875,
              677.91796875
            ],
            [
              525.638671875,
              700.8349075317383
            ],
            [
              127.599609375,
              700.8349075317383
            ]
          ],
          "bbox": [
            127.599609375,
            677.91796875,
            525.638671875,
            700.8349075317383
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/102/SectionHeader/1",
        "2": "/page/103/SectionHeader/6",
        "3": "/page/103/SectionHeader/18",
        "4": "/page/104/SectionHeader/15"
      },
      "images": null
    },
    {
      "id": "/page/105/Page/189",
      "block_type": "Page",
      "html": "<content-ref src='/page/105/PageHeader/0'></content-ref><content-ref src='/page/105/PageHeader/12'></content-ref><content-ref src='/page/105/Text/1'></content-ref><content-ref src='/page/105/Code/2'></content-ref><content-ref src='/page/105/Text/3'></content-ref><content-ref src='/page/105/Code/4'></content-ref><content-ref src='/page/105/Text/5'></content-ref><content-ref src='/page/105/Code/6'></content-ref><content-ref src='/page/105/Text/7'></content-ref><content-ref src='/page/105/Text/8'></content-ref><content-ref src='/page/105/Text/9'></content-ref><content-ref src='/page/105/Text/10'></content-ref><content-ref src='/page/105/Code/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/105/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.908203125
            ],
            [
              482.40350341796875,
              60.908203125
            ],
            [
              482.40350341796875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.908203125,
            482.40350341796875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/PageHeader/12",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.166015625,
              60.85986328125
            ],
            [
              96.3720703125,
              60.85986328125
            ],
            [
              96.3720703125,
              70.33447265625
            ],
            [
              85.166015625,
              70.33447265625
            ]
          ],
          "bbox": [
            85.166015625,
            60.85986328125,
            96.3720703125,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For is_abecedarian we have to compare adjacent letters, which is a little tricky with a for loop:</p>",
          "polygon": [
            [
              85.763671875,
              88.68572998046875
            ],
            [
              482.40411376953125,
              88.68572998046875
            ],
            [
              482.40411376953125,
              110.99188232421875
            ],
            [
              85.763671875,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.763671875,
            88.68572998046875,
            482.40411376953125,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Code/2",
          "block_type": "Code",
          "html": "<pre>def is_abecedarian(word):\n    previous = word[0]\n    for c in word:\n        if c &lt; previous:\n            return False\n        previous = c\n    return True</pre>",
          "polygon": [
            [
              85.68896484375,
              115.99267578125
            ],
            [
              218.7421875,
              115.99267578125
            ],
            [
              218.7421875,
              199.121337890625
            ],
            [
              85.68896484375,
              199.121337890625
            ]
          ],
          "bbox": [
            85.68896484375,
            115.99267578125,
            218.7421875,
            199.121337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An alternative is to use recursion:</p>",
          "polygon": [
            [
              86.2119140625,
              203.220703125
            ],
            [
              235.9248046875,
              203.220703125
            ],
            [
              235.9248046875,
              214.3839111328125
            ],
            [
              86.2119140625,
              214.3839111328125
            ]
          ],
          "bbox": [
            86.2119140625,
            203.220703125,
            235.9248046875,
            214.3839111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Code/4",
          "block_type": "Code",
          "html": "<pre>def is_abecedarian(word):\n    if len(word) &lt;= 1:\n        return True\n    if word[0] &gt; word[1]:\n        return False\n    return is_abecedarian(word[1:])</pre>",
          "polygon": [
            [
              86.2119140625,
              217.142578125
            ],
            [
              269.46728515625,
              217.142578125
            ],
            [
              269.46728515625,
              293.712890625
            ],
            [
              86.2119140625,
              293.712890625
            ]
          ],
          "bbox": [
            86.2119140625,
            217.142578125,
            269.46728515625,
            293.712890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another option is to use a while loop:</p>",
          "polygon": [
            [
              85.39013671875,
              295.46875
            ],
            [
              253.58544921875,
              295.46875
            ],
            [
              253.58544921875,
              305.89453125
            ],
            [
              85.39013671875,
              305.89453125
            ]
          ],
          "bbox": [
            85.39013671875,
            295.46875,
            253.58544921875,
            305.89453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Code/6",
          "block_type": "Code",
          "html": "<pre>def is_abecedarian(word):\n    i = 0\n    while i &lt; len(word)-1:\n        if word[i+1] &lt; word[i]:\n            return False\n        i = i+1\n    return True</pre>",
          "polygon": [
            [
              86.40000915527344,
              310.58074951171875
            ],
            [
              248.5413360595703,
              310.58074951171875
            ],
            [
              248.5413360595703,
              393.7093505859375
            ],
            [
              86.40000915527344,
              393.7093505859375
            ]
          ],
          "bbox": [
            86.40000915527344,
            310.58074951171875,
            248.5413360595703,
            393.7093505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The loop starts at i=0 and ends when i=len(word)-1. Each time through the loop, it compares the <i>i</i>th character (which you can think of as the current character) to the <i>i</i> + 1th character (which you can think of as the next).</p>",
          "polygon": [
            [
              85.9130859375,
              398.3203125
            ],
            [
              482.40032958984375,
              398.3203125
            ],
            [
              482.40032958984375,
              433.3609313964844
            ],
            [
              85.9130859375,
              433.3609313964844
            ]
          ],
          "bbox": [
            85.9130859375,
            398.3203125,
            482.40032958984375,
            433.3609313964844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the next character is less than (alphabetically before) the current one, then we have discovered a break in the abecedarian trend, and we return False.</p>",
          "polygon": [
            [
              85.9130859375,
              441.6328125
            ],
            [
              482.4034729003906,
              441.6328125
            ],
            [
              482.4034729003906,
              464.638916015625
            ],
            [
              85.9130859375,
              464.638916015625
            ]
          ],
          "bbox": [
            85.9130859375,
            441.6328125,
            482.4034729003906,
            464.638916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we get to the end of the loop without finding a fault, then the word passes the test. To convince yourself that the loop ends correctly, consider an example like 'flossy'. The length of the word is 6, so the last time the loop runs is when i is 4, which is the index of the second-to-last character. On the last iteration, it compares the second-to-last character to the last, which is what we want.</p>",
          "polygon": [
            [
              85.6142578125,
              472.95703125
            ],
            [
              482.90625,
              472.95703125
            ],
            [
              482.90625,
              532.5009155273438
            ],
            [
              85.6142578125,
              532.5009155273438
            ]
          ],
          "bbox": [
            85.6142578125,
            472.95703125,
            482.90625,
            532.5009155273438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a version of is_palindrome (see Exercise <a href=\"#page-82-0\">6.6)</a> that uses two indices; one starts at the beginning and goes up; the other starts at the end and goes down.</p>",
          "polygon": [
            [
              85.6142578125,
              541.01953125
            ],
            [
              482.40325927734375,
              541.01953125
            ],
            [
              482.40325927734375,
              563.7789154052734
            ],
            [
              85.6142578125,
              563.7789154052734
            ]
          ],
          "bbox": [
            85.6142578125,
            541.01953125,
            482.40325927734375,
            563.7789154052734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/105/Code/11",
          "block_type": "Code",
          "html": "<pre>def is_palindrome(word):\n    i = 0\n    j = len(word)-1\n    while i&lt;j:\n        if word[i] != word[j]:\n            return False\n        i = i+1\n        j = j-1\n    return True</pre>",
          "polygon": [
            [
              86.39999389648438,
              568.7797698974609
            ],
            [
              243.544921875,
              568.7797698974609
            ],
            [
              243.544921875,
              700.6853790283203
            ],
            [
              86.39999389648438,
              700.6853790283203
            ]
          ],
          "bbox": [
            86.39999389648438,
            568.7797698974609,
            243.544921875,
            700.6853790283203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/102/SectionHeader/1",
        "2": "/page/103/SectionHeader/6",
        "3": "/page/103/SectionHeader/18",
        "4": "/page/104/SectionHeader/15"
      },
      "images": null
    },
    {
      "id": "/page/106/Page/142",
      "block_type": "Page",
      "html": "<content-ref src='/page/106/PageHeader/0'></content-ref><content-ref src='/page/106/PageHeader/17'></content-ref><content-ref src='/page/106/Text/1'></content-ref><content-ref src='/page/106/Code/2'></content-ref><content-ref src='/page/106/Text/3'></content-ref><content-ref src='/page/106/SectionHeader/4'></content-ref><content-ref src='/page/106/Text/5'></content-ref><content-ref src='/page/106/Text/6'></content-ref><content-ref src='/page/106/Text/7'></content-ref><content-ref src='/page/106/Text/8'></content-ref><content-ref src='/page/106/Text/9'></content-ref><content-ref src='/page/106/Text/10'></content-ref><content-ref src='/page/106/Text/11'></content-ref><content-ref src='/page/106/Text/12'></content-ref><content-ref src='/page/106/SectionHeader/13'></content-ref><content-ref src='/page/106/Text/14'></content-ref><content-ref src='/page/106/ListGroup/140'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/106/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.3466796875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.3466796875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.3466796875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/106/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              60.71484375
            ],
            [
              525.9375,
              60.71484375
            ],
            [
              525.9375,
              70.2861328125
            ],
            [
              514.58203125,
              70.2861328125
            ]
          ],
          "bbox": [
            514.58203125,
            60.71484375,
            525.9375,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Or, if you noticed that this is an instance of a previously-solved problem, you might have written:</p>",
          "polygon": [
            [
              127.599609375,
              88.55859375
            ],
            [
              525.638671875,
              88.55859375
            ],
            [
              525.638671875,
              110.99188232421875
            ],
            [
              127.599609375,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.599609375,
            88.55859375,
            525.638671875,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/106/Code/2",
          "block_type": "Code",
          "html": "<pre>def is_palindrome(word):\n    return is_reverse(word, word)</pre>",
          "polygon": [
            [
              129.31787109375,
              119.08172607421875
            ],
            [
              302.2065124511719,
              119.08172607421875
            ],
            [
              302.2065124511719,
              142.3125
            ],
            [
              129.31787109375,
              142.3125
            ]
          ],
          "bbox": [
            129.31787109375,
            119.08172607421875,
            302.2065124511719,
            142.3125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Assuming you did Exercise <a href=\"#page-99-2\">8.9.</a></p>",
          "polygon": [
            [
              129.2431640625,
              149.080078125
            ],
            [
              268.1982421875,
              149.080078125
            ],
            [
              268.1982421875,
              159.58990478515625
            ],
            [
              129.2431640625,
              159.58990478515625
            ]
          ],
          "bbox": [
            129.2431640625,
            149.080078125,
            268.1982421875,
            159.58990478515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/104/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/106/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-106-0\"></span><b>9.5 Debugging</b></h4>",
          "polygon": [
            [
              128.0478515625,
              194.8095703125
            ],
            [
              236.00576782226562,
              194.8095703125
            ],
            [
              236.00576782226562,
              209.6015625
            ],
            [
              128.0478515625,
              209.6015625
            ]
          ],
          "bbox": [
            128.0478515625,
            194.8095703125,
            236.00576782226562,
            209.6015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Testing programs is hard. The functions in this chapter are relatively easy to test because you can check the results by hand. Even so, it is somewhere between difficult and impossible to choose a set of words that test for all possible errors.</p>",
          "polygon": [
            [
              128.9443359375,
              223.91015625
            ],
            [
              525.9375,
              223.91015625
            ],
            [
              525.9375,
              258.93182373046875
            ],
            [
              128.9443359375,
              258.93182373046875
            ]
          ],
          "bbox": [
            128.9443359375,
            223.91015625,
            525.9375,
            258.93182373046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Taking has_no_e as an example, there are two obvious cases to check: words that have an 'e' should return False; words that don't should return True. You should have no trouble coming up with one of each.</p>",
          "polygon": [
            [
              128.197265625,
              270.703125
            ],
            [
              526.236328125,
              270.703125
            ],
            [
              526.236328125,
              305.4937744140625
            ],
            [
              128.197265625,
              305.4937744140625
            ]
          ],
          "bbox": [
            128.197265625,
            270.703125,
            526.236328125,
            305.4937744140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Within each case, there are some less obvious subcases. Among the words that have an \"e,\" you should test words with an \"e\" at the beginning, the end, and somewhere in the middle. You should test long words, short words, and very short words, like the empty string. The empty string is an example of a <b>special case</b>, which is one of the non-obvious cases where errors often lurk.</p>",
          "polygon": [
            [
              127.8984375,
              316.916015625
            ],
            [
              526.53515625,
              316.916015625
            ],
            [
              526.53515625,
              376.4447937011719
            ],
            [
              127.8984375,
              376.4447937011719
            ]
          ],
          "bbox": [
            127.8984375,
            316.916015625,
            526.53515625,
            376.4447937011719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In addition to the test cases you generate, you can also test your program with a word list like words.txt. By scanning the output, you might be able to catch errors, but be careful: you might catch one kind of error (words that should not be included, but are) and not another (words that should be included, but aren't).</p>",
          "polygon": [
            [
              128.197265625,
              388.458984375
            ],
            [
              526.236328125,
              388.458984375
            ],
            [
              526.236328125,
              435.2008056640625
            ],
            [
              128.197265625,
              435.2008056640625
            ]
          ],
          "bbox": [
            128.197265625,
            388.458984375,
            526.236328125,
            435.2008056640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In general, testing can help you find bugs, but it is not easy to generate a good set of test cases, and even if you do, you can't be sure your program is correct.</p>",
          "polygon": [
            [
              128.3466796875,
              446.66015625
            ],
            [
              525.9375,
              446.66015625
            ],
            [
              525.9375,
              469.56781005859375
            ],
            [
              128.3466796875,
              469.56781005859375
            ]
          ],
          "bbox": [
            128.3466796875,
            446.66015625,
            525.9375,
            469.56781005859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">According to a legendary computer scientist:</p>",
          "polygon": [
            [
              129.5419921875,
              481.078125
            ],
            [
              327.515625,
              481.078125
            ],
            [
              327.515625,
              491.90625
            ],
            [
              129.5419921875,
              491.90625
            ]
          ],
          "bbox": [
            129.5419921875,
            481.078125,
            327.515625,
            491.90625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Program testing can be used to show the presence of bugs, but never to show their absence!</p>",
          "polygon": [
            [
              154.5070343017578,
              508.53515625
            ],
            [
              500.8359375,
              508.53515625
            ],
            [
              500.8359375,
              531.8438110351562
            ],
            [
              154.5070343017578,
              531.8438110351562
            ]
          ],
          "bbox": [
            154.5070343017578,
            508.53515625,
            500.8359375,
            531.8438110351562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">— Edsger W. Dijkstra</p>",
          "polygon": [
            [
              153.896484375,
              539.0859375
            ],
            [
              250.716796875,
              539.0859375
            ],
            [
              250.716796875,
              549.7598114013672
            ],
            [
              153.896484375,
              549.7598114013672
            ]
          ],
          "bbox": [
            153.896484375,
            539.0859375,
            250.716796875,
            549.7598114013672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/106/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-106-1\"></span><b>9.6 Glossary</b></h4>",
          "polygon": [
            [
              128.794921875,
              590.9436798095703
            ],
            [
              220.05284118652344,
              590.9436798095703
            ],
            [
              220.05284118652344,
              605.2898712158203
            ],
            [
              128.794921875,
              605.2898712158203
            ]
          ],
          "bbox": [
            128.794921875,
            590.9436798095703,
            220.05284118652344,
            605.2898712158203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/106/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>file object:</b> A value that represents an open file.</p>",
          "polygon": [
            [
              129.31787109375,
              615.65625
            ],
            [
              340.962890625,
              615.65625
            ],
            [
              340.962890625,
              626.3628234863281
            ],
            [
              129.31787109375,
              626.3628234863281
            ]
          ],
          "bbox": [
            129.31787109375,
            615.65625,
            340.962890625,
            626.3628234863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/106/ListGroup/140",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/106/ListItem/15'></content-ref><content-ref src='/page/106/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              128.6455078125,
              639.6328125
            ],
            [
              526.53515625,
              639.6328125
            ],
            [
              526.53515625,
              698.02734375
            ],
            [
              128.6455078125,
              698.02734375
            ]
          ],
          "bbox": [
            128.6455078125,
            639.6328125,
            526.53515625,
            698.02734375
          ],
          "children": [
            {
              "id": "/page/106/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>problem recognition:</b> A way of solving a problem by expressing it as an instance of a previously-solved problem.</li>",
              "polygon": [
                [
                  128.6455078125,
                  639.6328125
                ],
                [
                  526.53515625,
                  639.6328125
                ],
                [
                  526.53515625,
                  662.19482421875
                ],
                [
                  128.6455078125,
                  662.19482421875
                ]
              ],
              "bbox": [
                128.6455078125,
                639.6328125,
                526.53515625,
                662.19482421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/102/SectionHeader/1",
                "2": "/page/103/SectionHeader/6",
                "3": "/page/103/SectionHeader/18",
                "4": "/page/106/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/106/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>special case:</b> A test case that is atypical or non-obvious (and less likely to be handled correctly).</li>",
              "polygon": [
                [
                  128.6455078125,
                  675.59765625
                ],
                [
                  525.9375,
                  675.59765625
                ],
                [
                  525.9375,
                  698.02734375
                ],
                [
                  128.6455078125,
                  698.02734375
                ]
              ],
              "bbox": [
                128.6455078125,
                675.59765625,
                525.9375,
                698.02734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/102/SectionHeader/1",
                "2": "/page/103/SectionHeader/6",
                "3": "/page/103/SectionHeader/18",
                "4": "/page/106/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/13"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/102/SectionHeader/1",
        "2": "/page/103/SectionHeader/6",
        "3": "/page/103/SectionHeader/18",
        "4": "/page/106/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/107/Page/238",
      "block_type": "Page",
      "html": "<content-ref src='/page/107/PageHeader/0'></content-ref><content-ref src='/page/107/PageHeader/14'></content-ref><content-ref src='/page/107/SectionHeader/1'></content-ref><content-ref src='/page/107/Text/2'></content-ref><content-ref src='/page/107/Text/3'></content-ref><content-ref src='/page/107/Text/4'></content-ref><content-ref src='/page/107/Text/5'></content-ref><content-ref src='/page/107/Text/6'></content-ref><content-ref src='/page/107/Text/7'></content-ref><content-ref src='/page/107/Text/8'></content-ref><content-ref src='/page/107/Text/9'></content-ref><content-ref src='/page/107/Text/10'></content-ref><content-ref src='/page/107/Text/11'></content-ref><content-ref src='/page/107/Text/12'></content-ref><content-ref src='/page/107/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/107/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.37646484375
            ],
            [
              482.40350341796875,
              60.37646484375
            ],
            [
              482.40350341796875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.37646484375,
            482.40350341796875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/107/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.166015625,
              60.85986328125
            ],
            [
              96.8203125,
              60.85986328125
            ],
            [
              96.8203125,
              70.33447265625
            ],
            [
              85.166015625,
              70.33447265625
            ]
          ],
          "bbox": [
            85.166015625,
            60.85986328125,
            96.8203125,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/106/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/107/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-107-0\"></span><b>9.7 Exercises</b></h4>",
          "polygon": [
            [
              85.763671875,
              85.271484375
            ],
            [
              179.4462890625,
              85.271484375
            ],
            [
              179.4462890625,
              99.97796630859375
            ],
            [
              85.763671875,
              99.97796630859375
            ]
          ],
          "bbox": [
            85.763671875,
            85.271484375,
            179.4462890625,
            99.97796630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 9.7.</b> <i>This question is based on a Puzzler that was broadcast on the radio program</i> Car Talk <i>(</i><a href=\"http://www.cartalk.com/content/puzzlers\">http:</a> <a href=\"http://www.cartalk.com/content/puzzlers\">//</a> <a href=\"http://www.cartalk.com/content/puzzlers\">www.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">cartalk.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">com/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">content/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">puzzlers</a> <i>):</i></p>",
          "polygon": [
            [
              85.6142578125,
              110.8916015625
            ],
            [
              482.90625,
              110.8916015625
            ],
            [
              482.90625,
              134.47991943359375
            ],
            [
              85.6142578125,
              134.47991943359375
            ]
          ],
          "bbox": [
            85.6142578125,
            110.8916015625,
            482.90625,
            134.47991943359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/3",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>Give me a word with three consecutive double letters. I'll give you a couple of words</i> <i>that almost qualify, but don't. For example, the word committee, c-o-m-m-i-t-t-e-e. It</i> <i>would be great except for the 'i' that sneaks in there. Or Mississippi: M-i-s-s-i-s-s-i</i><i>p-p-i. If you could take out those i's it would work. But there is a word that has three</i> <i>consecutive pairs of letters and to the best of my knowledge this may be the only word.</i> <i>Of course there are probably 500 more but I can only think of one. What is the word?</i></p></blockquote>",
          "polygon": [
            [
              109.5205078125,
              148.11328125
            ],
            [
              458.40234375,
              148.11328125
            ],
            [
              458.40234375,
              219.4151611328125
            ],
            [
              109.5205078125,
              219.4151611328125
            ]
          ],
          "bbox": [
            109.5205078125,
            148.11328125,
            458.40234375,
            219.4151611328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a program to find it. Solution:</i> <a href=\"http://thinkpython.com/code/cartalk1.py\">http:</a> <a href=\"http://thinkpython.com/code/cartalk1.py\">//</a> <a href=\"http://thinkpython.com/code/cartalk1.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/cartalk1.py\">com/</a> <a href=\"http://thinkpython.com/code/cartalk1.py\">code/</a> <a href=\"http://thinkpython.com/code/cartalk1.py\">cartalk1.</a> <a href=\"http://thinkpython.com/code/cartalk1.py\">py</a> <i>.</i> <b>Exercise 9.8.</b> <i>Here's another</i> Car Talk <i>Puzzler (</i><a href=\"http://www.cartalk.com/content/puzzlers\">http:</a> <a href=\"http://www.cartalk.com/content/puzzlers\">//</a> <a href=\"http://www.cartalk.com/content/puzzlers\">www.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">cartalk.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">com/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">content/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">puzzlers</a> <i>):</i></p>",
          "polygon": [
            [
              85.3154296875,
              233.19140625
            ],
            [
              481.11328125,
              233.19140625
            ],
            [
              481.11328125,
              267.93914794921875
            ],
            [
              85.3154296875,
              267.93914794921875
            ]
          ],
          "bbox": [
            85.3154296875,
            233.19140625,
            481.11328125,
            267.93914794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/5",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>\"I was driving on the highway the other day and I happened to notice my odometer.</i> <i>Like most odometers, it shows six digits, in whole miles only. So, if my car had 300,000</i> <i>miles, for example, I'd see 3-0-0-0-0-0.</i></p></blockquote>",
          "polygon": [
            [
              110.4169921875,
              281.91796875
            ],
            [
              457.8046875,
              281.91796875
            ],
            [
              457.8046875,
              316.4641418457031
            ],
            [
              110.4169921875,
              316.4641418457031
            ]
          ],
          "bbox": [
            110.4169921875,
            281.91796875,
            457.8046875,
            316.4641418457031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/6",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>\"Now, what I saw that day was very interesting. I noticed that the last 4 digits were</i> <i>palindromic; that is, they read the same forward as backward. For example, 5-4-4-5 is a</i> <i>palindrome, so my odometer could have read 3-1-5-4-4-5.</i></p></blockquote>",
          "polygon": [
            [
              109.8193359375,
              322.330078125
            ],
            [
              458.40234375,
              322.330078125
            ],
            [
              458.40234375,
              357.0321350097656
            ],
            [
              109.8193359375,
              357.0321350097656
            ]
          ],
          "bbox": [
            109.8193359375,
            322.330078125,
            458.40234375,
            357.0321350097656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/7",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>\"One mile later, the last 5 numbers were palindromic. For example, it could have read</i> <i>3-6-5-4-5-6. One mile after that, the middle 4 out of 6 numbers were palindromic. And</i> <i>you ready for this? One mile later, all 6 were palindromic!</i></p></blockquote>",
          "polygon": [
            [
              110.7158203125,
              362.7421875
            ],
            [
              457.8046875,
              362.7421875
            ],
            [
              457.8046875,
              398.70703125
            ],
            [
              110.7158203125,
              398.70703125
            ]
          ],
          "bbox": [
            110.7158203125,
            362.7421875,
            457.8046875,
            398.70703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>\"The question is, what was on the odometer when I first looked?\"</i></p>",
          "polygon": [
            [
              111.30699157714844,
              402.9609375
            ],
            [
              371.8788146972656,
              402.9609375
            ],
            [
              371.8788146972656,
              413.77911376953125
            ],
            [
              111.30699157714844,
              413.77911376953125
            ]
          ],
          "bbox": [
            111.30699157714844,
            402.9609375,
            371.8788146972656,
            413.77911376953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a Python program that tests all the six-digit numbers and prints any numbers that satisfy</i> <i>these requirements. Solution:</i> <a href=\"http://thinkpython.com/code/cartalk2.py\">http:</a> <a href=\"http://thinkpython.com/code/cartalk2.py\">//</a> <a href=\"http://thinkpython.com/code/cartalk2.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/cartalk2.py\">com/</a> <a href=\"http://thinkpython.com/code/cartalk2.py\">code/</a> <a href=\"http://thinkpython.com/code/cartalk2.py\">cartalk2.</a> <a href=\"http://thinkpython.com/code/cartalk2.py\">py</a> <i>.</i> <b>Exercise 9.9.</b> <i>Here's another</i> Car Talk <i>Puzzler you can solve with a search (</i><a href=\"http://www.cartalk.com/content/puzzlers\">http:</a> <a href=\"http://www.cartalk.com/content/puzzlers\">//</a> <a href=\"http://www.cartalk.com/content/puzzlers\">www.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">cartalk.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">com/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">content/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">puzzlers</a> <i>):</i></p>",
          "polygon": [
            [
              85.166015625,
              426.9375
            ],
            [
              482.4034118652344,
              426.9375
            ],
            [
              482.4034118652344,
              474.49810791015625
            ],
            [
              85.166015625,
              474.49810791015625
            ]
          ],
          "bbox": [
            85.166015625,
            426.9375,
            482.4034118652344,
            474.49810791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/10",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>\"Recently I had a visit with my mom and we realized that the two digits that make</i> <i>up my age when reversed resulted in her age. For example, if she's 73, I'm 37. We</i> <i>wondered how often this has happened over the years but we got sidetracked with other</i> <i>topics and we never came up with an answer.</i></p></blockquote>",
          "polygon": [
            [
              111.0146484375,
              488.0390625
            ],
            [
              459.59765625,
              488.0390625
            ],
            [
              459.59765625,
              535.21875
            ],
            [
              111.0146484375,
              535.21875
            ]
          ],
          "bbox": [
            111.0146484375,
            488.0390625,
            459.59765625,
            535.21875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/11",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>\"When I got home I figured out that the digits of our ages have been reversible six times</i> <i>so far. I also figured out that if we're lucky it would happen again in a few years, and</i> <i>if we're really lucky it would happen one more time after that. In other words, it would</i> <i>have happened 8 times over all. So the question is, how old am I now?\"</i></p></blockquote>",
          "polygon": [
            [
              110.865234375,
              541.01953125
            ],
            [
              458.103515625,
              541.01953125
            ],
            [
              458.103515625,
              587.9801025390625
            ],
            [
              110.865234375,
              587.9801025390625
            ]
          ],
          "bbox": [
            110.865234375,
            541.01953125,
            458.103515625,
            587.9801025390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a Python program that searches for solutions to this Puzzler. Hint: you might find the string</i> <i>method</i> zfill <i>useful.</i></p>",
          "polygon": [
            [
              85.3154296875,
              601.734375
            ],
            [
              482.4034729003906,
              601.734375
            ],
            [
              482.4034729003906,
              624.333251953125
            ],
            [
              85.3154296875,
              624.333251953125
            ]
          ],
          "bbox": [
            85.3154296875,
            601.734375,
            482.4034729003906,
            624.333251953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/107/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/cartalk3.py\">http:</a> <a href=\"http://thinkpython.com/code/cartalk3.py\">//</a> <a href=\"http://thinkpython.com/code/cartalk3.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/cartalk3.py\">com/</a> <a href=\"http://thinkpython.com/code/cartalk3.py\">code/</a> <a href=\"http://thinkpython.com/code/cartalk3.py\">cartalk3.</a> <a href=\"http://thinkpython.com/code/cartalk3.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.83837890625,
              634.4038238525391
            ],
            [
              344.82965087890625,
              634.4038238525391
            ],
            [
              344.82965087890625,
              644.66015625
            ],
            [
              85.83837890625,
              644.66015625
            ]
          ],
          "bbox": [
            85.83837890625,
            634.4038238525391,
            344.82965087890625,
            644.66015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/103/SectionHeader/6",
            "3": "/page/103/SectionHeader/18",
            "4": "/page/107/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/102/SectionHeader/1",
        "2": "/page/103/SectionHeader/6",
        "3": "/page/103/SectionHeader/18",
        "4": "/page/107/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/108/Page/136",
      "block_type": "Page",
      "html": "<content-ref src='/page/108/SectionHeader/0'></content-ref><content-ref src='/page/108/SectionHeader/1'></content-ref><content-ref src='/page/108/SectionHeader/2'></content-ref><content-ref src='/page/108/Text/3'></content-ref><content-ref src='/page/108/Text/4'></content-ref><content-ref src='/page/108/Text/5'></content-ref><content-ref src='/page/108/Text/6'></content-ref><content-ref src='/page/108/Text/7'></content-ref><content-ref src='/page/108/Text/8'></content-ref><content-ref src='/page/108/Text/9'></content-ref><content-ref src='/page/108/Text/10'></content-ref><content-ref src='/page/108/Text/11'></content-ref><content-ref src='/page/108/Code/12'></content-ref><content-ref src='/page/108/SectionHeader/13'></content-ref><content-ref src='/page/108/Text/14'></content-ref><content-ref src='/page/108/Code/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/108/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-108-0\"></span><b>Chapter 10</b></h2>",
          "polygon": [
            [
              128.42138671875,
              163.1953125
            ],
            [
              232.787109375,
              163.1953125
            ],
            [
              232.787109375,
              184.333984375
            ],
            [
              128.42138671875,
              184.333984375
            ]
          ],
          "bbox": [
            128.42138671875,
            163.1953125,
            232.787109375,
            184.333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/102/SectionHeader/1",
            "2": "/page/108/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/108/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Lists</b></h1>",
          "polygon": [
            [
              127.7490234375,
              218.57733154296875
            ],
            [
              184.2275390625,
              218.57733154296875
            ],
            [
              184.2275390625,
              243.3643798828125
            ],
            [
              127.7490234375,
              243.3643798828125
            ]
          ],
          "bbox": [
            127.7490234375,
            218.57733154296875,
            184.2275390625,
            243.3643798828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/108/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-108-1\"></span><b>10.1 A list is a sequence</b></h4>",
          "polygon": [
            [
              128.57080078125,
              291.8017883300781
            ],
            [
              294.1365661621094,
              291.8017883300781
            ],
            [
              294.1365661621094,
              306.14801025390625
            ],
            [
              128.57080078125,
              306.14801025390625
            ]
          ],
          "bbox": [
            128.57080078125,
            291.8017883300781,
            294.1365661621094,
            306.14801025390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Like a string, a <b>list</b> is a sequence of values. In a string, the values are characters; in a list, they can be any type. The values in a list are called <b>elements</b> or sometimes <b>items</b>.</p>",
          "polygon": [
            [
              128.9443359375,
              317.94720458984375
            ],
            [
              525.9375,
              317.94720458984375
            ],
            [
              525.9375,
              340.200927734375
            ],
            [
              128.9443359375,
              340.200927734375
            ]
          ],
          "bbox": [
            128.9443359375,
            317.94720458984375,
            525.9375,
            340.200927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are several ways to create a new list; the simplest is to enclose the elements in square brackets ([ and ]):</p>",
          "polygon": [
            [
              129.2431640625,
              349.787109375
            ],
            [
              525.9375,
              349.787109375
            ],
            [
              525.9375,
              372.08294677734375
            ],
            [
              129.2431640625,
              372.08294677734375
            ]
          ],
          "bbox": [
            129.2431640625,
            349.787109375,
            525.9375,
            372.08294677734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">[10, 20, 30, 40]</p>",
          "polygon": [
            [
              128.57080078125,
              377.244140625
            ],
            [
              213.28587341308594,
              377.244140625
            ],
            [
              213.28587341308594,
              387.6493835449219
            ],
            [
              128.57080078125,
              387.6493835449219
            ]
          ],
          "bbox": [
            128.57080078125,
            377.244140625,
            213.28587341308594,
            387.6493835449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">['crunchy frog', 'ram bladder', 'lark vomit']</p>",
          "polygon": [
            [
              128.794921875,
              389.88079833984375
            ],
            [
              364.9114685058594,
              389.88079833984375
            ],
            [
              364.9114685058594,
              399.8671875
            ],
            [
              128.794921875,
              399.8671875
            ]
          ],
          "bbox": [
            128.794921875,
            389.88079833984375,
            364.9114685058594,
            399.8671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first example is a list of four integers. The second is a list of three strings. The elements of a list don't have to be the same type. The following list contains a string, a float, an integer, and (lo!) another list:</p>",
          "polygon": [
            [
              129.09375,
              405.28125
            ],
            [
              525.603515625,
              405.28125
            ],
            [
              525.603515625,
              440.0969543457031
            ],
            [
              129.09375,
              440.0969543457031
            ]
          ],
          "bbox": [
            129.09375,
            405.28125,
            525.603515625,
            440.0969543457031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">['spam', 2.0, 5, [10, 20]]</p>",
          "polygon": [
            [
              128.9443359375,
              445.7008056640625
            ],
            [
              265.5810241699219,
              445.7008056640625
            ],
            [
              265.5810241699219,
              455.66339111328125
            ],
            [
              128.9443359375,
              455.66339111328125
            ]
          ],
          "bbox": [
            128.9443359375,
            445.7008056640625,
            265.5810241699219,
            455.66339111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A list within another list is <b>nested</b>.</p>",
          "polygon": [
            [
              128.6455078125,
              461.35546875
            ],
            [
              282.2431640625,
              461.35546875
            ],
            [
              282.2431640625,
              471.5289611816406
            ],
            [
              128.6455078125,
              471.5289611816406
            ]
          ],
          "bbox": [
            128.6455078125,
            461.35546875,
            282.2431640625,
            471.5289611816406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A list that contains no elements is called an empty list; you can create one with empty brackets, [].</p>",
          "polygon": [
            [
              129.392578125,
              481.078125
            ],
            [
              526.236328125,
              481.078125
            ],
            [
              526.236328125,
              503.41094970703125
            ],
            [
              129.392578125,
              503.41094970703125
            ]
          ],
          "bbox": [
            129.392578125,
            481.078125,
            526.236328125,
            503.41094970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you might expect, you can assign list values to variables:</p>",
          "polygon": [
            [
              128.57080078125,
              513.1353759765625
            ],
            [
              393.85546875,
              513.1353759765625
            ],
            [
              393.85546875,
              523.0979614257812
            ],
            [
              128.57080078125,
              523.0979614257812
            ]
          ],
          "bbox": [
            128.57080078125,
            513.1353759765625,
            393.85546875,
            523.0979614257812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; cheeses = ['Cheddar', 'Edam', 'Gouda']\n&gt;&gt;&gt; numbers = [17, 123]\n&gt;&gt;&gt; empty = []\n&gt;&gt;&gt; print cheeses, numbers, empty\n['Cheddar', 'Edam', 'Gouda'] [17, 123] []</pre>",
          "polygon": [
            [
              128.794921875,
              528.7018127441406
            ],
            [
              349.62890625,
              528.7018127441406
            ],
            [
              349.62890625,
              587.4424285888672
            ],
            [
              128.794921875,
              587.4424285888672
            ]
          ],
          "bbox": [
            128.794921875,
            528.7018127441406,
            349.62890625,
            587.4424285888672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/108/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-108-2\"></span><b>10.2 Lists are mutable</b></h4>",
          "polygon": [
            [
              127.4501953125,
              612.3318481445312
            ],
            [
              281.39727783203125,
              612.3318481445312
            ],
            [
              281.39727783203125,
              626.6780395507812
            ],
            [
              127.4501953125,
              626.6780395507812
            ]
          ],
          "bbox": [
            127.4501953125,
            612.3318481445312,
            281.39727783203125,
            626.6780395507812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/108/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The syntax for accessing the elements of a list is the same as for accessing the characters of a string—the bracket operator. The expression inside the brackets specifies the index. Remember that the indices start at 0:</p>",
          "polygon": [
            [
              127.4501953125,
              638.5733795166016
            ],
            [
              525.603515625,
              638.5733795166016
            ],
            [
              525.603515625,
              672.9249954223633
            ],
            [
              127.4501953125,
              672.9249954223633
            ]
          ],
          "bbox": [
            127.4501953125,
            638.5733795166016,
            525.603515625,
            672.9249954223633
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/108/Code/15",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print cheeses[0]\nCheddar</pre>",
          "polygon": [
            [
              128.197265625,
              678.5288391113281
            ],
            [
              234.21737670898438,
              678.5288391113281
            ],
            [
              234.21737670898438,
              700.685432434082
            ],
            [
              128.197265625,
              700.685432434082
            ]
          ],
          "bbox": [
            128.197265625,
            678.5288391113281,
            234.21737670898438,
            700.685432434082
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/108/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/109/Page/191",
      "block_type": "Page",
      "html": "<content-ref src='/page/109/PageHeader/0'></content-ref><content-ref src='/page/109/PageHeader/14'></content-ref><content-ref src='/page/109/FigureGroup/189'></content-ref><content-ref src='/page/109/Text/3'></content-ref><content-ref src='/page/109/Code/4'></content-ref><content-ref src='/page/109/Text/5'></content-ref><content-ref src='/page/109/Text/6'></content-ref><content-ref src='/page/109/Text/7'></content-ref><content-ref src='/page/109/Text/8'></content-ref><content-ref src='/page/109/ListGroup/190'></content-ref><content-ref src='/page/109/Text/12'></content-ref><content-ref src='/page/109/Code/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/109/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.607421875,
              60.66650390625
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              60.908203125
            ],
            [
              96.22265625,
              60.908203125
            ],
            [
              96.22265625,
              69.802734375
            ],
            [
              85.3154296875,
              69.802734375
            ]
          ],
          "bbox": [
            85.3154296875,
            60.908203125,
            96.22265625,
            69.802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/FigureGroup/189",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/109/Figure/1'></content-ref><content-ref src='/page/109/Caption/2'></content-ref>",
          "polygon": [
            [
              202.60546875,
              89.47705078125
            ],
            [
              366.36328125,
              89.47705078125
            ],
            [
              366.36328125,
              273.95294189453125
            ],
            [
              202.60546875,
              273.95294189453125
            ]
          ],
          "bbox": [
            202.60546875,
            89.47705078125,
            366.36328125,
            273.95294189453125
          ],
          "children": [
            {
              "id": "/page/109/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  202.60546875,
                  89.47705078125
                ],
                [
                  366.36328125,
                  89.47705078125
                ],
                [
                  366.36328125,
                  244.599609375
                ],
                [
                  202.60546875,
                  244.599609375
                ]
              ],
              "bbox": [
                202.60546875,
                89.47705078125,
                366.36328125,
                244.599609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/108/SectionHeader/13"
              },
              "images": {
                "/page/109/Figure/1": "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"
              }
            },
            {
              "id": "/page/109/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-109-0\"></span>Figure 10.1: State diagram.</p>",
              "polygon": [
                [
                  225.55101013183594,
                  263.548828125
                ],
                [
                  343.353515625,
                  263.548828125
                ],
                [
                  343.353515625,
                  273.95294189453125
                ],
                [
                  225.55101013183594,
                  273.95294189453125
                ]
              ],
              "bbox": [
                225.55101013183594,
                263.548828125,
                343.353515625,
                273.95294189453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/108/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": null
        },
        {
          "id": "/page/109/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Unlike strings, lists are mutable. When the bracket operator appears on the left side of an assignment, it identifies the element of the list that will be assigned.</p>",
          "polygon": [
            [
              85.46484375,
              298.16015625
            ],
            [
              482.607421875,
              298.16015625
            ],
            [
              482.607421875,
              321.1739196777344
            ],
            [
              85.46484375,
              321.1739196777344
            ]
          ],
          "bbox": [
            85.46484375,
            298.16015625,
            482.607421875,
            321.1739196777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; numbers = [17, 123]\n&gt;&gt;&gt; numbers[1] = 5\n&gt;&gt;&gt; print numbers\n[17, 5]</pre>",
          "polygon": [
            [
              85.46484375,
              329.957763671875
            ],
            [
              206.6983642578125,
              329.957763671875
            ],
            [
              206.6983642578125,
              376.50335693359375
            ],
            [
              85.46484375,
              376.50335693359375
            ]
          ],
          "bbox": [
            85.46484375,
            329.957763671875,
            206.6983642578125,
            376.50335693359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The one-eth element of numbers, which used to be 123, is now 5.</p>",
          "polygon": [
            [
              85.83837890625,
              385.4377746582031
            ],
            [
              367.88360595703125,
              385.4377746582031
            ],
            [
              367.88360595703125,
              395.5499267578125
            ],
            [
              85.83837890625,
              395.5499267578125
            ]
          ],
          "bbox": [
            85.83837890625,
            385.4377746582031,
            367.88360595703125,
            395.5499267578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can think of a list as a relationship between indices and elements. This relationship is called a <b>mapping</b>; each index \"maps to\" one of the elements. Figure <a href=\"#page-109-0\">10.1</a> shows the state diagram for cheeses, numbers and empty:</p>",
          "polygon": [
            [
              85.46484375,
              407.21484375
            ],
            [
              482.4034729003906,
              407.21484375
            ],
            [
              482.4034729003906,
              442.80694580078125
            ],
            [
              85.46484375,
              442.80694580078125
            ]
          ],
          "bbox": [
            85.46484375,
            407.21484375,
            482.4034729003906,
            442.80694580078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Lists are represented by boxes with the word \"list\" outside and the elements of the list inside. cheeses refers to a list with three elements indexed 0, 1 and 2. numbers contains two elements; the diagram shows that the value of the second element has been reassigned from 123 to 5. empty refers to a list with no elements.</p>",
          "polygon": [
            [
              85.46484375,
              454.78125
            ],
            [
              482.90625,
              454.78125
            ],
            [
              482.90625,
              502.2579650878906
            ],
            [
              85.46484375,
              502.2579650878906
            ]
          ],
          "bbox": [
            85.46484375,
            454.78125,
            482.90625,
            502.2579650878906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">List indices work the same way as string indices:</p>",
          "polygon": [
            [
              85.53955078125,
              514.3359375
            ],
            [
              300.97442626953125,
              514.3359375
            ],
            [
              300.97442626953125,
              525.1259765625
            ],
            [
              85.53955078125,
              525.1259765625
            ]
          ],
          "bbox": [
            85.53955078125,
            514.3359375,
            300.97442626953125,
            525.1259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/ListGroup/190",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/109/ListItem/9'></content-ref><content-ref src='/page/109/ListItem/10'></content-ref><content-ref src='/page/109/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              100.28799438476562,
              543.33984375
            ],
            [
              465.3626708984375,
              543.33984375
            ],
            [
              465.3626708984375,
              603.9659881591797
            ],
            [
              100.28799438476562,
              603.9659881591797
            ]
          ],
          "bbox": [
            100.28799438476562,
            543.33984375,
            465.3626708984375,
            603.9659881591797
          ],
          "children": [
            {
              "id": "/page/109/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Any integer expression can be used as an index.</li>",
              "polygon": [
                [
                  100.28799438476562,
                  543.33984375
                ],
                [
                  322.0454406738281,
                  543.33984375
                ],
                [
                  322.0454406738281,
                  554.3209838867188
                ],
                [
                  100.28799438476562,
                  554.3209838867188
                ]
              ],
              "bbox": [
                100.28799438476562,
                543.33984375,
                322.0454406738281,
                554.3209838867188
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/108/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/109/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> If you try to read or write an element that does not exist, you get an IndexError.</li>",
              "polygon": [
                [
                  100.28799438476562,
                  568.08984375
                ],
                [
                  465.3626708984375,
                  568.08984375
                ],
                [
                  465.3626708984375,
                  579.1439819335938
                ],
                [
                  100.28799438476562,
                  579.1439819335938
                ]
              ],
              "bbox": [
                100.28799438476562,
                568.08984375,
                465.3626708984375,
                579.1439819335938
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/108/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/109/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> If an index has a negative value, it counts backward from the end of the list.</li>",
              "polygon": [
                [
                  100.28802490234375,
                  593.61328125
                ],
                [
                  444.2169494628906,
                  593.61328125
                ],
                [
                  444.2169494628906,
                  603.9659881591797
                ],
                [
                  100.28802490234375,
                  603.9659881591797
                ]
              ],
              "bbox": [
                100.28802490234375,
                593.61328125,
                444.2169494628906,
                603.9659881591797
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/108/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": null
        },
        {
          "id": "/page/109/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The in operator also works on lists.</p>",
          "polygon": [
            [
              85.83837890625,
              622.6171875
            ],
            [
              243.84375,
              622.6171875
            ],
            [
              243.84375,
              633.1619873046875
            ],
            [
              85.83837890625,
              633.1619873046875
            ]
          ],
          "bbox": [
            85.83837890625,
            622.6171875,
            243.84375,
            633.1619873046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/109/Code/13",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; cheeses = ['Cheddar', 'Edam', 'Gouda']\n&gt;&gt;&gt; 'Edam' in cheeses\nTrue\n&gt;&gt;&gt; 'Brie' in cheeses\nFalse</pre>",
          "polygon": [
            [
              86.2119140625,
              641.9458312988281
            ],
            [
              306.0244445800781,
              641.9458312988281
            ],
            [
              306.0244445800781,
              700.6854248046875
            ],
            [
              86.2119140625,
              700.6854248046875
            ]
          ],
          "bbox": [
            86.2119140625,
            641.9458312988281,
            306.0244445800781,
            700.6854248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/108/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/110/Page/198",
      "block_type": "Page",
      "html": "<content-ref src='/page/110/PageHeader/0'></content-ref><content-ref src='/page/110/PageHeader/19'></content-ref><content-ref src='/page/110/SectionHeader/1'></content-ref><content-ref src='/page/110/Text/2'></content-ref><content-ref src='/page/110/Text/3'></content-ref><content-ref src='/page/110/Text/4'></content-ref><content-ref src='/page/110/Code/5'></content-ref><content-ref src='/page/110/Text/6'></content-ref><content-ref src='/page/110/Text/7'></content-ref><content-ref src='/page/110/Code/8'></content-ref><content-ref src='/page/110/Text/9'></content-ref><content-ref src='/page/110/Code/10'></content-ref><content-ref src='/page/110/SectionHeader/11'></content-ref><content-ref src='/page/110/Text/12'></content-ref><content-ref src='/page/110/Code/191'></content-ref><content-ref src='/page/110/Text/14'></content-ref><content-ref src='/page/110/TextInlineMath/15'></content-ref><content-ref src='/page/110/Text/16'></content-ref><content-ref src='/page/110/SectionHeader/17'></content-ref><content-ref src='/page/110/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/110/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.72021484375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.72021484375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.72021484375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/110/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              60.71484375
            ],
            [
              525.9375,
              60.71484375
            ],
            [
              525.9375,
              69.609375
            ],
            [
              514.58203125,
              69.609375
            ]
          ],
          "bbox": [
            514.58203125,
            60.71484375,
            525.9375,
            69.609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/108/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/110/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-110-0\"></span><b>10.3 Traversing a list</b></h4>",
          "polygon": [
            [
              128.6455078125,
              85.95379638671875
            ],
            [
              275.6689453125,
              85.95379638671875
            ],
            [
              275.6689453125,
              100.29998779296875
            ],
            [
              128.6455078125,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.6455078125,
            85.95379638671875,
            275.6689453125,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The most common way to traverse the elements of a list is with a for loop. The syntax is the same as for strings:</p>",
          "polygon": [
            [
              128.0478515625,
              113.9853515625
            ],
            [
              525.600341796875,
              113.9853515625
            ],
            [
              525.600341796875,
              136.61700439453125
            ],
            [
              128.0478515625,
              136.61700439453125
            ]
          ],
          "bbox": [
            128.0478515625,
            113.9853515625,
            525.600341796875,
            136.61700439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">for cheese in cheeses: print cheese</p>",
          "polygon": [
            [
              128.49609375,
              143.966796875
            ],
            [
              244.677978515625,
              143.966796875
            ],
            [
              244.677978515625,
              166.1243896484375
            ],
            [
              128.49609375,
              166.1243896484375
            ]
          ],
          "bbox": [
            128.49609375,
            143.966796875,
            244.677978515625,
            166.1243896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This works well if you only need to read the elements of the list. But if you want to write or update the elements, you need the indices. A common way to do that is to combine the functions range and len:</p>",
          "polygon": [
            [
              129.2431640625,
              173.443359375
            ],
            [
              525.6033935546875,
              173.443359375
            ],
            [
              525.6033935546875,
              208.12396240234375
            ],
            [
              129.2431640625,
              208.12396240234375
            ]
          ],
          "bbox": [
            129.2431640625,
            173.443359375,
            525.6033935546875,
            208.12396240234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Code/5",
          "block_type": "Code",
          "html": "<pre>for i in range(len(numbers)):\n    numbers[i] = numbers[i] * 2</pre>",
          "polygon": [
            [
              129.60000610351562,
              215.40234375
            ],
            [
              291.7458190917969,
              215.40234375
            ],
            [
              291.7458190917969,
              237.63134765625
            ],
            [
              129.60000610351562,
              237.63134765625
            ]
          ],
          "bbox": [
            129.60000610351562,
            215.40234375,
            291.7458190917969,
            237.63134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This loop traverses the list and updates each element. len returns the number of elements in the list. range returns a list of indices from 0 to <i>n</i> − 1, where <i>n</i> is the length of the list. Each time through the loop i gets the index of the next element. The assignment statement in the body uses i to read the old value of the element and to assign the new value.</p>",
          "polygon": [
            [
              129.2431640625,
              245.1307373046875
            ],
            [
              525.9375,
              245.1307373046875
            ],
            [
              525.9375,
              291.8258972167969
            ],
            [
              129.2431640625,
              291.8258972167969
            ]
          ],
          "bbox": [
            129.2431640625,
            245.1307373046875,
            525.9375,
            291.8258972167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A for loop over an empty list never executes the body:</p>",
          "polygon": [
            [
              129.16845703125,
              302.607421875
            ],
            [
              371.443359375,
              302.607421875
            ],
            [
              371.443359375,
              313.2589111328125
            ],
            [
              129.16845703125,
              313.2589111328125
            ]
          ],
          "bbox": [
            129.16845703125,
            302.607421875,
            371.443359375,
            313.2589111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Code/8",
          "block_type": "Code",
          "html": "<pre>for x in []:\n    print 'This never happens.'</pre>",
          "polygon": [
            [
              129.59999084472656,
              320.396484375
            ],
            [
              291.703369140625,
              320.396484375
            ],
            [
              291.703369140625,
              342.766357421875
            ],
            [
              129.59999084472656,
              342.766357421875
            ]
          ],
          "bbox": [
            129.59999084472656,
            320.396484375,
            291.703369140625,
            342.766357421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although a list can contain another list, the nested list still counts as a single element. The length of this list is four:</p>",
          "polygon": [
            [
              129.5999755859375,
              349.98046875
            ],
            [
              525.6033325195312,
              349.98046875
            ],
            [
              525.6033325195312,
              372.5719299316406
            ],
            [
              129.5999755859375,
              372.5719299316406
            ]
          ],
          "bbox": [
            129.5999755859375,
            349.98046875,
            525.6033325195312,
            372.5719299316406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/Code/10",
          "block_type": "Code",
          "html": "<pre>['spam', 1, ['Brie', 'Roquefort', 'Pol le Veq'], [1, 2, 3]]</pre>",
          "polygon": [
            [
              129.5999755859375,
              379.9217834472656
            ],
            [
              438.978515625,
              379.9217834472656
            ],
            [
              438.978515625,
              389.8843688964844
            ],
            [
              129.5999755859375,
              389.8843688964844
            ]
          ],
          "bbox": [
            129.5999755859375,
            379.9217834472656,
            438.978515625,
            389.8843688964844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/110/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-110-1\"></span><b>10.4 List operations</b></h4>",
          "polygon": [
            [
              128.86962890625,
              423.0703125
            ],
            [
              266.66363525390625,
              423.0703125
            ],
            [
              266.66363525390625,
              437.6109924316406
            ],
            [
              128.86962890625,
              437.6109924316406
            ]
          ],
          "bbox": [
            128.86962890625,
            423.0703125,
            266.66363525390625,
            437.6109924316406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The + operator concatenates lists:</p>",
          "polygon": [
            [
              128.49609375,
              451.62078857421875
            ],
            [
              275.3020324707031,
              451.62078857421875
            ],
            [
              275.3020324707031,
              461.7329406738281
            ],
            [
              128.49609375,
              461.7329406738281
            ]
          ],
          "bbox": [
            128.49609375,
            451.62078857421875,
            275.3020324707031,
            461.7329406738281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/110/Code/191",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; a = [1, 2, 3]\n&gt;&gt;&gt; b = [4, 5, 6]\n&gt;&gt;&gt; c = a + b\n&gt;&gt;&gt; print c\n[1, 2, 3, 4, 5, 6]</pre>",
          "polygon": [
            [
              129.2431640625,
              469.0827941894531
            ],
            [
              226.6611328125,
              469.0827941894531
            ],
            [
              226.6611328125,
              527.87109375
            ],
            [
              129.2431640625,
              527.87109375
            ]
          ],
          "bbox": [
            129.2431640625,
            469.0827941894531,
            226.6611328125,
            527.87109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Similarly, the * operator repeats a list a given number of times:</p>",
          "polygon": [
            [
              127.82373046875,
              534.83203125
            ],
            [
              404.8648681640625,
              534.83203125
            ],
            [
              404.8648681640625,
              545.4349670410156
            ],
            [
              127.82373046875,
              545.4349670410156
            ]
          ],
          "bbox": [
            127.82373046875,
            534.83203125,
            404.8648681640625,
            545.4349670410156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/110/TextInlineMath/15",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; [0] * 4 [0, 0, 0, 0] &gt;&gt;&gt; [1, 2, 3] * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3]</p>",
          "polygon": [
            [
              128.3466796875,
              552.7848205566406
            ],
            [
              270.8198547363281,
              552.7848205566406
            ],
            [
              270.8198547363281,
              600.9609375
            ],
            [
              128.3466796875,
              600.9609375
            ]
          ],
          "bbox": [
            128.3466796875,
            552.7848205566406,
            270.8198547363281,
            600.9609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first example repeats [0] four times. The second example repeats the list [1, 2, 3] three times.</p>",
          "polygon": [
            [
              128.794921875,
              606.76171875
            ],
            [
              525.611328125,
              606.76171875
            ],
            [
              525.611328125,
              629.19140625
            ],
            [
              128.794921875,
              629.19140625
            ]
          ],
          "bbox": [
            128.794921875,
            606.76171875,
            525.611328125,
            629.19140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/110/SectionHeader/17",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-110-2\"></span><b>10.5 List slices</b></h4>",
          "polygon": [
            [
              127.1513671875,
              662.3668518066406
            ],
            [
              233.2353515625,
              662.3668518066406
            ],
            [
              233.2353515625,
              676.7130432128906
            ],
            [
              127.1513671875,
              676.7130432128906
            ]
          ],
          "bbox": [
            127.1513671875,
            662.3668518066406,
            233.2353515625,
            676.7130432128906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/110/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The slice operator also works on lists:</p>",
          "polygon": [
            [
              128.3466796875,
              690.8723983764648
            ],
            [
              294.39141845703125,
              690.8723983764648
            ],
            [
              294.39141845703125,
              700.8349990844727
            ],
            [
              128.3466796875,
              700.8349990844727
            ]
          ],
          "bbox": [
            128.3466796875,
            690.8723983764648,
            294.39141845703125,
            700.8349990844727
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/110/SectionHeader/17"
      },
      "images": null
    },
    {
      "id": "/page/111/Page/248",
      "block_type": "Page",
      "html": "<content-ref src='/page/111/PageHeader/0'></content-ref><content-ref src='/page/111/PageHeader/16'></content-ref><content-ref src='/page/111/Code/1'></content-ref><content-ref src='/page/111/Text/2'></content-ref><content-ref src='/page/111/Code/3'></content-ref><content-ref src='/page/111/Text/4'></content-ref><content-ref src='/page/111/Text/5'></content-ref><content-ref src='/page/111/Code/6'></content-ref><content-ref src='/page/111/SectionHeader/7'></content-ref><content-ref src='/page/111/Text/8'></content-ref><content-ref src='/page/111/Code/9'></content-ref><content-ref src='/page/111/Text/10'></content-ref><content-ref src='/page/111/Code/11'></content-ref><content-ref src='/page/111/Text/12'></content-ref><content-ref src='/page/111/Text/13'></content-ref><content-ref src='/page/111/Code/14'></content-ref><content-ref src='/page/111/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/111/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.521484375
            ],
            [
              482.4033508300781,
              60.521484375
            ],
            [
              482.4033508300781,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.521484375,
            482.4033508300781,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.24072265625,
              60.4248046875
            ],
            [
              96.89501953125,
              60.4248046875
            ],
            [
              96.89501953125,
              70.0927734375
            ],
            [
              85.24072265625,
              70.0927734375
            ]
          ],
          "bbox": [
            85.24072265625,
            60.4248046875,
            96.89501953125,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['a', 'b', 'c', 'd', 'e', 'f']\n&gt;&gt;&gt; t[1:3]\n['b', 'c']\n&gt;&gt;&gt; t[:4]\n['a', 'b', 'c', 'd']\n&gt;&gt;&gt; t[3:]\n['d', 'e', 'f']</pre>",
          "polygon": [
            [
              86.0625,
              85.60986328125
            ],
            [
              285.107421875,
              85.60986328125
            ],
            [
              285.107421875,
              171.8143310546875
            ],
            [
              86.0625,
              171.8143310546875
            ]
          ],
          "bbox": [
            86.0625,
            85.60986328125,
            285.107421875,
            171.8143310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you omit the first index, the slice starts at the beginning. If you omit the second, the slice goes to the end. So if you omit both, the slice is a copy of the whole list.</p>",
          "polygon": [
            [
              85.166015625,
              179.244140625
            ],
            [
              482.4033508300781,
              179.244140625
            ],
            [
              482.4033508300781,
              202.85089111328125
            ],
            [
              85.166015625,
              202.85089111328125
            ]
          ],
          "bbox": [
            85.166015625,
            179.244140625,
            482.4033508300781,
            202.85089111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t[:]\n['a', 'b', 'c', 'd', 'e', 'f']</pre>",
          "polygon": [
            [
              85.3154296875,
              210.375
            ],
            [
              243.6943359375,
              210.375
            ],
            [
              243.6943359375,
              233.5882568359375
            ],
            [
              85.3154296875,
              233.5882568359375
            ]
          ],
          "bbox": [
            85.3154296875,
            210.375,
            243.6943359375,
            233.5882568359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since lists are mutable, it is often useful to make a copy before performing operations that fold, spindle or mutilate lists.</p>",
          "polygon": [
            [
              85.3154296875,
              241.505859375
            ],
            [
              482.90625,
              241.505859375
            ],
            [
              482.90625,
              264.6258544921875
            ],
            [
              85.3154296875,
              264.6258544921875
            ]
          ],
          "bbox": [
            85.3154296875,
            241.505859375,
            482.90625,
            264.6258544921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A slice operator on the left side of an assignment can update multiple elements:</p>",
          "polygon": [
            [
              85.46484375,
              276.310546875
            ],
            [
              436.14703369140625,
              276.310546875
            ],
            [
              436.14703369140625,
              287.2898254394531
            ],
            [
              85.46484375,
              287.2898254394531
            ]
          ],
          "bbox": [
            85.46484375,
            276.310546875,
            436.14703369140625,
            287.2898254394531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['a', 'b', 'c', 'd', 'e', 'f']\n&gt;&gt;&gt; t[1:3] = ['x', 'y']\n&gt;&gt;&gt; print t\n['a', 'x', 'y', 'd', 'e', 'f']</pre>",
          "polygon": [
            [
              85.24072265625,
              295.87066650390625
            ],
            [
              285.1074523925781,
              295.87066650390625
            ],
            [
              285.1074523925781,
              342.416259765625
            ],
            [
              85.24072265625,
              342.416259765625
            ]
          ],
          "bbox": [
            85.24072265625,
            295.87066650390625,
            285.1074523925781,
            342.416259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/110/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/111/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-111-0\"></span><b>10.6 List methods</b></h4>",
          "polygon": [
            [
              85.46484375,
              379.4886779785156
            ],
            [
              210.70993041992188,
              379.4886779785156
            ],
            [
              210.70993041992188,
              393.83489990234375
            ],
            [
              85.46484375,
              393.83489990234375
            ]
          ],
          "bbox": [
            85.46484375,
            379.4886779785156,
            210.70993041992188,
            393.83489990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python provides methods that operate on lists. For example, append adds a new element to the end of a list:</p>",
          "polygon": [
            [
              85.46484375,
              409.1484375
            ],
            [
              483.50390625,
              409.1484375
            ],
            [
              483.50390625,
              431.8758544921875
            ],
            [
              85.46484375,
              431.8758544921875
            ]
          ],
          "bbox": [
            85.46484375,
            409.1484375,
            483.50390625,
            431.8758544921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['a', 'b', 'c']\n&gt;&gt;&gt; t.append('d')\n&gt;&gt;&gt; print t\n['a', 'b', 'c', 'd']</pre>",
          "polygon": [
            [
              85.3154296875,
              440.4566955566406
            ],
            [
              206.67153930664062,
              440.4566955566406
            ],
            [
              206.67153930664062,
              487.265625
            ],
            [
              85.3154296875,
              487.265625
            ]
          ],
          "bbox": [
            85.3154296875,
            440.4566955566406,
            206.67153930664062,
            487.265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">extend takes a list as an argument and appends all of the elements:</p>",
          "polygon": [
            [
              85.763671875,
              495.38671875
            ],
            [
              381.39581298828125,
              495.38671875
            ],
            [
              381.39581298828125,
              505.8438415527344
            ],
            [
              85.763671875,
              505.8438415527344
            ]
          ],
          "bbox": [
            85.763671875,
            495.38671875,
            381.39581298828125,
            505.8438415527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t1 = ['a', 'b', 'c']\n&gt;&gt;&gt; t2 = ['d', 'e']\n&gt;&gt;&gt; t1.extend(t2)\n&gt;&gt;&gt; print t1\n['a', 'b', 'c', 'd', 'e']</pre>",
          "polygon": [
            [
              85.39013671875,
              514.4246826171875
            ],
            [
              217.12962341308594,
              514.4246826171875
            ],
            [
              217.12962341308594,
              573.1652984619141
            ],
            [
              85.39013671875,
              573.1652984619141
            ]
          ],
          "bbox": [
            85.39013671875,
            514.4246826171875,
            217.12962341308594,
            573.1652984619141
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example leaves t2 unmodified.</p>",
          "polygon": [
            [
              85.83837890625,
              581.8956909179688
            ],
            [
              244.88302612304688,
              581.8956909179688
            ],
            [
              244.88302612304688,
              592.06640625
            ],
            [
              85.83837890625,
              592.06640625
            ]
          ],
          "bbox": [
            85.83837890625,
            581.8956909179688,
            244.88302612304688,
            592.06640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">sort arranges the elements of the list from low to high:</p>",
          "polygon": [
            [
              85.68896484375,
              604.0546875
            ],
            [
              328.5072326660156,
              604.0546875
            ],
            [
              328.5072326660156,
              614.6718444824219
            ],
            [
              85.68896484375,
              614.6718444824219
            ]
          ],
          "bbox": [
            85.68896484375,
            604.0546875,
            328.5072326660156,
            614.6718444824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['d', 'c', 'e', 'b', 'a']\n&gt;&gt;&gt; t.sort()\n&gt;&gt;&gt; print t\n['a', 'b', 'c', 'd', 'e']</pre>",
          "polygon": [
            [
              85.39013671875,
              623.00390625
            ],
            [
              258.9626770019531,
              623.00390625
            ],
            [
              258.9626770019531,
              669.7982864379883
            ],
            [
              85.39013671875,
              669.7982864379883
            ]
          ],
          "bbox": [
            85.39013671875,
            623.00390625,
            258.9626770019531,
            669.7982864379883
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/111/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">List methods are all void; they modify the list and return None. If you accidentally write t = t.sort(), you will be disappointed with the result.</p>",
          "polygon": [
            [
              85.3154296875,
              677.14453125
            ],
            [
              482.4026794433594,
              677.14453125
            ],
            [
              482.4026794433594,
              700.8348541259766
            ],
            [
              85.3154296875,
              700.8348541259766
            ]
          ],
          "bbox": [
            85.3154296875,
            677.14453125,
            482.4026794433594,
            700.8348541259766
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/111/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/112/Page/211",
      "block_type": "Page",
      "html": "<content-ref src='/page/112/PageHeader/0'></content-ref><content-ref src='/page/112/PageHeader/20'></content-ref><content-ref src='/page/112/SectionHeader/1'></content-ref><content-ref src='/page/112/Text/2'></content-ref><content-ref src='/page/112/Code/3'></content-ref><content-ref src='/page/112/Text/4'></content-ref><content-ref src='/page/112/TextInlineMath/5'></content-ref><content-ref src='/page/112/Text/6'></content-ref><content-ref src='/page/112/TextInlineMath/7'></content-ref><content-ref src='/page/112/Text/8'></content-ref><content-ref src='/page/112/Text/9'></content-ref><content-ref src='/page/112/Code/10'></content-ref><content-ref src='/page/112/Text/11'></content-ref><content-ref src='/page/112/Text/12'></content-ref><content-ref src='/page/112/Text/13'></content-ref><content-ref src='/page/112/Code/14'></content-ref><content-ref src='/page/112/Text/15'></content-ref><content-ref src='/page/112/Text/16'></content-ref><content-ref src='/page/112/Text/17'></content-ref><content-ref src='/page/112/Text/18'></content-ref><content-ref src='/page/112/Code/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/112/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.794921875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.794921875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.794921875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/112/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.1796875,
              61.43994140625
            ],
            [
              525.9375,
              61.43994140625
            ],
            [
              525.9375,
              70.72119140625
            ],
            [
              515.1796875,
              70.72119140625
            ]
          ],
          "bbox": [
            515.1796875,
            61.43994140625,
            525.9375,
            70.72119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/111/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/112/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-112-0\"></span><b>10.7 Map, filter and reduce</b></h4>",
          "polygon": [
            [
              128.12255859375,
              85.95379638671875
            ],
            [
              313.76953125,
              85.95379638671875
            ],
            [
              313.76953125,
              100.29998779296875
            ],
            [
              128.12255859375,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.12255859375,
            85.95379638671875,
            313.76953125,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To add up all the numbers in a list, you can use a loop like this:</p>",
          "polygon": [
            [
              128.3466796875,
              112.6318359375
            ],
            [
              406.5302734375,
              112.6318359375
            ],
            [
              406.5302734375,
              122.846923828125
            ],
            [
              128.3466796875,
              122.846923828125
            ]
          ],
          "bbox": [
            128.3466796875,
            112.6318359375,
            406.5302734375,
            122.846923828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Code/3",
          "block_type": "Code",
          "html": "<pre>def add_all(t):\n    total = 0\n    for x in t:\n        total += x\n    return total</pre>",
          "polygon": [
            [
              129.60000610351562,
              129.07171630859375
            ],
            [
              223.73666381835938,
              129.07171630859375
            ],
            [
              223.73666381835938,
              187.811279296875
            ],
            [
              129.60000610351562,
              187.811279296875
            ]
          ],
          "bbox": [
            129.60000610351562,
            129.07171630859375,
            223.73666381835938,
            187.811279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">total is initialized to 0. Each time through the loop, x gets one element from the list. The += operator provides a short way to update a variable. This <b>augmented assignment</b> <b>statement</b>:</p>",
          "polygon": [
            [
              128.6455078125,
              193.8427734375
            ],
            [
              525.9375,
              193.8427734375
            ],
            [
              525.9375,
              228.6868896484375
            ],
            [
              128.6455078125,
              228.6868896484375
            ]
          ],
          "bbox": [
            128.6455078125,
            193.8427734375,
            525.9375,
            228.6868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/TextInlineMath/5",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">total += x</p>",
          "polygon": [
            [
              147.99462890625,
              234.544921875
            ],
            [
              203.203125,
              234.544921875
            ],
            [
              203.203125,
              244.873291015625
            ],
            [
              147.99462890625,
              244.873291015625
            ]
          ],
          "bbox": [
            147.99462890625,
            234.544921875,
            203.203125,
            244.873291015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">is equivalent to:</p>",
          "polygon": [
            [
              128.49609375,
              251.397216796875
            ],
            [
              199.6171875,
              251.397216796875
            ],
            [
              199.6171875,
              261.35986328125
            ],
            [
              128.49609375,
              261.35986328125
            ]
          ],
          "bbox": [
            128.49609375,
            251.397216796875,
            199.6171875,
            261.35986328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/TextInlineMath/7",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">total = total + x</p>",
          "polygon": [
            [
              144.333984375,
              267.58465576171875
            ],
            [
              239.4322509765625,
              267.58465576171875
            ],
            [
              239.4322509765625,
              277.5472412109375
            ],
            [
              144.333984375,
              277.5472412109375
            ]
          ],
          "bbox": [
            144.333984375,
            267.58465576171875,
            239.4322509765625,
            277.5472412109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As the loop executes, total accumulates the sum of the elements; a variable used this way is sometimes called an <b>accumulator</b>.</p>",
          "polygon": [
            [
              129.6000518798828,
              283.920654296875
            ],
            [
              525.6009521484375,
              283.920654296875
            ],
            [
              525.6009521484375,
              306.226806640625
            ],
            [
              129.6000518798828,
              306.226806640625
            ]
          ],
          "bbox": [
            129.6000518798828,
            283.920654296875,
            525.6009521484375,
            306.226806640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Adding up the elements of a list is such a common operation that Python provides it as a built-in function, sum:</p>",
          "polygon": [
            [
              129.60009765625,
              316.5732116699219
            ],
            [
              525.6033935546875,
              316.5732116699219
            ],
            [
              525.6033935546875,
              338.72979736328125
            ],
            [
              129.60009765625,
              338.72979736328125
            ]
          ],
          "bbox": [
            129.60009765625,
            316.5732116699219,
            525.6033935546875,
            338.72979736328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = [1, 2, 3]\n&gt;&gt;&gt; sum(t)\n6</pre>",
          "polygon": [
            [
              128.12255859375,
              344.95465087890625
            ],
            [
              218.51629638671875,
              344.95465087890625
            ],
            [
              218.51629638671875,
              379.30523681640625
            ],
            [
              128.12255859375,
              379.30523681640625
            ]
          ],
          "bbox": [
            128.12255859375,
            344.95465087890625,
            218.51629638671875,
            379.30523681640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An operation like this that combines a sequence of elements into a single value is sometimes called <b>reduce</b>.</p>",
          "polygon": [
            [
              128.3466796875,
              385.8292236328125
            ],
            [
              525.6034545898438,
              385.8292236328125
            ],
            [
              525.6034545898438,
              407.9858093261719
            ],
            [
              128.3466796875,
              407.9858093261719
            ]
          ],
          "bbox": [
            128.3466796875,
            385.8292236328125,
            525.6034545898438,
            407.9858093261719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 10.1.</b> <i>Write a function called</i> nested_sum <i>that takes a nested list of integers and add up</i> <i>the elements from all of the nested lists.</i></p>",
          "polygon": [
            [
              128.9443359375,
              409.921875
            ],
            [
              525.604736328125,
              409.921875
            ],
            [
              525.604736328125,
              432.2021179199219
            ],
            [
              128.9443359375,
              432.2021179199219
            ]
          ],
          "bbox": [
            128.9443359375,
            409.921875,
            525.604736328125,
            432.2021179199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Sometimes you want to traverse one list while building another. For example, the following function takes a list of strings and returns a new list that contains capitalized strings:</p>",
          "polygon": [
            [
              128.3466796875,
              442.40625
            ],
            [
              525.6034545898438,
              442.40625
            ],
            [
              525.6034545898438,
              464.8768310546875
            ],
            [
              128.3466796875,
              464.8768310546875
            ]
          ],
          "bbox": [
            128.3466796875,
            442.40625,
            525.6034545898438,
            464.8768310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Code/14",
          "block_type": "Code",
          "html": "<pre>def capitalize_all(t):\n    res = []\n    for s in t:\n        res.append(s.capitalize())\n    return res</pre>",
          "polygon": [
            [
              129.60011291503906,
              471.1016845703125
            ],
            [
              307.4325256347656,
              471.1016845703125
            ],
            [
              307.4325256347656,
              529.8412780761719
            ],
            [
              129.60011291503906,
              529.8412780761719
            ]
          ],
          "bbox": [
            129.60011291503906,
            471.1016845703125,
            307.4325256347656,
            529.8412780761719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">res is initialized with an empty list; each time through the loop, we append the next element. So res is another kind of accumulator.</p>",
          "polygon": [
            [
              127.8984375,
              536.2156982421875
            ],
            [
              525.9375,
              536.2156982421875
            ],
            [
              525.9375,
              558.5218505859375
            ],
            [
              127.8984375,
              558.5218505859375
            ]
          ],
          "bbox": [
            127.8984375,
            536.2156982421875,
            525.9375,
            558.5218505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An operation like capitalize_all is sometimes called a <b>map</b> because it \"maps\" a function (in this case the method capitalize) onto each of the elements in a sequence.</p>",
          "polygon": [
            [
              127.8984375,
              568.7176971435547
            ],
            [
              525.9375,
              568.7176971435547
            ],
            [
              525.9375,
              591.0248565673828
            ],
            [
              127.8984375,
              591.0248565673828
            ]
          ],
          "bbox": [
            127.8984375,
            568.7176971435547,
            525.9375,
            591.0248565673828
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 10.2.</b> <i>Use</i> capitalize_all <i>to write a function named</i> capitalize_nested <i>that takes</i> <i>a nested list of strings and returns a new nested list with all strings capitalized.</i></p>",
          "polygon": [
            [
              128.3466796875,
              593.0835571289062
            ],
            [
              525.5971069335938,
              593.0835571289062
            ],
            [
              525.5971069335938,
              615.26953125
            ],
            [
              128.3466796875,
              615.26953125
            ]
          ],
          "bbox": [
            128.3466796875,
            593.0835571289062,
            525.5971069335938,
            615.26953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another common operation is to select some of the elements from a list and return a sublist. For example, the following function takes a list of strings and returns a list that contains only the uppercase strings:</p>",
          "polygon": [
            [
              128.6455078125,
              625.7109375
            ],
            [
              525.9375,
              625.7109375
            ],
            [
              525.9375,
              660.10986328125
            ],
            [
              128.6455078125,
              660.10986328125
            ]
          ],
          "bbox": [
            128.6455078125,
            625.7109375,
            525.9375,
            660.10986328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/112/Code/19",
          "block_type": "Code",
          "html": "<pre>def only_upper(t):\n    res = []\n    for s in t:</pre>",
          "polygon": [
            [
              129.60012817382812,
              666.3347015380859
            ],
            [
              223.75665283203125,
              666.3347015380859
            ],
            [
              223.75665283203125,
              700.685302734375
            ],
            [
              129.60012817382812,
              700.685302734375
            ]
          ],
          "bbox": [
            129.60012817382812,
            666.3347015380859,
            223.75665283203125,
            700.685302734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/112/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/113/Page/268",
      "block_type": "Page",
      "html": "<content-ref src='/page/113/PageHeader/0'></content-ref><content-ref src='/page/113/PageHeader/19'></content-ref><content-ref src='/page/113/Code/1'></content-ref><content-ref src='/page/113/Text/2'></content-ref><content-ref src='/page/113/Text/3'></content-ref><content-ref src='/page/113/Text/4'></content-ref><content-ref src='/page/113/Text/5'></content-ref><content-ref src='/page/113/SectionHeader/6'></content-ref><content-ref src='/page/113/Text/7'></content-ref><content-ref src='/page/113/Code/8'></content-ref><content-ref src='/page/113/Text/9'></content-ref><content-ref src='/page/113/Text/10'></content-ref><content-ref src='/page/113/TextInlineMath/11'></content-ref><content-ref src='/page/113/Text/12'></content-ref><content-ref src='/page/113/Code/262'></content-ref><content-ref src='/page/113/Text/14'></content-ref><content-ref src='/page/113/Text/15'></content-ref><content-ref src='/page/113/Code/16'></content-ref><content-ref src='/page/113/Text/17'></content-ref><content-ref src='/page/113/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/113/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.27978515625
            ],
            [
              482.4033508300781,
              60.27978515625
            ],
            [
              482.4033508300781,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.27978515625,
            482.4033508300781,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/113/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.46484375,
              60.8115234375
            ],
            [
              96.521484375,
              60.8115234375
            ],
            [
              96.521484375,
              70.3828125
            ],
            [
              85.46484375,
              70.3828125
            ]
          ],
          "bbox": [
            85.46484375,
            60.8115234375,
            96.521484375,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/113/Code/1",
          "block_type": "Code",
          "html": "<pre>if s.isupper():\n        res.append(s)\nreturn res</pre>",
          "polygon": [
            [
              107.1298828125,
              88.41357421875
            ],
            [
              217.15371704101562,
              88.41357421875
            ],
            [
              217.15371704101562,
              123.03729248046875
            ],
            [
              107.1298828125,
              123.03729248046875
            ]
          ],
          "bbox": [
            107.1298828125,
            88.41357421875,
            217.15371704101562,
            123.03729248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">isupper is a string method that returns True if the string contains only upper case letters.</p>",
          "polygon": [
            [
              86.40000915527344,
              126.45703125
            ],
            [
              479.3203125,
              126.45703125
            ],
            [
              479.3203125,
              137.2169189453125
            ],
            [
              86.40000915527344,
              137.2169189453125
            ]
          ],
          "bbox": [
            86.40000915527344,
            126.45703125,
            479.3203125,
            137.2169189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An operation like only_upper is called a <b>filter</b> because it selects some of the elements and filters out the others.</p>",
          "polygon": [
            [
              85.46484375,
              143.859375
            ],
            [
              482.40386962890625,
              143.859375
            ],
            [
              482.40386962890625,
              167.4139404296875
            ],
            [
              85.46484375,
              167.4139404296875
            ]
          ],
          "bbox": [
            85.46484375,
            143.859375,
            482.40386962890625,
            167.4139404296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most common list operations can be expressed as a combination of map, filter and reduce. Because these operations are so common, Python provides language features to support them, including the built-in function map and an operator called a \"list comprehension.\" <b>Exercise 10.3.</b> <i>Write a function that takes a list of numbers and returns the cumulative sum; that</i></p>",
          "polygon": [
            [
              85.46484375,
              174.5068359375
            ],
            [
              482.4034423828125,
              174.5068359375
            ],
            [
              482.4034423828125,
              221.90179443359375
            ],
            [
              85.46484375,
              221.90179443359375
            ]
          ],
          "bbox": [
            85.46484375,
            174.5068359375,
            482.4034423828125,
            221.90179443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-113-1\"></span><i>is, a new list where the ith element is the sum of the first i</i> + 1 <i>elements from the original list. For</i> <i>example, the cumulative sum of</i> [1, 2, 3] <i>is</i> [1, 3, 6]<i>.</i></p>",
          "polygon": [
            [
              85.6142578125,
              219.65625
            ],
            [
              482.3965759277344,
              219.65625
            ],
            [
              482.3965759277344,
              246.7265625
            ],
            [
              85.6142578125,
              246.7265625
            ]
          ],
          "bbox": [
            85.6142578125,
            219.65625,
            482.3965759277344,
            246.7265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/112/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/113/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-113-0\"></span><b>10.8 Deleting elements</b></h4>",
          "polygon": [
            [
              85.6142578125,
              272.443359375
            ],
            [
              245.77203369140625,
              272.443359375
            ],
            [
              245.77203369140625,
              287.138671875
            ],
            [
              85.6142578125,
              287.138671875
            ]
          ],
          "bbox": [
            85.6142578125,
            272.443359375,
            245.77203369140625,
            287.138671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are several ways to delete elements from a list. If you know the index of the element you want, you can use pop:</p>",
          "polygon": [
            [
              85.46484375,
              296.806640625
            ],
            [
              482.40350341796875,
              296.806640625
            ],
            [
              482.40350341796875,
              319.45391845703125
            ],
            [
              85.46484375,
              319.45391845703125
            ]
          ],
          "bbox": [
            85.46484375,
            296.806640625,
            482.40350341796875,
            319.45391845703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['a', 'b', 'c']\n&gt;&gt;&gt; x = t.pop(1)\n&gt;&gt;&gt; print t\n['a', 'c']\n&gt;&gt;&gt; print x\nb</pre>",
          "polygon": [
            [
              85.6142578125,
              323.37176513671875
            ],
            [
              206.6704864501953,
              323.37176513671875
            ],
            [
              206.6704864501953,
              394.3063659667969
            ],
            [
              85.6142578125,
              394.3063659667969
            ]
          ],
          "bbox": [
            85.6142578125,
            323.37176513671875,
            206.6704864501953,
            394.3063659667969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">pop modifies the list and returns the element that was removed. If you don't provide an index, it deletes and returns the last element.</p>",
          "polygon": [
            [
              85.46484375,
              397.93359375
            ],
            [
              482.3990478515625,
              397.93359375
            ],
            [
              482.3990478515625,
              420.6809387207031
            ],
            [
              85.46484375,
              420.6809387207031
            ]
          ],
          "bbox": [
            85.46484375,
            397.93359375,
            482.3990478515625,
            420.6809387207031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you don't need the removed value, you can use the del operator:</p>",
          "polygon": [
            [
              85.39013671875,
              428.09765625
            ],
            [
              381.49713134765625,
              428.09765625
            ],
            [
              381.49713134765625,
              438.6829528808594
            ],
            [
              85.39013671875,
              438.6829528808594
            ]
          ],
          "bbox": [
            85.39013671875,
            428.09765625,
            381.49713134765625,
            438.6829528808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/TextInlineMath/11",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; t = ['a', 'b', 'c'] &gt;&gt;&gt; del t[1] &gt;&gt;&gt; print t ['a', 'c']</p>",
          "polygon": [
            [
              85.3154296875,
              442.40625
            ],
            [
              206.67051696777344,
              442.40625
            ],
            [
              206.67051696777344,
              496.546875
            ],
            [
              85.3154296875,
              496.546875
            ]
          ],
          "bbox": [
            85.3154296875,
            442.40625,
            206.67051696777344,
            496.546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you know the element you want to remove (but not the index), you can use remove:</p>",
          "polygon": [
            [
              85.763671875,
              493.06640625
            ],
            [
              462.9958190917969,
              493.06640625
            ],
            [
              462.9958190917969,
              503.3279724121094
            ],
            [
              85.763671875,
              503.3279724121094
            ]
          ],
          "bbox": [
            85.763671875,
            493.06640625,
            462.9958190917969,
            503.3279724121094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Code/262",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['a', 'b', 'c']\n&gt;&gt;&gt; t.remove('b')\n&gt;&gt;&gt; print t\n['a', 'c']</pre>",
          "polygon": [
            [
              85.6142578125,
              506.98828125
            ],
            [
              206.67054748535156,
              506.98828125
            ],
            [
              206.67054748535156,
              561.12890625
            ],
            [
              85.6142578125,
              561.12890625
            ]
          ],
          "bbox": [
            85.6142578125,
            506.98828125,
            206.67054748535156,
            561.12890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value from remove is None.</p>",
          "polygon": [
            [
              86.40019226074219,
              557.8598327636719
            ],
            [
              254.302734375,
              557.8598327636719
            ],
            [
              254.302734375,
              568.86328125
            ],
            [
              86.40019226074219,
              568.86328125
            ]
          ],
          "bbox": [
            86.40019226074219,
            557.8598327636719,
            254.302734375,
            568.86328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To remove more than one element, you can use del with a slice index:</p>",
          "polygon": [
            [
              86.2119140625,
              575.8618316650391
            ],
            [
              393.24322509765625,
              575.8618316650391
            ],
            [
              393.24322509765625,
              586.265625
            ],
            [
              86.2119140625,
              586.265625
            ]
          ],
          "bbox": [
            86.2119140625,
            575.8618316650391,
            393.24322509765625,
            586.265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Code/16",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['a', 'b', 'c', 'd', 'e', 'f']\n&gt;&gt;&gt; del t[1:5]\n&gt;&gt;&gt; print t\n['a', 'f']</pre>",
          "polygon": [
            [
              85.68896484375,
              589.74609375
            ],
            [
              286.27734375,
              589.74609375
            ],
            [
              286.27734375,
              638.47265625
            ],
            [
              85.68896484375,
              638.47265625
            ]
          ],
          "bbox": [
            85.68896484375,
            589.74609375,
            286.27734375,
            638.47265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As usual, the slice selects all the elements up to, but not including, the second index. <b>Exercise 10.4.</b> <i>Write a function called</i> middle <i>that takes a list and returns a new list that contains</i> <i>all but the first and last elements. So</i> middle([1,2,3,4]) <i>should return</i> [2,3]<i>.</i></p>",
          "polygon": [
            [
              85.763671875,
              639.6328125
            ],
            [
              482.40374755859375,
              639.6328125
            ],
            [
              482.40374755859375,
              674.8574447631836
            ],
            [
              85.763671875,
              674.8574447631836
            ]
          ],
          "bbox": [
            85.763671875,
            639.6328125,
            482.40374755859375,
            674.8574447631836
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/113/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 10.5.</b> <i>Write a function called</i> chop <i>that takes a list, modifies it by removing the first and</i> <i>last elements, and returns</i> None<i>.</i></p>",
          "polygon": [
            [
              85.6142578125,
              674.4375
            ],
            [
              482.396240234375,
              674.4375
            ],
            [
              482.396240234375,
              699.2464447021484
            ],
            [
              85.6142578125,
              699.2464447021484
            ]
          ],
          "bbox": [
            85.6142578125,
            674.4375,
            482.396240234375,
            699.2464447021484
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/113/SectionHeader/6"
      },
      "images": null
    },
    {
      "id": "/page/114/Page/239",
      "block_type": "Page",
      "html": "<content-ref src='/page/114/PageHeader/0'></content-ref><content-ref src='/page/114/PageHeader/18'></content-ref><content-ref src='/page/114/SectionHeader/1'></content-ref><content-ref src='/page/114/Text/2'></content-ref><content-ref src='/page/114/Code/3'></content-ref><content-ref src='/page/114/Text/4'></content-ref><content-ref src='/page/114/Text/5'></content-ref><content-ref src='/page/114/Code/6'></content-ref><content-ref src='/page/114/Text/7'></content-ref><content-ref src='/page/114/Code/8'></content-ref><content-ref src='/page/114/Text/9'></content-ref><content-ref src='/page/114/Code/10'></content-ref><content-ref src='/page/114/Text/11'></content-ref><content-ref src='/page/114/SectionHeader/12'></content-ref><content-ref src='/page/114/Text/13'></content-ref><content-ref src='/page/114/Code/14'></content-ref><content-ref src='/page/114/Text/15'></content-ref><content-ref src='/page/114/Text/16'></content-ref><content-ref src='/page/114/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/114/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.16845703125,
              60.95654296875
            ],
            [
              525.6033935546875,
              60.95654296875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.16845703125,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.16845703125,
            60.95654296875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/114/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.283203125,
              60.908203125
            ],
            [
              525.638671875,
              60.908203125
            ],
            [
              525.638671875,
              70.0927734375
            ],
            [
              514.283203125,
              70.0927734375
            ]
          ],
          "bbox": [
            514.283203125,
            60.908203125,
            525.638671875,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/113/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/114/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-114-0\"></span><b>10.9 Lists and strings</b></h4>",
          "polygon": [
            [
              128.6455078125,
              85.95379638671875
            ],
            [
              277.4619140625,
              85.95379638671875
            ],
            [
              277.4619140625,
              100.29998779296875
            ],
            [
              128.6455078125,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.6455078125,
            85.95379638671875,
            277.4619140625,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A string is a sequence of characters and a list is a sequence of values, but a list of characters is not the same as a string. To convert from a string to a list of characters, you can use list:</p>",
          "polygon": [
            [
              128.794921875,
              112.8251953125
            ],
            [
              525.638671875,
              112.8251953125
            ],
            [
              525.638671875,
              135.52398681640625
            ],
            [
              128.794921875,
              135.52398681640625
            ]
          ],
          "bbox": [
            128.794921875,
            112.8251953125,
            525.638671875,
            135.52398681640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; s = 'spam'\n&gt;&gt;&gt; t = list(s)\n&gt;&gt;&gt; print t\n['s', 'p', 'a', 'm']</pre>",
          "polygon": [
            [
              128.49609375,
              153.6240234375
            ],
            [
              234.1833953857422,
              153.6240234375
            ],
            [
              234.1833953857422,
              200.8333740234375
            ],
            [
              128.49609375,
              200.8333740234375
            ]
          ],
          "bbox": [
            128.49609375,
            153.6240234375,
            234.1833953857422,
            200.8333740234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Because list is the name of a built-in function, you should avoid using it as a variable name. I also avoid l because it looks too much like 1. So that's why I use t.</p>",
          "polygon": [
            [
              129.392578125,
              206.89453125
            ],
            [
              525.638671875,
              206.89453125
            ],
            [
              525.638671875,
              229.8590087890625
            ],
            [
              129.392578125,
              229.8590087890625
            ]
          ],
          "bbox": [
            129.392578125,
            206.89453125,
            525.638671875,
            229.8590087890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The list function breaks a string into individual letters. If you want to break a string into words, you can use the split method:</p>",
          "polygon": [
            [
              129.2431640625,
              239.765625
            ],
            [
              525.6027221679688,
              239.765625
            ],
            [
              525.6027221679688,
              262.70599365234375
            ],
            [
              129.2431640625,
              262.70599365234375
            ]
          ],
          "bbox": [
            129.2431640625,
            239.765625,
            525.6027221679688,
            262.70599365234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; s = 'pining for the fjords'\n&gt;&gt;&gt; t = s.split()\n&gt;&gt;&gt; print t\n['pining', 'for', 'the', 'fjords']</pre>",
          "polygon": [
            [
              129.46728515625,
              269.27484130859375
            ],
            [
              307.3914489746094,
              269.27484130859375
            ],
            [
              307.3914489746094,
              315.8204345703125
            ],
            [
              129.46728515625,
              315.8204345703125
            ]
          ],
          "bbox": [
            129.46728515625,
            269.27484130859375,
            307.3914489746094,
            315.8204345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An optional argument called a <b>delimiter</b> specifies which characters to use as word boundaries. The following example uses a hyphen as a delimiter:</p>",
          "polygon": [
            [
              129.60006713867188,
              321.943359375
            ],
            [
              525.6026611328125,
              321.943359375
            ],
            [
              525.6026611328125,
              344.84600830078125
            ],
            [
              129.60006713867188,
              344.84600830078125
            ]
          ],
          "bbox": [
            129.60006713867188,
            321.943359375,
            525.6026611328125,
            344.84600830078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; s = 'spam-spam-spam'\n&gt;&gt;&gt; delimiter = '-'\n&gt;&gt;&gt; s.split(delimiter)\n['spam', 'spam', 'spam']</pre>",
          "polygon": [
            [
              127.52490234375,
              351.41485595703125
            ],
            [
              259.98046875,
              351.41485595703125
            ],
            [
              259.98046875,
              397.96044921875
            ],
            [
              127.52490234375,
              397.96044921875
            ]
          ],
          "bbox": [
            127.52490234375,
            351.41485595703125,
            259.98046875,
            397.96044921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">join is the inverse of split. It takes a list of strings and concatenates the elements. join is a string method, so you have to invoke it on the delimiter and pass the list as a parameter:</p>",
          "polygon": [
            [
              129.5419921875,
              404.12109375
            ],
            [
              525.6035766601562,
              404.12109375
            ],
            [
              525.6035766601562,
              426.98602294921875
            ],
            [
              129.5419921875,
              426.98602294921875
            ]
          ],
          "bbox": [
            129.5419921875,
            404.12109375,
            525.6035766601562,
            426.98602294921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['pining', 'for', 'the', 'fjords']\n&gt;&gt;&gt; delimiter = ' '\n&gt;&gt;&gt; delimiter.join(t)\n'pining for the fjords'</pre>",
          "polygon": [
            [
              127.37548828125,
              444.33984375
            ],
            [
              349.22454833984375,
              444.33984375
            ],
            [
              349.22454833984375,
              493.83984375
            ],
            [
              127.37548828125,
              493.83984375
            ]
          ],
          "bbox": [
            127.37548828125,
            444.33984375,
            349.22454833984375,
            493.83984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this case the delimiter is a space character, so join puts a space between words. To concatenate strings without spaces, you can use the empty string, '', as a delimiter.</p>",
          "polygon": [
            [
              128.794921875,
              499.0138854980469
            ],
            [
              525.602783203125,
              499.0138854980469
            ],
            [
              525.602783203125,
              521.3200378417969
            ],
            [
              128.794921875,
              521.3200378417969
            ]
          ],
          "bbox": [
            128.794921875,
            499.0138854980469,
            525.602783203125,
            521.3200378417969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/114/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-114-1\"></span><b>10.10 Objects and values</b></h4>",
          "polygon": [
            [
              127.8984375,
              551.84765625
            ],
            [
              300.5208435058594,
              551.84765625
            ],
            [
              300.5208435058594,
              566.5540924072266
            ],
            [
              127.8984375,
              566.5540924072266
            ]
          ],
          "bbox": [
            127.8984375,
            551.84765625,
            300.5208435058594,
            566.5540924072266
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we execute these assignment statements:</p>",
          "polygon": [
            [
              127.8984375,
              578.91796875
            ],
            [
              317.843505859375,
              578.91796875
            ],
            [
              317.843505859375,
              589.5840454101562
            ],
            [
              127.8984375,
              589.5840454101562
            ]
          ],
          "bbox": [
            127.8984375,
            578.91796875,
            317.843505859375,
            589.5840454101562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/114/Code/14",
          "block_type": "Code",
          "html": "<pre>a = 'banana'\nb = 'banana'</pre>",
          "polygon": [
            [
              127.4501953125,
              596.1528930664062
            ],
            [
              192.35057067871094,
              596.1528930664062
            ],
            [
              192.35057067871094,
              618.3105010986328
            ],
            [
              127.4501953125,
              618.3105010986328
            ]
          ],
          "bbox": [
            127.4501953125,
            596.1528930664062,
            192.35057067871094,
            618.3105010986328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We know that a and b both refer to a string, but we don't know whether they refer to the <i>same</i> string. There are two possible states, shown in Figure <a href=\"#page-115-1\">10.2.</a></p>",
          "polygon": [
            [
              129.5419921875,
              624.55078125
            ],
            [
              525.5989379882812,
              624.55078125
            ],
            [
              525.5989379882812,
              647.3350524902344
            ],
            [
              129.5419921875,
              647.3350524902344
            ]
          ],
          "bbox": [
            129.5419921875,
            624.55078125,
            525.5989379882812,
            647.3350524902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In one case, a and b refer to two different objects that have the same value. In the second case, they refer to the same object.</p>",
          "polygon": [
            [
              128.794921875,
              657.421875
            ],
            [
              525.638671875,
              657.421875
            ],
            [
              525.638671875,
              680.1820602416992
            ],
            [
              128.794921875,
              680.1820602416992
            ]
          ],
          "bbox": [
            128.794921875,
            657.421875,
            525.638671875,
            680.1820602416992
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/114/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To check whether two variables refer to the same object, you can use the is operator.</p>",
          "polygon": [
            [
              128.0478515625,
              690.6796875
            ],
            [
              501.010986328125,
              690.6796875
            ],
            [
              501.010986328125,
              700.8350601196289
            ],
            [
              128.0478515625,
              700.8350601196289
            ]
          ],
          "bbox": [
            128.0478515625,
            690.6796875,
            501.010986328125,
            700.8350601196289
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/114/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/115/Page/201",
      "block_type": "Page",
      "html": "<content-ref src='/page/115/PageHeader/0'></content-ref><content-ref src='/page/115/PageHeader/19'></content-ref><content-ref src='/page/115/Figure/1'></content-ref><content-ref src='/page/115/Text/2'></content-ref><content-ref src='/page/115/TableGroup/186'></content-ref><content-ref src='/page/115/Code/5'></content-ref><content-ref src='/page/115/Text/6'></content-ref><content-ref src='/page/115/Text/7'></content-ref><content-ref src='/page/115/TextInlineMath/8'></content-ref><content-ref src='/page/115/Text/9'></content-ref><content-ref src='/page/115/Text/10'></content-ref><content-ref src='/page/115/Text/11'></content-ref><content-ref src='/page/115/SectionHeader/12'></content-ref><content-ref src='/page/115/Text/13'></content-ref><content-ref src='/page/115/Code/14'></content-ref><content-ref src='/page/115/Text/15'></content-ref><content-ref src='/page/115/Text/16'></content-ref><content-ref src='/page/115/Text/17'></content-ref><content-ref src='/page/115/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/115/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.0380859375
            ],
            [
              482.4033508300781,
              60.0380859375
            ],
            [
              482.4033508300781,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.0380859375,
            482.4033508300781,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.64306640625,
              60.85986328125
            ],
            [
              95.84912109375,
              60.85986328125
            ],
            [
              95.84912109375,
              70.33447265625
            ],
            [
              84.64306640625,
              70.33447265625
            ]
          ],
          "bbox": [
            84.64306640625,
            60.85986328125,
            95.84912109375,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Figure/1",
          "block_type": "Figure",
          "html": "",
          "polygon": [
            [
              191.6982421875,
              84.884765625
            ],
            [
              374.1328125,
              84.884765625
            ],
            [
              374.1328125,
              117.755859375
            ],
            [
              191.6982421875,
              117.755859375
            ]
          ],
          "bbox": [
            191.6982421875,
            84.884765625,
            374.1328125,
            117.755859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {
            "/page/115/Figure/1": "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5irlU/Bn/Hrq3/YUuP5igDpaKKKACiiigAooooA5KX/koep/9gqz/wDRt1WpWXL/AMlD1P8A7BVn/wCjbqtSgDzb4l6imkeKPB2oSxPJDb3MzyiNSxVNg3Ngegyfwqv4n8Q6Z441Xw9ovh65W/kS/jvLiWFSVgiTkknHBOeleo1DBaW1ru+z28UO85by0C5PvigCasu48OaPeX7Xt5YRXU5IINxmUIQMfKrZC9OwFalFACIixoERQqgYAAwBS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVk3n/I3eHP8ArrP/AOiWrWrJvP8AkbvDn/XWf/0S1AHX0UUUAFR3H/HtL/uH+VFFAHI+Ef8AkS9C/wCwdb/+i1rZoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqn4M/49dW/wCwpcfzFFFAHS0UUUAFFFFABRRRQByUv/JQ9T/7BVn/AOjbqtSiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsm8/5G7w5/11n/APRLUUUAdfRRRQB//9k="
          }
        },
        {
          "id": "/page/115/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure 10.2: State diagram.</p>",
          "polygon": [
            [
              224.2705078125,
              132.837890625
            ],
            [
              343.2491760253906,
              132.837890625
            ],
            [
              343.2491760253906,
              144.3529052734375
            ],
            [
              224.2705078125,
              144.3529052734375
            ]
          ],
          "bbox": [
            224.2705078125,
            132.837890625,
            343.2491760253906,
            144.3529052734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/TableGroup/186",
          "block_type": "TableGroup",
          "html": "<content-ref src='/page/115/Table/3'></content-ref><content-ref src='/page/115/Caption/4'></content-ref>",
          "polygon": [
            [
              225.017578125,
              155.5576171875
            ],
            [
              343.353515625,
              155.5576171875
            ],
            [
              343.353515625,
              214.14093017578125
            ],
            [
              225.017578125,
              214.14093017578125
            ]
          ],
          "bbox": [
            225.017578125,
            155.5576171875,
            343.353515625,
            214.14093017578125
          ],
          "children": [
            {
              "id": "/page/115/Table/3",
              "block_type": "Table",
              "html": "<content-ref src='/page/115/Reference/200'></content-ref><table><tbody><tr><td>a</td><td>[1, 2, 3]</td></tr><tr><td>b</td><td>[1, 2, 3]</td></tr></tbody></table>",
              "polygon": [
                [
                  245.63671875,
                  155.5576171875
                ],
                [
                  321.240234375,
                  155.5576171875
                ],
                [
                  321.240234375,
                  187.6552734375
                ],
                [
                  245.63671875,
                  187.6552734375
                ]
              ],
              "bbox": [
                245.63671875,
                155.5576171875,
                321.240234375,
                187.6552734375
              ],
              "children": [
                {
                  "id": "/page/115/Reference/200",
                  "block_type": "Reference",
                  "html": "<span id=\"page-115-1\"></span>",
                  "polygon": [
                    [
                      245.63671875,
                      155.5576171875
                    ],
                    [
                      321.240234375,
                      155.5576171875
                    ],
                    [
                      321.240234375,
                      187.6552734375
                    ],
                    [
                      245.63671875,
                      187.6552734375
                    ]
                  ],
                  "bbox": [
                    245.63671875,
                    155.5576171875,
                    321.240234375,
                    187.6552734375
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/108/SectionHeader/1",
                    "4": "/page/114/SectionHeader/12"
                  },
                  "images": {}
                },
                {
                  "id": "/page/115/TableCell/191",
                  "block_type": "TableCell",
                  "html": "<td>a</td>",
                  "polygon": [
                    [
                      245.63671875,
                      155.5576171875
                    ],
                    [
                      246.63671875,
                      155.5576171875
                    ],
                    [
                      246.63671875,
                      156.5576171875
                    ],
                    [
                      245.63671875,
                      156.5576171875
                    ]
                  ],
                  "bbox": [
                    245.63671875,
                    155.5576171875,
                    246.63671875,
                    156.5576171875
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/108/SectionHeader/1",
                    "4": "/page/114/SectionHeader/12"
                  },
                  "images": {}
                },
                {
                  "id": "/page/115/TableCell/192",
                  "block_type": "TableCell",
                  "html": "<td>[1, 2, 3]</td>",
                  "polygon": [
                    [
                      246.63671875,
                      155.5576171875
                    ],
                    [
                      247.63671875,
                      155.5576171875
                    ],
                    [
                      247.63671875,
                      156.5576171875
                    ],
                    [
                      246.63671875,
                      156.5576171875
                    ]
                  ],
                  "bbox": [
                    246.63671875,
                    155.5576171875,
                    247.63671875,
                    156.5576171875
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/108/SectionHeader/1",
                    "4": "/page/114/SectionHeader/12"
                  },
                  "images": {}
                },
                {
                  "id": "/page/115/TableCell/193",
                  "block_type": "TableCell",
                  "html": "<td>b</td>",
                  "polygon": [
                    [
                      245.63671875,
                      156.5576171875
                    ],
                    [
                      246.63671875,
                      156.5576171875
                    ],
                    [
                      246.63671875,
                      157.5576171875
                    ],
                    [
                      245.63671875,
                      157.5576171875
                    ]
                  ],
                  "bbox": [
                    245.63671875,
                    156.5576171875,
                    246.63671875,
                    157.5576171875
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/108/SectionHeader/1",
                    "4": "/page/114/SectionHeader/12"
                  },
                  "images": {}
                },
                {
                  "id": "/page/115/TableCell/194",
                  "block_type": "TableCell",
                  "html": "<td>[1, 2, 3]</td>",
                  "polygon": [
                    [
                      246.63671875,
                      156.5576171875
                    ],
                    [
                      247.63671875,
                      156.5576171875
                    ],
                    [
                      247.63671875,
                      157.5576171875
                    ],
                    [
                      246.63671875,
                      157.5576171875
                    ]
                  ],
                  "bbox": [
                    246.63671875,
                    156.5576171875,
                    247.63671875,
                    157.5576171875
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/108/SectionHeader/1",
                    "4": "/page/114/SectionHeader/12"
                  },
                  "images": {}
                }
              ],
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/114/SectionHeader/12"
              },
              "images": null
            },
            {
              "id": "/page/115/Caption/4",
              "block_type": "Caption",
              "html": "<p><span id=\"page-115-2\"></span>Figure 10.3: State diagram.</p>",
              "polygon": [
                [
                  225.017578125,
                  203.607421875
                ],
                [
                  343.353515625,
                  203.607421875
                ],
                [
                  343.353515625,
                  214.14093017578125
                ],
                [
                  225.017578125,
                  214.14093017578125
                ]
              ],
              "bbox": [
                225.017578125,
                203.607421875,
                343.353515625,
                214.14093017578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/114/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/115/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; a = 'banana'\n&gt;&gt;&gt; b = 'banana'\n&gt;&gt;&gt; a is b\nTrue</pre>",
          "polygon": [
            [
              85.166015625,
              235.73675537109375
            ],
            [
              170.06735229492188,
              235.73675537109375
            ],
            [
              170.06735229492188,
              282.28228759765625
            ],
            [
              85.166015625,
              282.28228759765625
            ]
          ],
          "bbox": [
            85.166015625,
            235.73675537109375,
            170.06735229492188,
            282.28228759765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this example, Python only created one string object, and both a and b refer to it.</p>",
          "polygon": [
            [
              85.3154296875,
              287.525390625
            ],
            [
              446.902099609375,
              287.525390625
            ],
            [
              446.902099609375,
              298.0178527832031
            ],
            [
              85.3154296875,
              298.0178527832031
            ]
          ],
          "bbox": [
            85.3154296875,
            287.525390625,
            446.902099609375,
            298.0178527832031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But when you create two lists, you get two objects:</p>",
          "polygon": [
            [
              85.09130859375,
              307.248046875
            ],
            [
              308.73529052734375,
              307.248046875
            ],
            [
              308.73529052734375,
              317.5748596191406
            ],
            [
              85.09130859375,
              317.5748596191406
            ]
          ],
          "bbox": [
            85.09130859375,
            307.248046875,
            308.73529052734375,
            317.5748596191406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; a = [1, 2, 3] &gt;&gt;&gt; b = [1, 2, 3] &gt;&gt;&gt; a is b False</p>",
          "polygon": [
            [
              85.3154296875,
              323.0487060546875
            ],
            [
              175.7109375,
              323.0487060546875
            ],
            [
              175.7109375,
              373.5703125
            ],
            [
              85.3154296875,
              373.5703125
            ]
          ],
          "bbox": [
            85.3154296875,
            323.0487060546875,
            175.7109375,
            373.5703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So the state diagram looks like Figure <a href=\"#page-115-2\">10.3.</a></p>",
          "polygon": [
            [
              85.53955078125,
              375.1171875
            ],
            [
              274.32421875,
              375.1171875
            ],
            [
              274.32421875,
              385.3298645019531
            ],
            [
              85.53955078125,
              385.3298645019531
            ]
          ],
          "bbox": [
            85.53955078125,
            375.1171875,
            274.32421875,
            385.3298645019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this case we would say that the two lists are <b>equivalent</b>, because they have the same elements, but not <b>identical</b>, because they are not the same object. If two objects are identical, they are also equivalent, but if they are equivalent, they are not necessarily identical.</p>",
          "polygon": [
            [
              85.46484375,
              394.06640625
            ],
            [
              482.4001159667969,
              394.06640625
            ],
            [
              482.4001159667969,
              429.27587890625
            ],
            [
              85.46484375,
              429.27587890625
            ]
          ],
          "bbox": [
            85.46484375,
            394.06640625,
            482.4001159667969,
            429.27587890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Until now, we have been using \"object\" and \"value\" interchangeably, but it is more precise to say that an object has a value. If you execute [1,2,3], you get a list object whose value is a sequence of integers. If another list has the same elements, we say it has the same value, but it is not the same object.</p>",
          "polygon": [
            [
              85.6142578125,
              438.15234375
            ],
            [
              482.90625,
              438.15234375
            ],
            [
              482.90625,
              485.4158935546875
            ],
            [
              85.6142578125,
              485.4158935546875
            ]
          ],
          "bbox": [
            85.6142578125,
            438.15234375,
            482.90625,
            485.4158935546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/114/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-115-0\"></span><b>10.11 Aliasing</b></h4>",
          "polygon": [
            [
              85.763671875,
              513.5625
            ],
            [
              189.158203125,
              513.5625
            ],
            [
              189.158203125,
              528.2919616699219
            ],
            [
              85.763671875,
              528.2919616699219
            ]
          ],
          "bbox": [
            85.763671875,
            513.5625,
            189.158203125,
            528.2919616699219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If a refers to an object and you assign b = a, then both variables refer to the same object:</p>",
          "polygon": [
            [
              85.6142578125,
              539.47265625
            ],
            [
              474.5390625,
              539.47265625
            ],
            [
              474.5390625,
              550.0198974609375
            ],
            [
              85.6142578125,
              550.0198974609375
            ]
          ],
          "bbox": [
            85.6142578125,
            539.47265625,
            474.5390625,
            550.0198974609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; a = [1, 2, 3]\n&gt;&gt;&gt; b = a\n&gt;&gt;&gt; b is a\nTrue</pre>",
          "polygon": [
            [
              85.46484375,
              555.4937438964844
            ],
            [
              175.31614685058594,
              555.4937438964844
            ],
            [
              175.31614685058594,
              605.98828125
            ],
            [
              85.46484375,
              605.98828125
            ]
          ],
          "bbox": [
            85.46484375,
            555.4937438964844,
            175.31614685058594,
            605.98828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The state diagram looks like Figure <a href=\"#page-116-1\">10.4.</a></p>",
          "polygon": [
            [
              86.361328125,
              607.8123016357422
            ],
            [
              263.803955078125,
              607.8123016357422
            ],
            [
              263.803955078125,
              617.77490234375
            ],
            [
              86.361328125,
              617.77490234375
            ]
          ],
          "bbox": [
            86.361328125,
            607.8123016357422,
            263.803955078125,
            617.77490234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The association of a variable with an object is called a <b>reference</b>. In this example, there are two references to the same object.</p>",
          "polygon": [
            [
              86.0625,
              627.2578125
            ],
            [
              482.40069580078125,
              627.2578125
            ],
            [
              482.40069580078125,
              649.5259094238281
            ],
            [
              86.0625,
              649.5259094238281
            ]
          ],
          "bbox": [
            86.0625,
            627.2578125,
            482.40069580078125,
            649.5259094238281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An object with more than one reference has more than one name, so we say that the object is <b>aliased</b>.</p>",
          "polygon": [
            [
              85.9130859375,
              658.58203125
            ],
            [
              482.40325927734375,
              658.58203125
            ],
            [
              482.40325927734375,
              681.2779159545898
            ],
            [
              85.9130859375,
              681.2779159545898
            ]
          ],
          "bbox": [
            85.9130859375,
            658.58203125,
            482.40325927734375,
            681.2779159545898
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/115/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the aliased object is mutable, changes made with one alias affect the other:</p>",
          "polygon": [
            [
              85.9130859375,
              690.6796875
            ],
            [
              421.4720458984375,
              690.6796875
            ],
            [
              421.4720458984375,
              700.8349151611328
            ],
            [
              85.9130859375,
              700.8349151611328
            ]
          ],
          "bbox": [
            85.9130859375,
            690.6796875,
            421.4720458984375,
            700.8349151611328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/115/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/116/Page/202",
      "block_type": "Page",
      "html": "<content-ref src='/page/116/PageHeader/0'></content-ref><content-ref src='/page/116/PageHeader/19'></content-ref><content-ref src='/page/116/Equation/1'></content-ref><content-ref src='/page/116/FigureGroup/192'></content-ref><content-ref src='/page/116/TextInlineMath/5'></content-ref><content-ref src='/page/116/Text/6'></content-ref><content-ref src='/page/116/Text/7'></content-ref><content-ref src='/page/116/TextInlineMath/8'></content-ref><content-ref src='/page/116/Text/9'></content-ref><content-ref src='/page/116/SectionHeader/10'></content-ref><content-ref src='/page/116/Text/11'></content-ref><content-ref src='/page/116/Code/12'></content-ref><content-ref src='/page/116/Text/13'></content-ref><content-ref src='/page/116/Code/14'></content-ref><content-ref src='/page/116/Text/15'></content-ref><content-ref src='/page/116/Text/16'></content-ref><content-ref src='/page/116/Text/17'></content-ref><content-ref src='/page/116/TextInlineMath/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/116/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.3466796875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.3466796875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.3466796875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              515.478515625,
              61.1015625
            ],
            [
              526.236328125,
              61.1015625
            ],
            [
              526.236328125,
              70.0927734375
            ],
            [
              515.478515625,
              70.0927734375
            ]
          ],
          "bbox": [
            515.478515625,
            61.1015625,
            526.236328125,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/Equation/1",
          "block_type": "Equation",
          "html": "<span id=\"page-116-1\"></span><p block-type=\"Equation\">\\(\\begin{array}{c} a \\\\ b \\end{array}\\) \\rightarrow [1, 2, 3]</p>",
          "polygon": [
            [
              287.47265625,
              89.18701171875
            ],
            [
              363.375,
              89.18701171875
            ],
            [
              363.375,
              117.17578125
            ],
            [
              287.47265625,
              117.17578125
            ]
          ],
          "bbox": [
            287.47265625,
            89.18701171875,
            363.375,
            117.17578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/FigureGroup/192",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/116/Caption/2'></content-ref><content-ref src='/page/116/Figure/3'></content-ref><content-ref src='/page/116/Caption/4'></content-ref>",
          "polygon": [
            [
              229.9482421875,
              134.384765625
            ],
            [
              424.93359375,
              134.384765625
            ],
            [
              424.93359375,
              240.30792236328125
            ],
            [
              229.9482421875,
              240.30792236328125
            ]
          ],
          "bbox": [
            229.9482421875,
            134.384765625,
            424.93359375,
            240.30792236328125
          ],
          "children": [
            {
              "id": "/page/116/Caption/2",
              "block_type": "Caption",
              "html": "<p>Figure 10.4: State diagram.</p>",
              "polygon": [
                [
                  267.8994140625,
                  134.384765625
                ],
                [
                  387.28125,
                  134.384765625
                ],
                [
                  387.28125,
                  144.3529052734375
                ],
                [
                  267.8994140625,
                  144.3529052734375
                ]
              ],
              "bbox": [
                267.8994140625,
                134.384765625,
                387.28125,
                144.3529052734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/115/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/116/Figure/3",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  229.9482421875,
                  154.3974609375
                ],
                [
                  424.93359375,
                  154.3974609375
                ],
                [
                  424.93359375,
                  213.85546875
                ],
                [
                  229.9482421875,
                  213.85546875
                ]
              ],
              "bbox": [
                229.9482421875,
                154.3974609375,
                424.93359375,
                213.85546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/115/SectionHeader/12"
              },
              "images": {
                "/page/116/Figure/3": "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"
              }
            },
            {
              "id": "/page/116/Caption/4",
              "block_type": "Caption",
              "html": "<p><span id=\"page-116-2\"></span>Figure 10.5: Stack diagram.</p>",
              "polygon": [
                [
                  267.451171875,
                  229.904296875
                ],
                [
                  387.580078125,
                  229.904296875
                ],
                [
                  387.580078125,
                  240.30792236328125
                ],
                [
                  267.451171875,
                  240.30792236328125
                ]
              ],
              "bbox": [
                267.451171875,
                229.904296875,
                387.580078125,
                240.30792236328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/115/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/116/TextInlineMath/5",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; b[0] = 17 &gt;&gt;&gt; print a [17, 2, 3]</p>",
          "polygon": [
            [
              129.59999084472656,
              262.58203125
            ],
            [
              198.5712890625,
              262.58203125
            ],
            [
              198.5712890625,
              297.7734375
            ],
            [
              129.59999084472656,
              297.7734375
            ]
          ],
          "bbox": [
            129.59999084472656,
            262.58203125,
            198.5712890625,
            297.7734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although this behavior can be useful, it is error-prone. In general, it is safer to avoid aliasing when you are working with mutable objects.</p>",
          "polygon": [
            [
              129.09375,
              303.57421875
            ],
            [
              525.6033935546875,
              303.57421875
            ],
            [
              525.6033935546875,
              325.910888671875
            ],
            [
              129.09375,
              325.910888671875
            ]
          ],
          "bbox": [
            129.09375,
            303.57421875,
            525.6033935546875,
            325.910888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For immutable objects like strings, aliasing is not as much of a problem. In this example:</p>",
          "polygon": [
            [
              128.6455078125,
              336.05859375
            ],
            [
              517.5703125,
              336.05859375
            ],
            [
              517.5703125,
              346.1329040527344
            ],
            [
              128.6455078125,
              346.1329040527344
            ]
          ],
          "bbox": [
            128.6455078125,
            336.05859375,
            517.5703125,
            346.1329040527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">a = 'banana' b = 'banana'</p>",
          "polygon": [
            [
              129.2431640625,
              352.270751953125
            ],
            [
              192.350341796875,
              352.270751953125
            ],
            [
              192.350341796875,
              374.4273376464844
            ],
            [
              129.2431640625,
              374.4273376464844
            ]
          ],
          "bbox": [
            129.2431640625,
            352.270751953125,
            192.350341796875,
            374.4273376464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It almost never makes a difference whether a and b refer to the same string or not.</p>",
          "polygon": [
            [
              129.5419921875,
              380.337890625
            ],
            [
              489.36553955078125,
              380.337890625
            ],
            [
              489.36553955078125,
              390.8279113769531
            ],
            [
              129.5419921875,
              390.8279113769531
            ]
          ],
          "bbox": [
            129.5419921875,
            380.337890625,
            489.36553955078125,
            390.8279113769531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/115/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/116/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-116-0\"></span><b>10.12 List arguments</b></h4>",
          "polygon": [
            [
              128.197265625,
              420.4227600097656
            ],
            [
              273.836669921875,
              420.4227600097656
            ],
            [
              273.836669921875,
              434.76898193359375
            ],
            [
              128.197265625,
              434.76898193359375
            ]
          ],
          "bbox": [
            128.197265625,
            420.4227600097656,
            273.836669921875,
            434.76898193359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you pass a list to a function, the function gets a reference to the list. If the function modifies a list parameter, the caller sees the change. For example, delete_head removes the first element from a list:</p>",
          "polygon": [
            [
              128.197265625,
              447.23333740234375
            ],
            [
              525.638671875,
              447.23333740234375
            ],
            [
              525.638671875,
              481.5849304199219
            ],
            [
              128.197265625,
              481.5849304199219
            ]
          ],
          "bbox": [
            128.197265625,
            447.23333740234375,
            525.638671875,
            481.5849304199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/Code/12",
          "block_type": "Code",
          "html": "<pre>def delete_head(t):\n    del t[0]</pre>",
          "polygon": [
            [
              127.8984375,
              487.7227783203125
            ],
            [
              228.98683166503906,
              487.7227783203125
            ],
            [
              228.98683166503906,
              509.8793640136719
            ],
            [
              127.8984375,
              509.8793640136719
            ]
          ],
          "bbox": [
            127.8984375,
            487.7227783203125,
            228.98683166503906,
            509.8793640136719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's how it is used:</p>",
          "polygon": [
            [
              127.8984375,
              515.8828125
            ],
            [
              224.54351806640625,
              515.8828125
            ],
            [
              224.54351806640625,
              526.2799377441406
            ],
            [
              127.8984375,
              526.2799377441406
            ]
          ],
          "bbox": [
            127.8984375,
            515.8828125,
            224.54351806640625,
            526.2799377441406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; letters = ['a', 'b', 'c']\n&gt;&gt;&gt; delete_head(letters)\n&gt;&gt;&gt; print letters\n['b', 'c']</pre>",
          "polygon": [
            [
              127.82373046875,
              532.4177856445312
            ],
            [
              281.245361328125,
              532.4177856445312
            ],
            [
              281.245361328125,
              578.9633941650391
            ],
            [
              127.82373046875,
              578.9633941650391
            ]
          ],
          "bbox": [
            127.82373046875,
            532.4177856445312,
            281.245361328125,
            578.9633941650391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The parameter t and the variable letters are aliases for the same object. The stack diagram looks like Figure <a href=\"#page-116-2\">10.5.</a></p>",
          "polygon": [
            [
              128.6455078125,
              584.33203125
            ],
            [
              525.6002807617188,
              584.33203125
            ],
            [
              525.6002807617188,
              607.5579528808594
            ],
            [
              128.6455078125,
              607.5579528808594
            ]
          ],
          "bbox": [
            128.6455078125,
            584.33203125,
            525.6002807617188,
            607.5579528808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since the list is shared by two frames, I drew it between them.</p>",
          "polygon": [
            [
              127.7490234375,
              617.58984375
            ],
            [
              401.7183837890625,
              617.58984375
            ],
            [
              401.7183837890625,
              627.7799530029297
            ],
            [
              127.7490234375,
              627.7799530029297
            ]
          ],
          "bbox": [
            127.7490234375,
            617.58984375,
            401.7183837890625,
            627.7799530029297
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is important to distinguish between operations that modify lists and operations that create new lists. For example, the append method modifies a list, but the + operator creates a new list:</p>",
          "polygon": [
            [
              128.197265625,
              637.3125
            ],
            [
              525.6033325195312,
              637.3125
            ],
            [
              525.6033325195312,
              672.3909606933594
            ],
            [
              128.197265625,
              672.3909606933594
            ]
          ],
          "bbox": [
            128.197265625,
            637.3125,
            525.6033325195312,
            672.3909606933594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/116/TextInlineMath/18",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; t1 = [1, 2] &gt;&gt;&gt; t2 = t1.append(3)</p>",
          "polygon": [
            [
              128.3466796875,
              678.5287933349609
            ],
            [
              239.4376220703125,
              678.5287933349609
            ],
            [
              239.4376220703125,
              700.6853942871094
            ],
            [
              128.3466796875,
              700.6853942871094
            ]
          ],
          "bbox": [
            128.3466796875,
            678.5287933349609,
            239.4376220703125,
            700.6853942871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/116/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/117/Page/176",
      "block_type": "Page",
      "html": "<content-ref src='/page/117/PageHeader/0'></content-ref><content-ref src='/page/117/PageHeader/18'></content-ref><content-ref src='/page/117/Code/1'></content-ref><content-ref src='/page/117/Text/2'></content-ref><content-ref src='/page/117/TextInlineMath/3'></content-ref><content-ref src='/page/117/Text/4'></content-ref><content-ref src='/page/117/Text/5'></content-ref><content-ref src='/page/117/Code/6'></content-ref><content-ref src='/page/117/Text/7'></content-ref><content-ref src='/page/117/Code/8'></content-ref><content-ref src='/page/117/SectionHeader/9'></content-ref><content-ref src='/page/117/Text/10'></content-ref><content-ref src='/page/117/ListItem/11'></content-ref><content-ref src='/page/117/Text/12'></content-ref><content-ref src='/page/117/TextInlineMath/13'></content-ref><content-ref src='/page/117/Text/14'></content-ref><content-ref src='/page/117/TextInlineMath/15'></content-ref><content-ref src='/page/117/Text/16'></content-ref><content-ref src='/page/117/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/117/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.4248046875
            ],
            [
              482.4033508300781,
              60.4248046875
            ],
            [
              482.4033508300781,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.4248046875,
            482.4033508300781,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.83837890625,
              61.05322265625
            ],
            [
              96.74560546875,
              61.05322265625
            ],
            [
              96.74560546875,
              70.14111328125
            ],
            [
              85.83837890625,
              70.14111328125
            ]
          ],
          "bbox": [
            85.83837890625,
            61.05322265625,
            96.74560546875,
            70.14111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print t1\n[1, 2, 3]\n&gt;&gt;&gt; print t2\nNone\n&gt;&gt;&gt; t3 = t1 + [4]\n&gt;&gt;&gt; print t3\n[1, 2, 3, 4]</pre>",
          "polygon": [
            [
              86.2119140625,
              87.8818359375
            ],
            [
              175.3162078857422,
              87.8818359375
            ],
            [
              175.3162078857422,
              184.00830078125
            ],
            [
              86.2119140625,
              184.00830078125
            ]
          ],
          "bbox": [
            86.2119140625,
            87.8818359375,
            175.3162078857422,
            184.00830078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This difference is important when you write functions that are supposed to modify lists. For example, this function <i>does not</i> delete the head of a list:</p>",
          "polygon": [
            [
              86.2119140625,
              190.3623046875
            ],
            [
              482.4034118652344,
              190.3623046875
            ],
            [
              482.4034118652344,
              212.57489013671875
            ],
            [
              86.2119140625,
              212.57489013671875
            ]
          ],
          "bbox": [
            86.2119140625,
            190.3623046875,
            482.4034118652344,
            212.57489013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/TextInlineMath/3",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">def bad_delete_head(t): t = t[1:]  # WRONG!</p>",
          "polygon": [
            [
              86.40000915527344,
              217.529296875
            ],
            [
              269.4473571777344,
              217.529296875
            ],
            [
              269.4473571777344,
              240.84228515625
            ],
            [
              86.40000915527344,
              240.84228515625
            ]
          ],
          "bbox": [
            86.40000915527344,
            217.529296875,
            269.4473571777344,
            240.84228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The slice operator creates a new list and the assignment makes t refer to it, but none of that has any effect on the list that was passed as an argument.</p>",
          "polygon": [
            [
              85.763671875,
              246.33984375
            ],
            [
              482.3985595703125,
              246.33984375
            ],
            [
              482.3985595703125,
              269.40887451171875
            ],
            [
              85.763671875,
              269.40887451171875
            ]
          ],
          "bbox": [
            85.763671875,
            246.33984375,
            482.3985595703125,
            269.40887451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An alternative is to write a function that creates and returns a new list. For example, tail returns all but the first element of a list:</p>",
          "polygon": [
            [
              85.6142578125,
              279.404296875
            ],
            [
              482.4054870605469,
              279.404296875
            ],
            [
              482.4054870605469,
              301.7968444824219
            ],
            [
              85.6142578125,
              301.7968444824219
            ]
          ],
          "bbox": [
            85.6142578125,
            279.404296875,
            482.4054870605469,
            301.7968444824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/Code/6",
          "block_type": "Code",
          "html": "<pre>def tail(t):\n    return t[1:]</pre>",
          "polygon": [
            [
              86.4000244140625,
              306.28125
            ],
            [
              170.0803985595703,
              306.28125
            ],
            [
              170.0803985595703,
              330.2578125
            ],
            [
              86.4000244140625,
              330.2578125
            ]
          ],
          "bbox": [
            86.4000244140625,
            306.28125,
            170.0803985595703,
            330.2578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This function leaves the original list unmodified. Here's how it is used:</p>",
          "polygon": [
            [
              85.763671875,
              335.865234375
            ],
            [
              398.4983825683594,
              335.865234375
            ],
            [
              398.4983825683594,
              346.4358825683594
            ],
            [
              85.763671875,
              346.4358825683594
            ]
          ],
          "bbox": [
            85.763671875,
            335.865234375,
            398.4983825683594,
            346.4358825683594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; letters = ['a', 'b', 'c']\n&gt;&gt;&gt; rest = tail(letters)\n&gt;&gt;&gt; print rest\n['b', 'c']</pre>",
          "polygon": [
            [
              85.763671875,
              352.5467224121094
            ],
            [
              238.04542541503906,
              352.5467224121094
            ],
            [
              238.04542541503906,
              399.48046875
            ],
            [
              85.763671875,
              399.48046875
            ]
          ],
          "bbox": [
            85.763671875,
            352.5467224121094,
            238.04542541503906,
            399.48046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/116/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/117/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-117-0\"></span><b>10.13 Debugging</b></h4>",
          "polygon": [
            [
              85.53955078125,
              428.7527160644531
            ],
            [
              207.15200805664062,
              428.7527160644531
            ],
            [
              207.15200805664062,
              443.56640625
            ],
            [
              85.53955078125,
              443.56640625
            ]
          ],
          "bbox": [
            85.53955078125,
            428.7527160644531,
            207.15200805664062,
            443.56640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Careless use of lists (and other mutable objects) can lead to long hours of debugging. Here are some common pitfalls and ways to avoid them:</p>",
          "polygon": [
            [
              86.0625,
              455.5242919921875
            ],
            [
              482.40350341796875,
              455.5242919921875
            ],
            [
              482.40350341796875,
              477.6808776855469
            ],
            [
              86.0625,
              477.6808776855469
            ]
          ],
          "bbox": [
            86.0625,
            455.5242919921875,
            482.40350341796875,
            477.6808776855469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/ListItem/11",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">1. Don't forget that most list methods modify the argument and return None. This is the opposite of the string methods, which return a new string and leave the original alone.</li>",
          "polygon": [
            [
              98.314453125,
              491.1328125
            ],
            [
              482.607421875,
              491.1328125
            ],
            [
              482.607421875,
              526.3108825683594
            ],
            [
              98.314453125,
              526.3108825683594
            ]
          ],
          "bbox": [
            98.314453125,
            491.1328125,
            482.607421875,
            526.3108825683594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are used to writing string code like this:</p>",
          "polygon": [
            [
              109.74462890625,
              532.125
            ],
            [
              315.263671875,
              532.125
            ],
            [
              315.263671875,
              542.5378875732422
            ],
            [
              109.74462890625,
              542.5378875732422
            ]
          ],
          "bbox": [
            109.74462890625,
            532.125,
            315.263671875,
            542.5378875732422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/TextInlineMath/13",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">word = word.strip()</p>",
          "polygon": [
            [
              110.19287109375,
              552.62109375
            ],
            [
              210.6938934326172,
              552.62109375
            ],
            [
              210.6938934326172,
              562.663330078125
            ],
            [
              110.19287109375,
              562.663330078125
            ]
          ],
          "bbox": [
            110.19287109375,
            552.62109375,
            210.6938934326172,
            562.663330078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is tempting to write list code like this:</p>",
          "polygon": [
            [
              109.44580078125,
              572.73046875
            ],
            [
              286.27734375,
              572.73046875
            ],
            [
              286.27734375,
              583.0868835449219
            ],
            [
              109.44580078125,
              583.0868835449219
            ]
          ],
          "bbox": [
            109.44580078125,
            572.73046875,
            286.27734375,
            583.0868835449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/TextInlineMath/15",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">t = t.sort()  # WRONG!</p>",
          "polygon": [
            [
              111.3070068359375,
              593.2497253417969
            ],
            [
              273.4383544921875,
              593.2497253417969
            ],
            [
              273.4383544921875,
              603.28125
            ],
            [
              111.3070068359375,
              603.28125
            ]
          ],
          "bbox": [
            111.3070068359375,
            593.2497253417969,
            273.4383544921875,
            603.28125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Because sort returns None, the next operation you perform with t is likely to fail.</p>",
          "polygon": [
            [
              110.267578125,
              613.3359375
            ],
            [
              468.3831787109375,
              613.3359375
            ],
            [
              468.3831787109375,
              623.6358795166016
            ],
            [
              110.267578125,
              623.6358795166016
            ]
          ],
          "bbox": [
            110.267578125,
            613.3359375,
            468.3831787109375,
            623.6358795166016
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/117/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Before using list methods and operators, you should read the documentation carefully and then test them in interactive mode. The methods and operators that lists share with other sequences (like strings) are documented at <a href=\"http://docs.python.org/2/library/stdtypes.html#typesseq\">http://docs.python.</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#typesseq\">org/2/library/stdtypes.html#typesseq</a>. The methods and operators that only apply to mutable sequences are documented at <a href=\"http://docs.python.org/2/library/stdtypes.html#typesseq-mutable\">http://docs.python.org/2/library/</a> <a href=\"http://docs.python.org/2/library/stdtypes.html#typesseq-mutable\">stdtypes.html#typesseq-mutable</a>.</p>",
          "polygon": [
            [
              110.56640625,
              629.19140625
            ],
            [
              482.4609069824219,
              629.19140625
            ],
            [
              482.4609069824219,
              700.8348846435547
            ],
            [
              110.56640625,
              700.8348846435547
            ]
          ],
          "bbox": [
            110.56640625,
            629.19140625,
            482.4609069824219,
            700.8348846435547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/117/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/118/Page/215",
      "block_type": "Page",
      "html": "<content-ref src='/page/118/PageHeader/0'></content-ref><content-ref src='/page/118/PageHeader/22'></content-ref><content-ref src='/page/118/ListItem/1'></content-ref><content-ref src='/page/118/Text/2'></content-ref><content-ref src='/page/118/Text/3'></content-ref><content-ref src='/page/118/Code/187'></content-ref><content-ref src='/page/118/Text/5'></content-ref><content-ref src='/page/118/Table/6'></content-ref><content-ref src='/page/118/Text/7'></content-ref><content-ref src='/page/118/ListItem/8'></content-ref><content-ref src='/page/118/Text/9'></content-ref><content-ref src='/page/118/TextInlineMath/10'></content-ref><content-ref src='/page/118/Text/11'></content-ref><content-ref src='/page/118/SectionHeader/12'></content-ref><content-ref src='/page/118/Text/13'></content-ref><content-ref src='/page/118/Text/14'></content-ref><content-ref src='/page/118/Text/15'></content-ref><content-ref src='/page/118/Text/16'></content-ref><content-ref src='/page/118/Text/17'></content-ref><content-ref src='/page/118/ListGroup/188'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/118/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.60000610351562,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.60000610351562,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.60000610351562,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/PageHeader/22",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.58203125,
              61.1982421875
            ],
            [
              525.33984375,
              61.1982421875
            ],
            [
              525.33984375,
              70.4794921875
            ],
            [
              514.58203125,
              70.4794921875
            ]
          ],
          "bbox": [
            514.58203125,
            61.1982421875,
            525.33984375,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">2. Pick an idiom and stick with it.</li>",
          "polygon": [
            [
              141.943359375,
              88.4619140625
            ],
            [
              292.25390625,
              88.4619140625
            ],
            [
              292.25390625,
              98.79791259765625
            ],
            [
              141.943359375,
              98.79791259765625
            ]
          ],
          "bbox": [
            141.943359375,
            88.4619140625,
            292.25390625,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Part of the problem with lists is that there are too many ways to do things. For example, to remove an element from a list, you can use pop, remove, del, or even a slice assignment.</p>",
          "polygon": [
            [
              154.1953125,
              104.3173828125
            ],
            [
              525.6039428710938,
              104.3173828125
            ],
            [
              525.6039428710938,
              139.24383544921875
            ],
            [
              154.1953125,
              139.24383544921875
            ]
          ],
          "bbox": [
            154.1953125,
            104.3173828125,
            525.6039428710938,
            139.24383544921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To add an element, you can use the append method or the + operator. Assuming that t is a list and x is a list element, these are right:</p>",
          "polygon": [
            [
              153.59765625,
              144.7294921875
            ],
            [
              525.6051025390625,
              144.7294921875
            ],
            [
              525.6051025390625,
              167.496826171875
            ],
            [
              153.59765625,
              167.496826171875
            ]
          ],
          "bbox": [
            153.59765625,
            144.7294921875,
            525.6051025390625,
            167.496826171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/Code/187",
          "block_type": "Code",
          "html": "<pre>t.append(x)\nt = t + [x]</pre>",
          "polygon": [
            [
              154.1953125,
              176.95465087890625
            ],
            [
              212.16796875,
              176.95465087890625
            ],
            [
              212.16796875,
              199.1112060546875
            ],
            [
              154.1953125,
              199.1112060546875
            ]
          ],
          "bbox": [
            154.1953125,
            176.95465087890625,
            212.16796875,
            199.1112060546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And these are wrong:</p>",
          "polygon": [
            [
              153.298828125,
              208.8681640625
            ],
            [
              249.2713165283203,
              208.8681640625
            ],
            [
              249.2713165283203,
              218.8828125
            ],
            [
              153.298828125,
              218.8828125
            ]
          ],
          "bbox": [
            153.298828125,
            208.8681640625,
            249.2713165283203,
            218.8828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/Table/6",
          "block_type": "Table",
          "html": "<table><tbody><tr><td>t.append([x])</td><td></td><td># WRONG!</td></tr><tr><td>t = t.append(x)</td><td></td><td># WRONG!</td></tr><tr><td>t + [x]</td><td></td><td># WRONG!</td></tr><tr><td>t = t + x</td><td></td><td># WRONG!</td></tr></tbody></table>",
          "polygon": [
            [
              151.58056640625,
              227.197265625
            ],
            [
              318.849609375,
              227.197265625
            ],
            [
              318.849609375,
              274.834228515625
            ],
            [
              151.58056640625,
              274.834228515625
            ]
          ],
          "bbox": [
            151.58056640625,
            227.197265625,
            318.849609375,
            274.834228515625
          ],
          "children": [
            {
              "id": "/page/118/TableCell/201",
              "block_type": "TableCell",
              "html": "<td>t.append([x])</td>",
              "polygon": [
                [
                  151.58056640625,
                  227.197265625
                ],
                [
                  152.58056640625,
                  227.197265625
                ],
                [
                  152.58056640625,
                  228.197265625
                ],
                [
                  151.58056640625,
                  228.197265625
                ]
              ],
              "bbox": [
                151.58056640625,
                227.197265625,
                152.58056640625,
                228.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/202",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  152.58056640625,
                  227.197265625
                ],
                [
                  153.58056640625,
                  227.197265625
                ],
                [
                  153.58056640625,
                  228.197265625
                ],
                [
                  152.58056640625,
                  228.197265625
                ]
              ],
              "bbox": [
                152.58056640625,
                227.197265625,
                153.58056640625,
                228.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/203",
              "block_type": "TableCell",
              "html": "<td># WRONG!</td>",
              "polygon": [
                [
                  153.58056640625,
                  227.197265625
                ],
                [
                  154.58056640625,
                  227.197265625
                ],
                [
                  154.58056640625,
                  228.197265625
                ],
                [
                  153.58056640625,
                  228.197265625
                ]
              ],
              "bbox": [
                153.58056640625,
                227.197265625,
                154.58056640625,
                228.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/204",
              "block_type": "TableCell",
              "html": "<td>t = t.append(x)</td>",
              "polygon": [
                [
                  151.58056640625,
                  228.197265625
                ],
                [
                  152.58056640625,
                  228.197265625
                ],
                [
                  152.58056640625,
                  229.197265625
                ],
                [
                  151.58056640625,
                  229.197265625
                ]
              ],
              "bbox": [
                151.58056640625,
                228.197265625,
                152.58056640625,
                229.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/205",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  152.58056640625,
                  228.197265625
                ],
                [
                  153.58056640625,
                  228.197265625
                ],
                [
                  153.58056640625,
                  229.197265625
                ],
                [
                  152.58056640625,
                  229.197265625
                ]
              ],
              "bbox": [
                152.58056640625,
                228.197265625,
                153.58056640625,
                229.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/206",
              "block_type": "TableCell",
              "html": "<td># WRONG!</td>",
              "polygon": [
                [
                  153.58056640625,
                  228.197265625
                ],
                [
                  154.58056640625,
                  228.197265625
                ],
                [
                  154.58056640625,
                  229.197265625
                ],
                [
                  153.58056640625,
                  229.197265625
                ]
              ],
              "bbox": [
                153.58056640625,
                228.197265625,
                154.58056640625,
                229.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/207",
              "block_type": "TableCell",
              "html": "<td>t + [x]</td>",
              "polygon": [
                [
                  151.58056640625,
                  229.197265625
                ],
                [
                  152.58056640625,
                  229.197265625
                ],
                [
                  152.58056640625,
                  230.197265625
                ],
                [
                  151.58056640625,
                  230.197265625
                ]
              ],
              "bbox": [
                151.58056640625,
                229.197265625,
                152.58056640625,
                230.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/208",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  152.58056640625,
                  229.197265625
                ],
                [
                  153.58056640625,
                  229.197265625
                ],
                [
                  153.58056640625,
                  230.197265625
                ],
                [
                  152.58056640625,
                  230.197265625
                ]
              ],
              "bbox": [
                152.58056640625,
                229.197265625,
                153.58056640625,
                230.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/209",
              "block_type": "TableCell",
              "html": "<td># WRONG!</td>",
              "polygon": [
                [
                  153.58056640625,
                  229.197265625
                ],
                [
                  154.58056640625,
                  229.197265625
                ],
                [
                  154.58056640625,
                  230.197265625
                ],
                [
                  153.58056640625,
                  230.197265625
                ]
              ],
              "bbox": [
                153.58056640625,
                229.197265625,
                154.58056640625,
                230.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/210",
              "block_type": "TableCell",
              "html": "<td>t = t + x</td>",
              "polygon": [
                [
                  151.58056640625,
                  230.197265625
                ],
                [
                  152.58056640625,
                  230.197265625
                ],
                [
                  152.58056640625,
                  231.197265625
                ],
                [
                  151.58056640625,
                  231.197265625
                ]
              ],
              "bbox": [
                151.58056640625,
                230.197265625,
                152.58056640625,
                231.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/211",
              "block_type": "TableCell",
              "html": "<td></td>",
              "polygon": [
                [
                  152.58056640625,
                  230.197265625
                ],
                [
                  153.58056640625,
                  230.197265625
                ],
                [
                  153.58056640625,
                  231.197265625
                ],
                [
                  152.58056640625,
                  231.197265625
                ]
              ],
              "bbox": [
                152.58056640625,
                230.197265625,
                153.58056640625,
                231.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/118/TableCell/212",
              "block_type": "TableCell",
              "html": "<td># WRONG!</td>",
              "polygon": [
                [
                  153.58056640625,
                  230.197265625
                ],
                [
                  154.58056640625,
                  230.197265625
                ],
                [
                  154.58056640625,
                  231.197265625
                ],
                [
                  153.58056640625,
                  231.197265625
                ]
              ],
              "bbox": [
                153.58056640625,
                230.197265625,
                154.58056640625,
                231.197265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/117/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/118/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Try out each of these examples in interactive mode to make sure you understand what they do. Notice that only the last one causes a runtime error; the other three are legal, but they do the wrong thing.</p>",
          "polygon": [
            [
              153.7470703125,
              284.23828125
            ],
            [
              525.9375,
              284.23828125
            ],
            [
              525.9375,
              318.9427795410156
            ],
            [
              153.7470703125,
              318.9427795410156
            ]
          ],
          "bbox": [
            153.7470703125,
            284.23828125,
            525.9375,
            318.9427795410156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/ListItem/8",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">3. Make copies to avoid aliasing.</li>",
          "polygon": [
            [
              140.748046875,
              328.9021911621094
            ],
            [
              287.3675537109375,
              328.9021911621094
            ],
            [
              287.3675537109375,
              338.8647766113281
            ],
            [
              140.748046875,
              338.8647766113281
            ]
          ],
          "bbox": [
            140.748046875,
            328.9021911621094,
            287.3675537109375,
            338.8647766113281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you want to use a method like sort that modifies the argument, but you need to keep the original list as well, you can make a copy.</p>",
          "polygon": [
            [
              154.494140625,
              344.56640625
            ],
            [
              525.5958862304688,
              344.56640625
            ],
            [
              525.5958862304688,
              367.1167907714844
            ],
            [
              154.494140625,
              367.1167907714844
            ]
          ],
          "bbox": [
            154.494140625,
            344.56640625,
            525.5958862304688,
            367.1167907714844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/TextInlineMath/10",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">orig = t[:] t.sort()</p>",
          "polygon": [
            [
              153.1494140625,
              376.57464599609375
            ],
            [
              212.04107666015625,
              376.57464599609375
            ],
            [
              212.04107666015625,
              398.7312316894531
            ],
            [
              153.1494140625,
              398.7312316894531
            ]
          ],
          "bbox": [
            153.1494140625,
            376.57464599609375,
            212.04107666015625,
            398.7312316894531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this example you could also use the built-in function sorted, which returns a new, sorted list and leaves the original alone. But in that case you should avoid using sorted as a variable name!</p>",
          "polygon": [
            [
              154.50706481933594,
              407.98828125
            ],
            [
              525.6039428710938,
              407.98828125
            ],
            [
              525.6039428710938,
              442.8398132324219
            ],
            [
              154.50706481933594,
              442.8398132324219
            ]
          ],
          "bbox": [
            154.50706481933594,
            407.98828125,
            525.6039428710938,
            442.8398132324219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/117/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/118/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-118-0\"></span><b>10.14 Glossary</b></h4>",
          "polygon": [
            [
              129.2431640625,
              471.78265380859375
            ],
            [
              234.4306640625,
              471.78265380859375
            ],
            [
              234.4306640625,
              486.1288757324219
            ],
            [
              129.2431640625,
              486.1288757324219
            ]
          ],
          "bbox": [
            129.2431640625,
            471.78265380859375,
            234.4306640625,
            486.1288757324219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>list:</b> A sequence of values.</p>",
          "polygon": [
            [
              129.60008239746094,
              494.61328125
            ],
            [
              246.7801971435547,
              494.61328125
            ],
            [
              246.7801971435547,
              504.8818054199219
            ],
            [
              129.60008239746094,
              504.8818054199219
            ]
          ],
          "bbox": [
            129.60008239746094,
            494.61328125,
            246.7801971435547,
            504.8818054199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>element:</b> One of the values in a list (or other sequence), also called items.</p>",
          "polygon": [
            [
              129.60009765625,
              513.94921875
            ],
            [
              453.0234375,
              513.94921875
            ],
            [
              453.0234375,
              524.8027954101562
            ],
            [
              129.60009765625,
              524.8027954101562
            ]
          ],
          "bbox": [
            129.60009765625,
            513.94921875,
            453.0234375,
            524.8027954101562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>index:</b> An integer value that indicates an element in a list.</p>",
          "polygon": [
            [
              129.31787109375,
              534.6640930175781
            ],
            [
              385.6285400390625,
              534.6640930175781
            ],
            [
              385.6285400390625,
              544.7238006591797
            ],
            [
              129.31787109375,
              544.7238006591797
            ]
          ],
          "bbox": [
            129.31787109375,
            534.6640930175781,
            385.6285400390625,
            544.7238006591797
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>nested list:</b> A list that is an element of another list.</p>",
          "polygon": [
            [
              129.31787109375,
              554.5860900878906
            ],
            [
              353.48907470703125,
              554.5860900878906
            ],
            [
              353.48907470703125,
              564.6457977294922
            ],
            [
              129.31787109375,
              564.6457977294922
            ]
          ],
          "bbox": [
            129.31787109375,
            554.5860900878906,
            353.48907470703125,
            564.6457977294922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/118/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>list traversal:</b> The sequential accessing of each element in a list.</p>",
          "polygon": [
            [
              129.60009765625,
              574.5070953369141
            ],
            [
              409.5290832519531,
              574.5070953369141
            ],
            [
              409.5290832519531,
              584.5668029785156
            ],
            [
              129.60009765625,
              584.5668029785156
            ]
          ],
          "bbox": [
            129.60009765625,
            574.5070953369141,
            409.5290832519531,
            584.5668029785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/118/ListGroup/188",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/118/ListItem/18'></content-ref><content-ref src='/page/118/ListItem/19'></content-ref><content-ref src='/page/118/ListItem/20'></content-ref><content-ref src='/page/118/ListItem/21'></content-ref></ul></p>",
          "polygon": [
            [
              129.392578125,
              594.38671875
            ],
            [
              526.236328125,
              594.38671875
            ],
            [
              526.236328125,
              700.834831237793
            ],
            [
              129.392578125,
              700.834831237793
            ]
          ],
          "bbox": [
            129.392578125,
            594.38671875,
            526.236328125,
            700.834831237793
          ],
          "children": [
            {
              "id": "/page/118/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>mapping:</b> A relationship in which each element of one set corresponds to an element of another set. For example, a list is a mapping from indices to elements.</li>",
              "polygon": [
                [
                  129.392578125,
                  594.38671875
                ],
                [
                  526.236328125,
                  594.38671875
                ],
                [
                  526.236328125,
                  616.6828155517578
                ],
                [
                  129.392578125,
                  616.6828155517578
                ]
              ],
              "bbox": [
                129.392578125,
                594.38671875,
                526.236328125,
                616.6828155517578
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/118/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>accumulator:</b> A variable used in a loop to add up or accumulate a result.</li>",
              "polygon": [
                [
                  129.60011291503906,
                  626.484375
                ],
                [
                  450.87384033203125,
                  626.484375
                ],
                [
                  450.87384033203125,
                  636.6038208007812
                ],
                [
                  129.60011291503906,
                  636.6038208007812
                ]
              ],
              "bbox": [
                129.60011291503906,
                626.484375,
                450.87384033203125,
                636.6038208007812
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/118/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>augmented assignment:</b> A statement that updates the value of a variable using an operator like +=.</li>",
              "polygon": [
                [
                  129.60011291503906,
                  646.4651184082031
                ],
                [
                  525.603271484375,
                  646.4651184082031
                ],
                [
                  525.603271484375,
                  668.7198333740234
                ],
                [
                  129.60011291503906,
                  668.7198333740234
                ]
              ],
              "bbox": [
                129.60011291503906,
                646.4651184082031,
                525.603271484375,
                668.7198333740234
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/118/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>reduce:</b> A processing pattern that traverses a sequence and accumulates the elements into a single result.</li>",
              "polygon": [
                [
                  129.60009765625,
                  678.5811157226562
                ],
                [
                  525.6038208007812,
                  678.5811157226562
                ],
                [
                  525.6038208007812,
                  700.834831237793
                ],
                [
                  129.60009765625,
                  700.834831237793
                ]
              ],
              "bbox": [
                129.60009765625,
                678.5811157226562,
                525.6038208007812,
                700.834831237793
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/118/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/119/Page/293",
      "block_type": "Page",
      "html": "<content-ref src='/page/119/PageHeader/0'></content-ref><content-ref src='/page/119/PageHeader/19'></content-ref><content-ref src='/page/119/ListGroup/289'></content-ref><content-ref src='/page/119/Text/5'></content-ref><content-ref src='/page/119/Text/6'></content-ref><content-ref src='/page/119/Text/7'></content-ref><content-ref src='/page/119/Text/8'></content-ref><content-ref src='/page/119/SectionHeader/9'></content-ref><content-ref src='/page/119/Text/10'></content-ref><content-ref src='/page/119/Text/11'></content-ref><content-ref src='/page/119/Text/12'></content-ref><content-ref src='/page/119/ListGroup/290'></content-ref><content-ref src='/page/119/Text/15'></content-ref><content-ref src='/page/119/Text/16'></content-ref><content-ref src='/page/119/Text/17'></content-ref><content-ref src='/page/119/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/119/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              482.607421875,
              60.76318359375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/119/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              61.294921875
            ],
            [
              97.2685546875,
              61.294921875
            ],
            [
              97.2685546875,
              69.8994140625
            ],
            [
              85.763671875,
              69.8994140625
            ]
          ],
          "bbox": [
            85.763671875,
            61.294921875,
            97.2685546875,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/119/ListGroup/289",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/119/ListItem/1'></content-ref><content-ref src='/page/119/ListItem/2'></content-ref><content-ref src='/page/119/ListItem/3'></content-ref><content-ref src='/page/119/ListItem/4'></content-ref></ul></p>",
          "polygon": [
            [
              85.166015625,
              88.7381591796875
            ],
            [
              482.90625,
              88.7381591796875
            ],
            [
              482.90625,
              183.35589599609375
            ],
            [
              85.166015625,
              183.35589599609375
            ]
          ],
          "bbox": [
            85.166015625,
            88.7381591796875,
            482.90625,
            183.35589599609375
          ],
          "children": [
            {
              "id": "/page/119/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>map:</b> A processing pattern that traverses a sequence and performs an operation on each element.</li>",
              "polygon": [
                [
                  85.3154296875,
                  88.7381591796875
                ],
                [
                  482.90625,
                  88.7381591796875
                ],
                [
                  482.90625,
                  110.99188232421875
                ],
                [
                  85.3154296875,
                  110.99188232421875
                ]
              ],
              "bbox": [
                85.3154296875,
                88.7381591796875,
                482.90625,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/119/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>filter:</b> A processing pattern that traverses a list and selects the elements that satisfy some criterion.</li>",
              "polygon": [
                [
                  85.166015625,
                  120.849609375
                ],
                [
                  482.40338134765625,
                  120.849609375
                ],
                [
                  482.40338134765625,
                  143.24285888671875
                ],
                [
                  85.166015625,
                  143.24285888671875
                ]
              ],
              "bbox": [
                85.166015625,
                120.849609375,
                482.40338134765625,
                143.24285888671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/119/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>object:</b> Something a variable can refer to. An object has a type and a value.</li>",
              "polygon": [
                [
                  85.3154296875,
                  152.8505859375
                ],
                [
                  418.359375,
                  152.8505859375
                ],
                [
                  418.359375,
                  163.29888916015625
                ],
                [
                  85.3154296875,
                  163.29888916015625
                ]
              ],
              "bbox": [
                85.3154296875,
                152.8505859375,
                418.359375,
                163.29888916015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/119/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>equivalent:</b> Having the same value.</li>",
              "polygon": [
                [
                  85.166015625,
                  172.5732421875
                ],
                [
                  246.54864501953125,
                  172.5732421875
                ],
                [
                  246.54864501953125,
                  183.35589599609375
                ],
                [
                  85.166015625,
                  183.35589599609375
                ]
              ],
              "bbox": [
                85.166015625,
                172.5732421875,
                246.54864501953125,
                183.35589599609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/118/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/119/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>identical:</b> Being the same object (which implies equivalence).</p>",
          "polygon": [
            [
              85.0166015625,
              192.779296875
            ],
            [
              357.99609375,
              192.779296875
            ],
            [
              357.99609375,
              203.41192626953125
            ],
            [
              85.0166015625,
              203.41192626953125
            ]
          ],
          "bbox": [
            85.0166015625,
            192.779296875,
            357.99609375,
            203.41192626953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>reference:</b> The association between a variable and its value.</p>",
          "polygon": [
            [
              84.94189453125,
              213.08203125
            ],
            [
              350.38885498046875,
              213.08203125
            ],
            [
              350.38885498046875,
              223.46893310546875
            ],
            [
              84.94189453125,
              223.46893310546875
            ]
          ],
          "bbox": [
            84.94189453125,
            213.08203125,
            350.38885498046875,
            223.46893310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>aliasing:</b> A circumstance where two or more variables refer to the same object.</p>",
          "polygon": [
            [
              85.166015625,
              233.384765625
            ],
            [
              433.15826416015625,
              233.384765625
            ],
            [
              433.15826416015625,
              243.52496337890625
            ],
            [
              85.166015625,
              243.52496337890625
            ]
          ],
          "bbox": [
            85.166015625,
            233.384765625,
            433.15826416015625,
            243.52496337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>delimiter:</b> A character or string used to indicate where a string should be split.</p>",
          "polygon": [
            [
              85.166015625,
              253.494140625
            ],
            [
              434.483154296875,
              253.494140625
            ],
            [
              434.483154296875,
              263.58099365234375
            ],
            [
              85.166015625,
              263.58099365234375
            ]
          ],
          "bbox": [
            85.166015625,
            253.494140625,
            434.483154296875,
            263.58099365234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/118/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/119/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-119-0\"></span><b>10.15 Exercises</b></h4>",
          "polygon": [
            [
              85.6142578125,
              292.7458190917969
            ],
            [
              192.77706909179688,
              292.7458190917969
            ],
            [
              192.77706909179688,
              307.092041015625
            ],
            [
              85.6142578125,
              307.092041015625
            ]
          ],
          "bbox": [
            85.6142578125,
            292.7458190917969,
            192.77706909179688,
            307.092041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 10.6.</b> <i>Write a function called</i> is_sorted <i>that takes a list as a parameter and returns</i> True <i>if the list is sorted in ascending order and</i> False <i>otherwise. You can assume (as a precondition) that</i> <i>the elements of the list can be compared with the relational operators</i> &lt;<i>,</i> &gt;<i>, etc.</i></p>",
          "polygon": [
            [
              85.46484375,
              319.1387023925781
            ],
            [
              482.4054870605469,
              319.1387023925781
            ],
            [
              482.4054870605469,
              353.5124206542969
            ],
            [
              85.46484375,
              353.5124206542969
            ]
          ],
          "bbox": [
            85.46484375,
            319.1387023925781,
            482.4054870605469,
            353.5124206542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>For example,</i> is_sorted([1,2,2]) <i>should return</i> True <i>and</i> is_sorted(['b','a']) <i>should re</i><i>turn</i> False<i>.</i></p>",
          "polygon": [
            [
              85.6142578125,
              363.322265625
            ],
            [
              482.90625,
              363.322265625
            ],
            [
              482.90625,
              385.7174072265625
            ],
            [
              85.6142578125,
              385.7174072265625
            ]
          ],
          "bbox": [
            85.6142578125,
            363.322265625,
            482.90625,
            385.7174072265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-119-2\"></span><b>Exercise 10.7.</b> <i>Two words are anagrams if you can rearrange the letters from one to spell the other.</i> <i>Write a function called</i> is_anagram <i>that takes two strings and returns</i> True <i>if they are anagrams.</i> <b>Exercise 10.8.</b> <i>The (so-called) Birthday Paradox:</i></p>",
          "polygon": [
            [
              85.763671875,
              387.4921875
            ],
            [
              482.3988037109375,
              387.4921875
            ],
            [
              482.3988037109375,
              422.3528747558594
            ],
            [
              85.763671875,
              422.3528747558594
            ]
          ],
          "bbox": [
            85.763671875,
            387.4921875,
            482.3988037109375,
            422.3528747558594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/119/ListGroup/290",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/119/ListItem/13'></content-ref><content-ref src='/page/119/ListItem/14'></content-ref></ul></p>",
          "polygon": [
            [
              96.6708984375,
              435.4453125
            ],
            [
              482.90625,
              435.4453125
            ],
            [
              482.90625,
              514.9274291992188
            ],
            [
              96.6708984375,
              514.9274291992188
            ]
          ],
          "bbox": [
            96.6708984375,
            435.4453125,
            482.90625,
            514.9274291992188
          ],
          "children": [
            {
              "id": "/page/119/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write a function called</i> has_duplicates <i>that takes a list and returns</i> True <i>if there is any</i> <i>element that appears more than once. It should not modify the original list.</i></li>",
              "polygon": [
                [
                  98.015625,
                  435.4453125
                ],
                [
                  482.90625,
                  435.4453125
                ],
                [
                  482.90625,
                  458.2652893066406
                ],
                [
                  98.015625,
                  458.2652893066406
                ]
              ],
              "bbox": [
                98.015625,
                435.4453125,
                482.90625,
                458.2652893066406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/119/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/119/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. If there are 23 students in your class, what are the chances that two of you have the same</i> <i>birthday? You can estimate this probability by generating random samples of 23 birthdays and</i> <i>checking for matches. Hint: you can generate random birthdays with the</i> randint <i>function</i> <i>in the</i> random <i>module.</i></li>",
              "polygon": [
                [
                  96.6708984375,
                  468.31640625
                ],
                [
                  482.90625,
                  468.31640625
                ],
                [
                  482.90625,
                  514.9274291992188
                ],
                [
                  96.6708984375,
                  514.9274291992188
                ]
              ],
              "bbox": [
                96.6708984375,
                468.31640625,
                482.90625,
                514.9274291992188
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/119/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/119/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You can read about this problem at</i> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">//</a> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">Birthday_</a> <a href=\"http://en.wikipedia.org/wiki/Birthday_paradox\">paradox</a> <i>,</i> <i>and you can download my solution from</i> <a href=\"http://thinkpython.com/code/birthday.py\">http:</a> <a href=\"http://thinkpython.com/code/birthday.py\">//</a> <a href=\"http://thinkpython.com/code/birthday.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/birthday.py\">com/</a> <a href=\"http://thinkpython.com/code/birthday.py\">code/</a> <a href=\"http://thinkpython.com/code/birthday.py\">birthday.</a> <a href=\"http://thinkpython.com/code/birthday.py\">py</a> <i>.</i> <b>Exercise 10.9.</b> <i>Write a function called</i> remove_duplicates <i>that takes a list and returns a new</i> <i>list with only the unique elements from the original. Hint: they don't have to be in the same order.</i> <b>Exercise 10.10.</b> <i>Write a function that reads the file</i> words.txt <i>and builds a list with one element</i> <i>per word. Write two versions of this function, one using the</i> append <i>method and the other using</i> <i>the idiom</i> t = t + [x]<i>. Which one takes longer to run? Why?</i></p>",
          "polygon": [
            [
              85.166015625,
              528.6549987792969
            ],
            [
              483.802734375,
              528.6549987792969
            ],
            [
              483.802734375,
              611.8874664306641
            ],
            [
              85.166015625,
              611.8874664306641
            ]
          ],
          "bbox": [
            85.166015625,
            528.6549987792969,
            483.802734375,
            611.8874664306641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Hint: use the</i> time <i>module to measure elapsed time. Solution:</i> <a href=\"http://thinkpython.com/code/wordlist.py\">http:</a> <a href=\"http://thinkpython.com/code/wordlist.py\">//</a> <a href=\"http://thinkpython.com/code/wordlist.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/wordlist.py\">com/</a> <a href=\"http://thinkpython.com/code/wordlist.py\">code/</a> <a href=\"http://thinkpython.com/code/wordlist.py\">wordlist.</a> <a href=\"http://thinkpython.com/code/wordlist.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.6142578125,
              621.8310241699219
            ],
            [
              481.11328125,
              621.8310241699219
            ],
            [
              481.11328125,
              644.0693206787109
            ],
            [
              85.6142578125,
              644.0693206787109
            ]
          ],
          "bbox": [
            85.6142578125,
            621.8310241699219,
            481.11328125,
            644.0693206787109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-119-1\"></span><b>Exercise 10.11.</b> <i>To check whether a word is in the word list, you could use the</i> in <i>operator, but it</i> <i>would be slow because it searches through the words in order.</i></p>",
          "polygon": [
            [
              85.6142578125,
              646.3007202148438
            ],
            [
              483.50390625,
              646.3007202148438
            ],
            [
              483.50390625,
              668.4573287963867
            ],
            [
              85.6142578125,
              668.4573287963867
            ]
          ],
          "bbox": [
            85.6142578125,
            646.3007202148438,
            483.50390625,
            668.4573287963867
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/119/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\" class=\"has-continuation\"><i>Because the words are in alphabetical order, we can speed things up with a bisection search (also</i> <i>known as binary search), which is similar to what you do when you look a word up in the dictionary.</i></p>",
          "polygon": [
            [
              85.763671875,
              678.505729675293
            ],
            [
              483.205078125,
              678.505729675293
            ],
            [
              483.205078125,
              700.6623306274414
            ],
            [
              85.763671875,
              700.6623306274414
            ]
          ],
          "bbox": [
            85.763671875,
            678.505729675293,
            483.205078125,
            700.6623306274414
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/119/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/120/Page/137",
      "block_type": "Page",
      "html": "<content-ref src='/page/120/PageHeader/0'></content-ref><content-ref src='/page/120/PageHeader/9'></content-ref><content-ref src='/page/120/Text/1'></content-ref><content-ref src='/page/120/Text/2'></content-ref><content-ref src='/page/120/Text/3'></content-ref><content-ref src='/page/120/Text/4'></content-ref><content-ref src='/page/120/Text/5'></content-ref><content-ref src='/page/120/Text/6'></content-ref><content-ref src='/page/120/ListGroup/137'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/120/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.6455078125,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.6455078125,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/PageHeader/9",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              514.880859375,
              60.95654296875
            ],
            [
              525.638671875,
              60.95654296875
            ],
            [
              525.638671875,
              70.04443359375
            ],
            [
              514.880859375,
              70.04443359375
            ]
          ],
          "bbox": [
            514.880859375,
            60.95654296875,
            525.638671875,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You start in the middle and check to see whether the word you are looking for comes before the word</i> <i>in the middle of the list. If so, then you search the first half of the list the same way. Otherwise you</i> <i>search the second half.</i></p>",
          "polygon": [
            [
              128.49609375,
              88.66259765625
            ],
            [
              525.9375,
              88.66259765625
            ],
            [
              525.9375,
              123.01416015625
            ],
            [
              128.49609375,
              123.01416015625
            ]
          ],
          "bbox": [
            128.49609375,
            88.66259765625,
            525.9375,
            123.01416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Either way, you cut the remaining search space in half. If the word list has 113,809 words, it will</i> <i>take about 17 steps to find the word or conclude that it's not there.</i></p>",
          "polygon": [
            [
              128.0478515625,
              132.64453125
            ],
            [
              525.9375,
              132.64453125
            ],
            [
              525.9375,
              155.34515380859375
            ],
            [
              128.0478515625,
              155.34515380859375
            ]
          ],
          "bbox": [
            128.0478515625,
            132.64453125,
            525.9375,
            155.34515380859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a function called</i> bisect <i>that takes a sorted list and a target value and returns the index of</i> <i>the value in the list, if it's there, or</i> None <i>if it's not.</i></p>",
          "polygon": [
            [
              128.0478515625,
              165.0322265625
            ],
            [
              525.9375,
              165.0322265625
            ],
            [
              525.9375,
              187.7003173828125
            ],
            [
              128.0478515625,
              187.7003173828125
            ]
          ],
          "bbox": [
            128.0478515625,
            165.0322265625,
            525.9375,
            187.7003173828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Or you could read the documentation of the</i> bisect <i>module and use that! Solution:</i> <a href=\"http://thinkpython.com/code/inlist.py\">http:</a> <a href=\"http://thinkpython.com/code/inlist.py\">//</a> <a href=\"http://thinkpython.com/code/inlist.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/inlist.py\">com/</a> <a href=\"http://thinkpython.com/code/inlist.py\">code/</a> <a href=\"http://thinkpython.com/code/inlist.py\">inlist.</a> <a href=\"http://thinkpython.com/code/inlist.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.9443359375,
              197.7099609375
            ],
            [
              524.7421875,
              197.7099609375
            ],
            [
              524.7421875,
              220.00921630859375
            ],
            [
              128.9443359375,
              220.00921630859375
            ]
          ],
          "bbox": [
            128.9443359375,
            197.7099609375,
            524.7421875,
            220.00921630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 10.12.</b> <i>Two words are a \"reverse pair\" if each is the reverse of the other. Write a program</i> <i>that finds all the reverse pairs in the word list. Solution:</i> <a href=\"http://thinkpython.com/code/reverse_pair.py\">http:</a> <a href=\"http://thinkpython.com/code/reverse_pair.py\">//</a> <a href=\"http://thinkpython.com/code/reverse_pair.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/reverse_pair.py\">com/</a> <a href=\"http://thinkpython.com/code/reverse_pair.py\">code/</a> <a href=\"http://thinkpython.com/code/reverse_pair.py\">reverse_</a> <a href=\"http://thinkpython.com/code/reverse_pair.py\">pair.</a> <a href=\"http://thinkpython.com/code/reverse_pair.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.6455078125,
              221.58984375
            ],
            [
              525.6035766601562,
              221.58984375
            ],
            [
              525.6035766601562,
              256.5921630859375
            ],
            [
              128.6455078125,
              256.5921630859375
            ]
          ],
          "bbox": [
            128.6455078125,
            221.58984375,
            525.6035766601562,
            256.5921630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 10.13.</b> <i>Two words \"interlock\" if taking alternating letters from each forms a new</i> <i>word. For example, \"shoe\" and \"cold\" interlock to form \"schooled.\" Solution:</i> <a href=\"http://thinkpython.com/code/interlock.py\">http:</a> <a href=\"http://thinkpython.com/code/interlock.py\">//</a> <a href=\"http://thinkpython.com/code/interlock.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/interlock.py\">com/</a> <a href=\"http://thinkpython.com/code/interlock.py\">code/</a> <a href=\"http://thinkpython.com/code/interlock.py\">interlock.</a> <a href=\"http://thinkpython.com/code/interlock.py\">py</a> <i>. Credit: This exercise is inspired by an example at</i> <a href=\"http://puzzlers.org\">http:</a> <a href=\"http://puzzlers.org\">//</a> <a href=\"http://puzzlers.org\">puzzlers.</a> <a href=\"http://puzzlers.org\">org</a> <i>.</i></p>",
          "polygon": [
            [
              129.392578125,
              258.8236083984375
            ],
            [
              525.638671875,
              258.8236083984375
            ],
            [
              525.638671875,
              305.3691711425781
            ],
            [
              129.392578125,
              305.3691711425781
            ]
          ],
          "bbox": [
            129.392578125,
            258.8236083984375,
            525.638671875,
            305.3691711425781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/120/ListGroup/137",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/120/ListItem/7'></content-ref><content-ref src='/page/120/ListItem/8'></content-ref></ul></p>",
          "polygon": [
            [
              140.150390625,
              318.849609375
            ],
            [
              525.638671875,
              318.849609375
            ],
            [
              525.638671875,
              361.86419677734375
            ],
            [
              140.150390625,
              361.86419677734375
            ]
          ],
          "bbox": [
            140.150390625,
            318.849609375,
            525.638671875,
            361.86419677734375
          ],
          "children": [
            {
              "id": "/page/120/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write a program that finds all pairs of words that interlock. Hint: don't enumerate all pairs!</i></li>",
              "polygon": [
                [
                  140.8974609375,
                  318.849609375
                ],
                [
                  523.546875,
                  318.849609375
                ],
                [
                  523.546875,
                  329.50518798828125
                ],
                [
                  140.8974609375,
                  329.50518798828125
                ]
              ],
              "bbox": [
                140.8974609375,
                318.849609375,
                523.546875,
                329.50518798828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/119/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/120/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Can you find any words that are three-way interlocked; that is, every third letter forms a</i> <i>word, starting from the first, second or third?</i></li>",
              "polygon": [
                [
                  140.150390625,
                  339.70660400390625
                ],
                [
                  525.638671875,
                  339.70660400390625
                ],
                [
                  525.638671875,
                  361.86419677734375
                ],
                [
                  140.150390625,
                  361.86419677734375
                ]
              ],
              "bbox": [
                140.150390625,
                339.70660400390625,
                525.638671875,
                361.86419677734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/108/SectionHeader/1",
                "4": "/page/119/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/119/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/121/Page/3",
      "block_type": "Page",
      "html": "<content-ref src='/page/121/PageHeader/0'></content-ref><content-ref src='/page/121/PageHeader/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/121/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.69970703125
            ],
            [
              482.4033508300781,
              59.69970703125
            ],
            [
              482.4033508300781,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.69970703125,
            482.4033508300781,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/121/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.37646484375
            ],
            [
              100.92919921875,
              60.37646484375
            ],
            [
              100.92919921875,
              70.33447265625
            ],
            [
              85.53955078125,
              70.33447265625
            ]
          ],
          "bbox": [
            85.53955078125,
            60.37646484375,
            100.92919921875,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "4": "/page/119/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/108/SectionHeader/1",
        "4": "/page/119/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/122/Page/170",
      "block_type": "Page",
      "html": "<content-ref src='/page/122/SectionHeader/0'></content-ref><content-ref src='/page/122/SectionHeader/1'></content-ref><content-ref src='/page/122/Text/2'></content-ref><content-ref src='/page/122/Text/3'></content-ref><content-ref src='/page/122/Text/4'></content-ref><content-ref src='/page/122/Text/5'></content-ref><content-ref src='/page/122/Code/6'></content-ref><content-ref src='/page/122/Text/7'></content-ref><content-ref src='/page/122/Code/8'></content-ref><content-ref src='/page/122/Text/9'></content-ref><content-ref src='/page/122/Code/10'></content-ref><content-ref src='/page/122/Text/11'></content-ref><content-ref src='/page/122/Code/12'></content-ref><content-ref src='/page/122/Text/13'></content-ref><content-ref src='/page/122/Code/14'></content-ref><content-ref src='/page/122/Text/15'></content-ref><content-ref src='/page/122/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/122/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-122-0\"></span><b>Chapter 11</b></h2>",
          "polygon": [
            [
              128.794921875,
              162.1318359375
            ],
            [
              232.189453125,
              162.1318359375
            ],
            [
              232.189453125,
              183.33795166015625
            ],
            [
              128.794921875,
              183.33795166015625
            ]
          ],
          "bbox": [
            128.794921875,
            162.1318359375,
            232.189453125,
            183.33795166015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/108/SectionHeader/1",
            "2": "/page/122/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/122/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Dictionaries</b></h1>",
          "polygon": [
            [
              129.31787109375,
              216.5625
            ],
            [
              268.646484375,
              216.5625
            ],
            [
              268.646484375,
              241.371337890625
            ],
            [
              129.31787109375,
              241.371337890625
            ]
          ],
          "bbox": [
            129.31787109375,
            216.5625,
            268.646484375,
            241.371337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>dictionary</b> is like a list, but more general. In a list, the indices have to be integers; in a dictionary they can be (almost) any type.</p>",
          "polygon": [
            [
              128.9443359375,
              285.591796875
            ],
            [
              525.9375,
              285.591796875
            ],
            [
              525.9375,
              308.1558837890625
            ],
            [
              128.9443359375,
              308.1558837890625
            ]
          ],
          "bbox": [
            128.9443359375,
            285.591796875,
            525.9375,
            308.1558837890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can think of a dictionary as a mapping between a set of indices (which are called <b>keys</b>) and a set of values. Each key maps to a value. The association of a key and a value is called a <b>key-value pair</b> or sometimes an <b>item</b>.</p>",
          "polygon": [
            [
              128.9443359375,
              316.72265625
            ],
            [
              525.9375,
              316.72265625
            ],
            [
              525.9375,
              351.23590087890625
            ],
            [
              128.9443359375,
              351.23590087890625
            ]
          ],
          "bbox": [
            128.9443359375,
            316.72265625,
            525.9375,
            351.23590087890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As an example, we'll build a dictionary that maps from English to Spanish words, so the keys and the values are all strings.</p>",
          "polygon": [
            [
              129.09375,
              359.455078125
            ],
            [
              525.9375,
              359.455078125
            ],
            [
              525.9375,
              382.12091064453125
            ],
            [
              129.09375,
              382.12091064453125
            ]
          ],
          "bbox": [
            129.09375,
            359.455078125,
            525.9375,
            382.12091064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The function dict creates a new dictionary with no items. Because dict is the name of a built-in function, you should avoid using it as a variable name.</p>",
          "polygon": [
            [
              129.5419921875,
              390.69976806640625
            ],
            [
              525.9375,
              390.69976806640625
            ],
            [
              525.9375,
              413.0069274902344
            ],
            [
              129.5419921875,
              413.0069274902344
            ]
          ],
          "bbox": [
            129.5419921875,
            390.69976806640625,
            525.9375,
            413.0069274902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; eng2sp = dict()\n&gt;&gt;&gt; print eng2sp\n{}</pre>",
          "polygon": [
            [
              129.5419921875,
              417.61376953125
            ],
            [
              228.97686767578125,
              417.61376953125
            ],
            [
              228.97686767578125,
              451.9653625488281
            ],
            [
              129.5419921875,
              451.9653625488281
            ]
          ],
          "bbox": [
            129.5419921875,
            417.61376953125,
            228.97686767578125,
            451.9653625488281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The squiggly-brackets, {}, represent an empty dictionary. To add items to the dictionary, you can use square brackets:</p>",
          "polygon": [
            [
              129.59994506835938,
              456.7217712402344
            ],
            [
              525.60009765625,
              456.7217712402344
            ],
            [
              525.60009765625,
              479.0279235839844
            ],
            [
              129.59994506835938,
              479.0279235839844
            ]
          ],
          "bbox": [
            129.59994506835938,
            456.7217712402344,
            525.60009765625,
            479.0279235839844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; eng2sp['one'] = 'uno'</pre>",
          "polygon": [
            [
              129.2431640625,
              483.6357727050781
            ],
            [
              260.329345703125,
              483.6357727050781
            ],
            [
              260.329345703125,
              493.5983581542969
            ],
            [
              129.2431640625,
              493.5983581542969
            ]
          ],
          "bbox": [
            129.2431640625,
            483.6357727050781,
            260.329345703125,
            493.5983581542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This line creates an item that maps from the key 'one' to the value 'uno'. If we print the dictionary again, we see a key-value pair with a colon between the key and value:</p>",
          "polygon": [
            [
              129.392578125,
              498.09375
            ],
            [
              525.638671875,
              498.09375
            ],
            [
              525.638671875,
              520.6619262695312
            ],
            [
              129.392578125,
              520.6619262695312
            ]
          ],
          "bbox": [
            129.392578125,
            498.09375,
            525.638671875,
            520.6619262695312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print eng2sp\n{'one': 'uno'}</pre>",
          "polygon": [
            [
              128.9443359375,
              525.2687683105469
            ],
            [
              213.2858428955078,
              525.2687683105469
            ],
            [
              213.2858428955078,
              547.4253692626953
            ],
            [
              128.9443359375,
              547.4253692626953
            ]
          ],
          "bbox": [
            128.9443359375,
            525.2687683105469,
            213.2858428955078,
            547.4253692626953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This output format is also an input format. For example, you can create a new dictionary with three items:</p>",
          "polygon": [
            [
              128.0478515625,
              552.3323211669922
            ],
            [
              525.6033325195312,
              552.3323211669922
            ],
            [
              525.6033325195312,
              574.4889221191406
            ],
            [
              128.0478515625,
              574.4889221191406
            ]
          ],
          "bbox": [
            128.0478515625,
            552.3323211669922,
            525.6033325195312,
            574.4889221191406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; eng2sp = {'one': 'uno', 'two': 'dos', 'three': 'tres'}</pre>",
          "polygon": [
            [
              129.09375,
              579.0967712402344
            ],
            [
              434.49609375,
              579.0967712402344
            ],
            [
              434.49609375,
              595.93359375
            ],
            [
              129.09375,
              595.93359375
            ]
          ],
          "bbox": [
            129.09375,
            579.0967712402344,
            434.49609375,
            595.93359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you print eng2sp, you might be surprised:</p>",
          "polygon": [
            [
              129.2431640625,
              593.8157653808594
            ],
            [
              341.9150390625,
              593.8157653808594
            ],
            [
              341.9150390625,
              605.21484375
            ],
            [
              129.2431640625,
              605.21484375
            ]
          ],
          "bbox": [
            129.2431640625,
            593.8157653808594,
            341.9150390625,
            605.21484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print eng2sp\n{'one': 'uno', 'three': 'tres', 'two': 'dos'}</pre>",
          "polygon": [
            [
              129.16845703125,
              608.5357666015625
            ],
            [
              364.9114685058594,
              608.5357666015625
            ],
            [
              364.9114685058594,
              630.6923675537109
            ],
            [
              129.16845703125,
              630.6923675537109
            ]
          ],
          "bbox": [
            129.16845703125,
            608.5357666015625,
            364.9114685058594,
            630.6923675537109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The order of the key-value pairs is not the same. In fact, if you type the same example on your computer, you might get a different result. In general, the order of items in a dictionary is unpredictable.</p>",
          "polygon": [
            [
              129.2431640625,
              634.21875
            ],
            [
              525.9375,
              634.21875
            ],
            [
              525.9375,
              669.9499282836914
            ],
            [
              129.2431640625,
              669.9499282836914
            ]
          ],
          "bbox": [
            129.2431640625,
            634.21875,
            525.9375,
            669.9499282836914
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/122/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But that's not a problem because the elements of a dictionary are never indexed with integer indices. Instead, you use the keys to look up the corresponding values:</p>",
          "polygon": [
            [
              128.6455078125,
              677.91796875
            ],
            [
              525.603515625,
              677.91796875
            ],
            [
              525.603515625,
              700.8349304199219
            ],
            [
              128.6455078125,
              700.8349304199219
            ]
          ],
          "bbox": [
            128.6455078125,
            677.91796875,
            525.603515625,
            700.8349304199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/123/Page/215",
      "block_type": "Page",
      "html": "<content-ref src='/page/123/PageHeader/0'></content-ref><content-ref src='/page/123/PageHeader/18'></content-ref><content-ref src='/page/123/Code/1'></content-ref><content-ref src='/page/123/Text/2'></content-ref><content-ref src='/page/123/Text/3'></content-ref><content-ref src='/page/123/Code/4'></content-ref><content-ref src='/page/123/Text/5'></content-ref><content-ref src='/page/123/Code/6'></content-ref><content-ref src='/page/123/Text/7'></content-ref><content-ref src='/page/123/Code/8'></content-ref><content-ref src='/page/123/Text/9'></content-ref><content-ref src='/page/123/Code/10'></content-ref><content-ref src='/page/123/Text/11'></content-ref><content-ref src='/page/123/Text/12'></content-ref><content-ref src='/page/123/Text/13'></content-ref><content-ref src='/page/123/SectionHeader/14'></content-ref><content-ref src='/page/123/Text/15'></content-ref><content-ref src='/page/123/ListGroup/213'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/123/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              482.40338134765625,
              60.76318359375
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.9130859375,
              61.0048828125
            ],
            [
              101.900390625,
              61.0048828125
            ],
            [
              101.900390625,
              70.4794921875
            ],
            [
              85.9130859375,
              70.4794921875
            ]
          ],
          "bbox": [
            85.9130859375,
            61.0048828125,
            101.900390625,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print eng2sp['two']\n'dos'</pre>",
          "polygon": [
            [
              85.763671875,
              88.41357421875
            ],
            [
              206.6703643798828,
              88.41357421875
            ],
            [
              206.6703643798828,
              110.84228515625
            ],
            [
              85.763671875,
              110.84228515625
            ]
          ],
          "bbox": [
            85.763671875,
            88.41357421875,
            206.6703643798828,
            110.84228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The key 'two' always maps to the value 'dos' so the order of the items doesn't matter.</p>",
          "polygon": [
            [
              85.3154296875,
              117.7476806640625
            ],
            [
              469.84698486328125,
              117.7476806640625
            ],
            [
              469.84698486328125,
              127.85986328125
            ],
            [
              85.3154296875,
              127.85986328125
            ]
          ],
          "bbox": [
            85.3154296875,
            117.7476806640625,
            469.84698486328125,
            127.85986328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the key isn't in the dictionary, you get an exception:</p>",
          "polygon": [
            [
              85.46484375,
              138.638671875
            ],
            [
              322.03533935546875,
              138.638671875
            ],
            [
              322.03533935546875,
              148.69989013671875
            ],
            [
              85.46484375,
              148.69989013671875
            ]
          ],
          "bbox": [
            85.46484375,
            138.638671875,
            322.03533935546875,
            148.69989013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print eng2sp['four']\nKeyError: 'four'</pre>",
          "polygon": [
            [
              85.166015625,
              155.4547119140625
            ],
            [
              211.90037536621094,
              155.4547119140625
            ],
            [
              211.90037536621094,
              177.6123046875
            ],
            [
              85.166015625,
              177.6123046875
            ]
          ],
          "bbox": [
            85.166015625,
            155.4547119140625,
            211.90037536621094,
            177.6123046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The len function works on dictionaries; it returns the number of key-value pairs:</p>",
          "polygon": [
            [
              85.9130859375,
              184.5177001953125
            ],
            [
              441.6226501464844,
              184.5177001953125
            ],
            [
              441.6226501464844,
              194.6298828125
            ],
            [
              85.9130859375,
              194.6298828125
            ]
          ],
          "bbox": [
            85.9130859375,
            184.5177001953125,
            441.6226501464844,
            194.6298828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; len(eng2sp)\n3</pre>",
          "polygon": [
            [
              84.8671875,
              200.513671875
            ],
            [
              166.1484375,
              200.513671875
            ],
            [
              166.1484375,
              223.542236328125
            ],
            [
              84.8671875,
              223.542236328125
            ]
          ],
          "bbox": [
            84.8671875,
            200.513671875,
            166.1484375,
            223.542236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The in operator works on dictionaries; it tells you whether something appears as a <i>key</i> in the dictionary (appearing as a value is not good enough).</p>",
          "polygon": [
            [
              85.763671875,
              230.42449951171875
            ],
            [
              482.40032958984375,
              230.42449951171875
            ],
            [
              482.40032958984375,
              252.75384521484375
            ],
            [
              85.763671875,
              252.75384521484375
            ]
          ],
          "bbox": [
            85.763671875,
            230.42449951171875,
            482.40032958984375,
            252.75384521484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; 'one' in eng2sp\nTrue\n&gt;&gt;&gt; 'uno' in eng2sp\nFalse</pre>",
          "polygon": [
            [
              85.46484375,
              259.5096435546875
            ],
            [
              188.4111328125,
              259.5096435546875
            ],
            [
              188.4111328125,
              306.0552673339844
            ],
            [
              85.46484375,
              306.0552673339844
            ]
          ],
          "bbox": [
            85.46484375,
            259.5096435546875,
            188.4111328125,
            306.0552673339844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To see whether something appears as a value in a dictionary, you can use the method values, which returns the values as a list, and then use the in operator:</p>",
          "polygon": [
            [
              85.9130859375,
              313.048828125
            ],
            [
              482.4034423828125,
              313.048828125
            ],
            [
              482.4034423828125,
              335.266845703125
            ],
            [
              85.9130859375,
              335.266845703125
            ]
          ],
          "bbox": [
            85.9130859375,
            313.048828125,
            482.4034423828125,
            335.266845703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; vals = eng2sp.values()\n&gt;&gt;&gt; 'uno' in vals\nTrue</pre>",
          "polygon": [
            [
              85.3154296875,
              342.022705078125
            ],
            [
              222.3994140625,
              342.022705078125
            ],
            [
              222.3994140625,
              376.3742980957031
            ],
            [
              85.3154296875,
              376.3742980957031
            ]
          ],
          "bbox": [
            85.3154296875,
            342.022705078125,
            222.3994140625,
            376.3742980957031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The in operator uses different algorithms for lists and dictionaries. For lists, it uses a search algorithm, as in Section <a href=\"#page-95-1\">8.6.</a> As the list gets longer, the search time gets longer in direct proportion. For dictionaries, Python uses an algorithm called a <b>hashtable</b> that has a remarkable property: the in operator takes about the same amount of time no matter how many items there are in a dictionary. I won't explain how that's possible, but you can read more about it at <a href=\"http://en.wikipedia.org/wiki/Hash_table\">http://en.wikipedia.org/wiki/Hash_table</a>.</p>",
          "polygon": [
            [
              85.46484375,
              383.27972412109375
            ],
            [
              482.607421875,
              383.27972412109375
            ],
            [
              482.607421875,
              454.39453125
            ],
            [
              85.46484375,
              454.39453125
            ]
          ],
          "bbox": [
            85.46484375,
            383.27972412109375,
            482.607421875,
            454.39453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-123-1\"></span><b>Exercise 11.1.</b> <i>Write a function that reads the words in</i> words.txt <i>and stores them as keys in a</i> <i>dictionary. It doesn't matter what the values are. Then you can use the</i> in <i>operator as a fast way to</i> <i>check whether a string is in the dictionary.</i></p>",
          "polygon": [
            [
              85.6142578125,
              456.422607421875
            ],
            [
              482.40447998046875,
              456.422607421875
            ],
            [
              482.40447998046875,
              490.773193359375
            ],
            [
              85.6142578125,
              490.773193359375
            ]
          ],
          "bbox": [
            85.6142578125,
            456.422607421875,
            482.40447998046875,
            490.773193359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If you did Exercise </i><i><a href=\"#page-119-1\">10.11,</a></i><i> you can compare the speed of this implementation with the list</i> in <i>operator</i> <i>and the bisection search.</i></p>",
          "polygon": [
            [
              85.763671875,
              501.6506042480469
            ],
            [
              482.400390625,
              501.6506042480469
            ],
            [
              482.400390625,
              523.8071899414062
            ],
            [
              85.763671875,
              523.8071899414062
            ]
          ],
          "bbox": [
            85.763671875,
            501.6506042480469,
            482.400390625,
            523.8071899414062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/123/SectionHeader/14",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-123-0\"></span><b>11.1 Dictionary as a set of counters</b></h4>",
          "polygon": [
            [
              85.46484375,
              555.328125
            ],
            [
              322.28021240234375,
              555.328125
            ],
            [
              322.28021240234375,
              569.7739410400391
            ],
            [
              85.46484375,
              569.7739410400391
            ]
          ],
          "bbox": [
            85.46484375,
            555.328125,
            322.28021240234375,
            569.7739410400391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/123/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Suppose you are given a string and you want to count how many times each letter appears. There are several ways you could do it:</p>",
          "polygon": [
            [
              85.166015625,
              583.1022796630859
            ],
            [
              482.40338134765625,
              583.1022796630859
            ],
            [
              482.40338134765625,
              605.2588806152344
            ],
            [
              85.166015625,
              605.2588806152344
            ]
          ],
          "bbox": [
            85.166015625,
            583.1022796630859,
            482.40338134765625,
            605.2588806152344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/123/ListGroup/213",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/123/ListItem/16'></content-ref><content-ref src='/page/123/ListItem/17'></content-ref></ul></p>",
          "polygon": [
            [
              98.314453125,
              620.296875
            ],
            [
              482.40386962890625,
              620.296875
            ],
            [
              482.40386962890625,
              700.8348922729492
            ],
            [
              98.314453125,
              700.8348922729492
            ]
          ],
          "bbox": [
            98.314453125,
            620.296875,
            482.40386962890625,
            700.8348922729492
          ],
          "children": [
            {
              "id": "/page/123/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">1. You could create 26 variables, one for each letter of the alphabet. Then you could traverse the string and, for each character, increment the corresponding counter, probably using a chained conditional.</li>",
              "polygon": [
                [
                  98.61328125,
                  620.296875
                ],
                [
                  482.40386962890625,
                  620.296875
                ],
                [
                  482.40386962890625,
                  655.0848846435547
                ],
                [
                  98.61328125,
                  655.0848846435547
                ]
              ],
              "bbox": [
                98.61328125,
                620.296875,
                482.40386962890625,
                655.0848846435547
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/123/SectionHeader/14"
              },
              "images": {}
            },
            {
              "id": "/page/123/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. You could create a list with 26 elements. Then you could convert each character to a number (using the built-in function ord), use the number as an index into the list, and increment the appropriate counter.</li>",
              "polygon": [
                [
                  98.314453125,
                  666.31640625
                ],
                [
                  482.4033203125,
                  666.31640625
                ],
                [
                  482.4033203125,
                  700.8348922729492
                ],
                [
                  98.314453125,
                  700.8348922729492
                ]
              ],
              "bbox": [
                98.314453125,
                666.31640625,
                482.4033203125,
                700.8348922729492
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/123/SectionHeader/14"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/123/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/124/Page/231",
      "block_type": "Page",
      "html": "<content-ref src='/page/124/PageHeader/0'></content-ref><content-ref src='/page/124/PageHeader/16'></content-ref><content-ref src='/page/124/ListItem/1'></content-ref><content-ref src='/page/124/Text/2'></content-ref><content-ref src='/page/124/Text/3'></content-ref><content-ref src='/page/124/Text/4'></content-ref><content-ref src='/page/124/Code/5'></content-ref><content-ref src='/page/124/Text/6'></content-ref><content-ref src='/page/124/Text/7'></content-ref><content-ref src='/page/124/Text/8'></content-ref><content-ref src='/page/124/Code/9'></content-ref><content-ref src='/page/124/Text/10'></content-ref><content-ref src='/page/124/Text/11'></content-ref><content-ref src='/page/124/Code/12'></content-ref><content-ref src='/page/124/Text/13'></content-ref><content-ref src='/page/124/SectionHeader/14'></content-ref><content-ref src='/page/124/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/124/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              60.71484375
            ],
            [
              525.6033935546875,
              60.71484375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            60.71484375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.85986328125
            ],
            [
              525.9375,
              60.85986328125
            ],
            [
              525.9375,
              70.33447265625
            ],
            [
              509.80078125,
              70.33447265625
            ]
          ],
          "bbox": [
            509.80078125,
            60.85986328125,
            525.9375,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">3. You could create a dictionary with characters as keys and counters as the corresponding values. The first time you see a character, you would add an item to the dictionary. After that you would increment the value of an existing item.</li>",
          "polygon": [
            [
              141.1962890625,
              87.93017578125
            ],
            [
              525.6039428710938,
              87.93017578125
            ],
            [
              525.6039428710938,
              123.1868896484375
            ],
            [
              141.1962890625,
              123.1868896484375
            ]
          ],
          "bbox": [
            141.1962890625,
            87.93017578125,
            525.6039428710938,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each of these options performs the same computation, but each of them implements that computation in a different way.</p>",
          "polygon": [
            [
              127.599609375,
              130.6142578125
            ],
            [
              525.638671875,
              130.6142578125
            ],
            [
              525.638671875,
              153.87994384765625
            ],
            [
              127.599609375,
              153.87994384765625
            ]
          ],
          "bbox": [
            127.599609375,
            130.6142578125,
            525.638671875,
            153.87994384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An <b>implementation</b> is a way of performing a computation; some implementations are better than others. For example, an advantage of the dictionary implementation is that we don't have to know ahead of time which letters appear in the string and we only have to make room for the letters that do appear.</p>",
          "polygon": [
            [
              127.8984375,
              161.1650390625
            ],
            [
              525.9375,
              161.1650390625
            ],
            [
              525.9375,
              208.51702880859375
            ],
            [
              127.8984375,
              208.51702880859375
            ]
          ],
          "bbox": [
            127.8984375,
            161.1650390625,
            525.9375,
            208.51702880859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is what the code might look like:</p>",
          "polygon": [
            [
              128.197265625,
              215.7890625
            ],
            [
              296.82220458984375,
              215.7890625
            ],
            [
              296.82220458984375,
              226.571044921875
            ],
            [
              128.197265625,
              226.571044921875
            ]
          ],
          "bbox": [
            128.197265625,
            215.7890625,
            296.82220458984375,
            226.571044921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Code/5",
          "block_type": "Code",
          "html": "<pre>def histogram(s):\n    d = dict()\n    for c in s:\n        if c not in d:\n             d[c] = 1\n        else:\n             d[c] += 1\n    return d</pre>",
          "polygon": [
            [
              129.60000610351562,
              230.5418701171875
            ],
            [
              249.8203125,
              230.5418701171875
            ],
            [
              249.8203125,
              325.8645324707031
            ],
            [
              129.60000610351562,
              325.8645324707031
            ]
          ],
          "bbox": [
            129.60000610351562,
            230.5418701171875,
            249.8203125,
            325.8645324707031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The name of the function is <b>histogram</b>, which is a statistical term for a set of counters (or frequencies).</p>",
          "polygon": [
            [
              129.6000213623047,
              330.0373840332031
            ],
            [
              525.9375,
              330.0373840332031
            ],
            [
              525.9375,
              352.2911071777344
            ],
            [
              129.6000213623047,
              352.2911071777344
            ]
          ],
          "bbox": [
            129.6000213623047,
            330.0373840332031,
            525.9375,
            352.2911071777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line of the function creates an empty dictionary. The for loop traverses the string. Each time through the loop, if the character c is not in the dictionary, we create a new item with key c and the initial value 1 (since we have seen this letter once). If c is already in the dictionary we increment d[c].</p>",
          "polygon": [
            [
              128.3466796875,
              359.841796875
            ],
            [
              525.6044921875,
              359.841796875
            ],
            [
              525.6044921875,
              406.9281005859375
            ],
            [
              128.3466796875,
              406.9281005859375
            ]
          ],
          "bbox": [
            128.3466796875,
            359.841796875,
            525.6044921875,
            406.9281005859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's how it works:</p>",
          "polygon": [
            [
              128.6455078125,
              414.94921875
            ],
            [
              223.3740234375,
              414.94921875
            ],
            [
              223.3740234375,
              424.9820861816406
            ],
            [
              128.6455078125,
              424.9820861816406
            ]
          ],
          "bbox": [
            128.6455078125,
            414.94921875,
            223.3740234375,
            424.9820861816406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; h = histogram('brontosaurus')\n&gt;&gt;&gt; print h\n{'a': 1, 'b': 1, 'o': 2, 'n': 1, 's': 2, 'r': 2, 'u': 2, 't': 1}</pre>",
          "polygon": [
            [
              129.59996032714844,
              427.7109375
            ],
            [
              476.9296875,
              427.7109375
            ],
            [
              476.9296875,
              468.703125
            ],
            [
              129.59996032714844,
              468.703125
            ]
          ],
          "bbox": [
            129.59996032714844,
            427.7109375,
            476.9296875,
            468.703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The histogram indicates that the letters 'a' and 'b' appear once; 'o' appears twice, and so on.</p>",
          "polygon": [
            [
              128.794921875,
              467.4239501953125
            ],
            [
              525.6051635742188,
              467.4239501953125
            ],
            [
              525.6051635742188,
              489.97265625
            ],
            [
              128.794921875,
              489.97265625
            ]
          ],
          "bbox": [
            128.794921875,
            467.4239501953125,
            525.6051635742188,
            489.97265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.2.</b> <i>Dictionaries have a method called</i> get <i>that takes a key and a default value. If the</i> <i>key appears in the dictionary,</i> get <i>returns the corresponding value; otherwise it returns the default</i> <i>value. For example:</i></p>",
          "polygon": [
            [
              129.2431640625,
              491.51953125
            ],
            [
              525.6024169921875,
              491.51953125
            ],
            [
              525.6024169921875,
              526.1414184570312
            ],
            [
              129.2431640625,
              526.1414184570312
            ]
          ],
          "bbox": [
            129.2431640625,
            491.51953125,
            525.6024169921875,
            526.1414184570312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; h = histogram('a')\n&gt;&gt;&gt; print h\n{'a': 1}\n&gt;&gt;&gt; h.get('a', 0)\n1\n&gt;&gt;&gt; h.get('b', 0)\n0</pre>",
          "polygon": [
            [
              129.60009765625,
              530.2839660644531
            ],
            [
              244.64146423339844,
              530.2839660644531
            ],
            [
              244.64146423339844,
              613.4125823974609
            ],
            [
              129.60009765625,
              613.4125823974609
            ]
          ],
          "bbox": [
            129.60009765625,
            530.2839660644531,
            244.64146423339844,
            613.4125823974609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Use</i> get <i>to write</i> histogram <i>more concisely. You should be able to eliminate the</i> if <i>statement.</i></p>",
          "polygon": [
            [
              128.794921875,
              616.4296875
            ],
            [
              508.27825927734375,
              616.4296875
            ],
            [
              508.27825927734375,
              627.4955902099609
            ],
            [
              128.794921875,
              627.4955902099609
            ]
          ],
          "bbox": [
            128.794921875,
            616.4296875,
            508.27825927734375,
            627.4955902099609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/123/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/SectionHeader/14",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-124-0\"></span><b>11.2 Looping and dictionaries</b></h4>",
          "polygon": [
            [
              127.4501953125,
              653.94140625
            ],
            [
              333.2156982421875,
              653.94140625
            ],
            [
              333.2156982421875,
              668.4161911010742
            ],
            [
              127.4501953125,
              668.4161911010742
            ]
          ],
          "bbox": [
            127.4501953125,
            653.94140625,
            333.2156982421875,
            668.4161911010742
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/124/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you use a dictionary in a for statement, it traverses the keys of the dictionary. For example, print_hist prints each key and the corresponding value:</p>",
          "polygon": [
            [
              128.197265625,
              678.3046875
            ],
            [
              525.5980834960938,
              678.3046875
            ],
            [
              525.5980834960938,
              700.8351440429688
            ],
            [
              128.197265625,
              700.8351440429688
            ]
          ],
          "bbox": [
            128.197265625,
            678.3046875,
            525.5980834960938,
            700.8351440429688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/124/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/125/Page/192",
      "block_type": "Page",
      "html": "<content-ref src='/page/125/PageHeader/0'></content-ref><content-ref src='/page/125/TextInlineMath/1'></content-ref><content-ref src='/page/125/Text/2'></content-ref><content-ref src='/page/125/Code/3'></content-ref><content-ref src='/page/125/Text/4'></content-ref><content-ref src='/page/125/Text/5'></content-ref><content-ref src='/page/125/Text/6'></content-ref><content-ref src='/page/125/SectionHeader/7'></content-ref><content-ref src='/page/125/Text/8'></content-ref><content-ref src='/page/125/Text/9'></content-ref><content-ref src='/page/125/Text/10'></content-ref><content-ref src='/page/125/Code/11'></content-ref><content-ref src='/page/125/Text/12'></content-ref><content-ref src='/page/125/Text/13'></content-ref><content-ref src='/page/125/Text/14'></content-ref><content-ref src='/page/125/Code/15'></content-ref><content-ref src='/page/125/Text/16'></content-ref><content-ref src='/page/125/Text/188'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/125/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.521484375
            ],
            [
              482.40338134765625,
              60.521484375
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.521484375,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/125/TextInlineMath/1",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">def print_hist(h): for c in h: print c, h[c]</p>",
          "polygon": [
            [
              86.4000015258789,
              88.68572998046875
            ],
            [
              196.22775268554688,
              88.68572998046875
            ],
            [
              196.22775268554688,
              123.03729248046875
            ],
            [
              86.4000015258789,
              123.03729248046875
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.68572998046875,
            196.22775268554688,
            123.03729248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's what the output looks like:</p>",
          "polygon": [
            [
              85.9130859375,
              129.744140625
            ],
            [
              237.1201171875,
              129.744140625
            ],
            [
              237.1201171875,
              140.40887451171875
            ],
            [
              85.9130859375,
              140.40887451171875
            ]
          ],
          "bbox": [
            85.9130859375,
            129.744140625,
            237.1201171875,
            140.40887451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/125/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; h = histogram('parrot')\n&gt;&gt;&gt; print_hist(h)\na 1\np 1\nr 2\nt 1\no 1</pre>",
          "polygon": [
            [
              85.763671875,
              147.51971435546875
            ],
            [
              227.58737182617188,
              147.51971435546875
            ],
            [
              227.58737182617188,
              231.064453125
            ],
            [
              85.763671875,
              231.064453125
            ]
          ],
          "bbox": [
            85.763671875,
            147.51971435546875,
            227.58737182617188,
            231.064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Again, the keys are in no particular order.</p>",
          "polygon": [
            [
              85.68896484375,
              237.05859375
            ],
            [
              269.6719970703125,
              237.05859375
            ],
            [
              269.6719970703125,
              248.02093505859375
            ],
            [
              85.68896484375,
              248.02093505859375
            ]
          ],
          "bbox": [
            85.68896484375,
            237.05859375,
            269.6719970703125,
            248.02093505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.3.</b> <i>Dictionaries have a method called</i> keys <i>that returns the keys of the dictionary, in</i> <i>no particular order, as a list.</i></p>",
          "polygon": [
            [
              85.9130859375,
              249.046875
            ],
            [
              482.39501953125,
              249.046875
            ],
            [
              482.39501953125,
              272.2371826171875
            ],
            [
              85.9130859375,
              272.2371826171875
            ]
          ],
          "bbox": [
            85.9130859375,
            249.046875,
            482.39501953125,
            272.2371826171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Modify</i> print_hist <i>to print the keys and their values in alphabetical order.</i></p>",
          "polygon": [
            [
              85.6142578125,
              283.078125
            ],
            [
              390.69482421875,
              283.078125
            ],
            [
              390.69482421875,
              293.4543151855469
            ],
            [
              85.6142578125,
              293.4543151855469
            ]
          ],
          "bbox": [
            85.6142578125,
            283.078125,
            390.69482421875,
            293.4543151855469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/124/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/125/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-125-0\"></span><b>11.3 Reverse lookup</b></h4>",
          "polygon": [
            [
              85.39013671875,
              326.1167297363281
            ],
            [
              228.26959228515625,
              326.1167297363281
            ],
            [
              228.26959228515625,
              340.46295166015625
            ],
            [
              85.39013671875,
              340.46295166015625
            ]
          ],
          "bbox": [
            85.39013671875,
            326.1167297363281,
            228.26959228515625,
            340.46295166015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Given a dictionary d and a key k, it is easy to find the corresponding value v = d[k]. This operation is called a <b>lookup</b>.</p>",
          "polygon": [
            [
              85.6142578125,
              354.041015625
            ],
            [
              482.90625,
              354.041015625
            ],
            [
              482.90625,
              376.4458923339844
            ],
            [
              85.6142578125,
              376.4458923339844
            ]
          ],
          "bbox": [
            85.6142578125,
            354.041015625,
            482.90625,
            376.4458923339844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But what if you have v and you want to find k? You have two problems: first, there might be more than one key that maps to the value v. Depending on the application, you might be able to pick one, or you might have to make a list that contains all of them. Second, there is no simple syntax to do a <b>reverse lookup</b>; you have to search.</p>",
          "polygon": [
            [
              85.46484375,
              387.10546875
            ],
            [
              482.607421875,
              387.10546875
            ],
            [
              482.607421875,
              434.222900390625
            ],
            [
              85.46484375,
              434.222900390625
            ]
          ],
          "bbox": [
            85.46484375,
            387.10546875,
            482.607421875,
            434.222900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a function that takes a value and returns the first key that maps to that value:</p>",
          "polygon": [
            [
              85.3154296875,
              444.7265625
            ],
            [
              458.3935852050781,
              444.7265625
            ],
            [
              458.3935852050781,
              455.4169006347656
            ],
            [
              85.3154296875,
              455.4169006347656
            ]
          ],
          "bbox": [
            85.3154296875,
            444.7265625,
            458.3935852050781,
            455.4169006347656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Code/11",
          "block_type": "Code",
          "html": "<pre>def reverse_lookup(d, v):\n    for k in d:\n        if d[k] == v:\n            return k\n    raise ValueError</pre>",
          "polygon": [
            [
              84.4189453125,
              462.5277404785156
            ],
            [
              218.7421875,
              462.5277404785156
            ],
            [
              218.7421875,
              521.2683410644531
            ],
            [
              84.4189453125,
              521.2683410644531
            ]
          ],
          "bbox": [
            84.4189453125,
            462.5277404785156,
            218.7421875,
            521.2683410644531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This function is yet another example of the search pattern, but it uses a feature we haven't seen before, raise. The raise statement causes an exception; in this case it causes a ValueError, which generally indicates that there is something wrong with the value of a parameter.</p>",
          "polygon": [
            [
              85.46484375,
              528.2578125
            ],
            [
              483.205078125,
              528.2578125
            ],
            [
              483.205078125,
              575.2229309082031
            ],
            [
              85.46484375,
              575.2229309082031
            ]
          ],
          "bbox": [
            85.46484375,
            528.2578125,
            483.205078125,
            575.2229309082031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we get to the end of the loop, that means v doesn't appear in the dictionary as a value, so we raise an exception.</p>",
          "polygon": [
            [
              85.3154296875,
              586.265625
            ],
            [
              482.90625,
              586.265625
            ],
            [
              482.90625,
              608.6119384765625
            ],
            [
              85.3154296875,
              608.6119384765625
            ]
          ],
          "bbox": [
            85.3154296875,
            586.265625,
            482.90625,
            608.6119384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an example of a successful reverse lookup:</p>",
          "polygon": [
            [
              85.39013671875,
              618.75
            ],
            [
              307.494140625,
              618.75
            ],
            [
              307.494140625,
              629.8069458007812
            ],
            [
              85.39013671875,
              629.8069458007812
            ]
          ],
          "bbox": [
            85.39013671875,
            618.75,
            307.494140625,
            629.8069458007812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Code/15",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; h = histogram('parrot')\n&gt;&gt;&gt; k = reverse_lookup(h, 2)\n&gt;&gt;&gt; print k\nr</pre>",
          "polygon": [
            [
              85.6142578125,
              636.9167938232422
            ],
            [
              232.86021423339844,
              636.9167938232422
            ],
            [
              232.86021423339844,
              683.4623947143555
            ],
            [
              85.6142578125,
              683.4623947143555
            ]
          ],
          "bbox": [
            85.6142578125,
            636.9167938232422,
            232.86021423339844,
            683.4623947143555
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And an unsuccessful one:</p>",
          "polygon": [
            [
              85.9130859375,
              690.6796875
            ],
            [
              199.318359375,
              690.6796875
            ],
            [
              199.318359375,
              700.8349609375
            ],
            [
              85.9130859375,
              700.8349609375
            ]
          ],
          "bbox": [
            85.9130859375,
            690.6796875,
            199.318359375,
            700.8349609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/125/Text/188",
          "block_type": "Text",
          "html": "<p>104</p>\n",
          "polygon": [
            [
              84.8671875,
              60.134765625
            ],
            [
              100.5556640625,
              60.134765625
            ],
            [
              100.5556640625,
              69.029296875
            ],
            [
              84.8671875,
              69.029296875
            ]
          ],
          "bbox": [
            84.8671875,
            60.134765625,
            100.5556640625,
            69.029296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/125/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/126/Page/195",
      "block_type": "Page",
      "html": "<content-ref src='/page/126/PageHeader/0'></content-ref><content-ref src='/page/126/PageHeader/14'></content-ref><content-ref src='/page/126/Code/1'></content-ref><content-ref src='/page/126/Text/2'></content-ref><content-ref src='/page/126/Text/3'></content-ref><content-ref src='/page/126/Text/4'></content-ref><content-ref src='/page/126/Text/5'></content-ref><content-ref src='/page/126/Text/6'></content-ref><content-ref src='/page/126/SectionHeader/7'></content-ref><content-ref src='/page/126/Text/8'></content-ref><content-ref src='/page/126/Text/9'></content-ref><content-ref src='/page/126/Code/10'></content-ref><content-ref src='/page/126/Text/11'></content-ref><content-ref src='/page/126/Text/12'></content-ref><content-ref src='/page/126/Code/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/126/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              60.908203125
            ],
            [
              525.6033935546875,
              60.908203125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            60.908203125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.697265625,
              60.66650390625
            ],
            [
              526.236328125,
              60.66650390625
            ],
            [
              526.236328125,
              69.65771484375
            ],
            [
              510.697265625,
              69.65771484375
            ]
          ],
          "bbox": [
            510.697265625,
            60.66650390625,
            526.236328125,
            69.65771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; k = reverse_lookup(h, 3)\nTraceback (most recent call last):\n  File \"&lt;stdin&gt;\", line 1, in ?\n  File \"&lt;stdin&gt;\", line 5, in reverse_lookup\nValueError</pre>",
          "polygon": [
            [
              128.57080078125,
              88.0751953125
            ],
            [
              354.5129089355469,
              88.0751953125
            ],
            [
              354.5129089355469,
              147.42529296875
            ],
            [
              128.57080078125,
              147.42529296875
            ]
          ],
          "bbox": [
            128.57080078125,
            88.0751953125,
            354.5129089355469,
            147.42529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The result when you raise an exception is the same as when Python raises one: it prints a traceback and an error message.</p>",
          "polygon": [
            [
              129.2431640625,
              154.30078125
            ],
            [
              525.6033935546875,
              154.30078125
            ],
            [
              525.6033935546875,
              176.89093017578125
            ],
            [
              129.2431640625,
              176.89093017578125
            ]
          ],
          "bbox": [
            129.2431640625,
            154.30078125,
            525.6033935546875,
            176.89093017578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The raise statement takes a detailed error message as an optional argument. For example:</p>",
          "polygon": [
            [
              129.09375,
              187.6552734375
            ],
            [
              525.595458984375,
              187.6552734375
            ],
            [
              525.595458984375,
              197.98394775390625
            ],
            [
              129.09375,
              197.98394775390625
            ]
          ],
          "bbox": [
            129.09375,
            187.6552734375,
            525.595458984375,
            197.98394775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; raise ValueError('value does not appear in the dictionary') Traceback (most recent call last): File \"&lt;stdin&gt;\", line 1, in ? ValueError: value does not appear in the dictionary</p>",
          "polygon": [
            [
              128.0478515625,
              204.99273681640625
            ],
            [
              460.1953125,
              204.99273681640625
            ],
            [
              460.1953125,
              251.538330078125
            ],
            [
              128.0478515625,
              251.538330078125
            ]
          ],
          "bbox": [
            128.0478515625,
            204.99273681640625,
            460.1953125,
            251.538330078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A reverse lookup is much slower than a forward lookup; if you have to do it often, or if the dictionary gets big, the performance of your program will suffer.</p>",
          "polygon": [
            [
              129.09375,
              258.328125
            ],
            [
              525.9375,
              258.328125
            ],
            [
              525.9375,
              281.0039367675781
            ],
            [
              129.09375,
              281.0039367675781
            ]
          ],
          "bbox": [
            129.09375,
            258.328125,
            525.9375,
            281.0039367675781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.4.</b> <i>Modify</i> reverse_lookup <i>so that it builds and returns a list of</i> all <i>keys that map to</i> v<i>, or an empty list if there are none.</i></p>",
          "polygon": [
            [
              128.794921875,
              283.0626525878906
            ],
            [
              525.638671875,
              283.0626525878906
            ],
            [
              525.638671875,
              305.2433776855469
            ],
            [
              128.794921875,
              305.2433776855469
            ]
          ],
          "bbox": [
            128.794921875,
            283.0626525878906,
            525.638671875,
            305.2433776855469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/125/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-126-0\"></span><b>11.4 Dictionaries and lists</b></h4>",
          "polygon": [
            [
              127.4501953125,
              337.6007995605469
            ],
            [
              308.4684143066406,
              337.6007995605469
            ],
            [
              308.4684143066406,
              351.947021484375
            ],
            [
              127.4501953125,
              351.947021484375
            ]
          ],
          "bbox": [
            127.4501953125,
            337.6007995605469,
            308.4684143066406,
            351.947021484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Lists can appear as values in a dictionary. For example, if you were given a dictionary that maps from letters to frequencies, you might want to invert it; that is, create a dictionary that maps from frequencies to letters. Since there might be several letters with the same frequency, each value in the inverted dictionary should be a list of letters.</p>",
          "polygon": [
            [
              128.197265625,
              365.255859375
            ],
            [
              525.6033935546875,
              365.255859375
            ],
            [
              525.6033935546875,
              412.17596435546875
            ],
            [
              128.197265625,
              412.17596435546875
            ]
          ],
          "bbox": [
            128.197265625,
            365.255859375,
            525.6033935546875,
            412.17596435546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a function that inverts a dictionary:</p>",
          "polygon": [
            [
              128.0478515625,
              423.0703125
            ],
            [
              318.16204833984375,
              423.0703125
            ],
            [
              318.16204833984375,
              433.2689514160156
            ],
            [
              128.0478515625,
              433.2689514160156
            ]
          ],
          "bbox": [
            128.0478515625,
            423.0703125,
            318.16204833984375,
            433.2689514160156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Code/10",
          "block_type": "Code",
          "html": "<pre>def invert_dict(d):\n    inverse = dict()\n    for key in d:\n        val = d[key]\n        if val not in inverse:\n            inverse[val] = [key]\n        else:\n            inverse[val].append(key)\n    return inverse</pre>",
          "polygon": [
            [
              129.5999755859375,
              440.2778015136719
            ],
            [
              317.8876953125,
              440.2778015136719
            ],
            [
              317.8876953125,
              547.7954254150391
            ],
            [
              129.5999755859375,
              547.7954254150391
            ]
          ],
          "bbox": [
            129.5999755859375,
            440.2778015136719,
            317.8876953125,
            547.7954254150391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each time through the loop, key gets a key from d and val gets the corresponding value. If val is not in inverse, that means we haven't seen it before, so we create a new item and initialize it with a <b>singleton</b> (a list that contains a single element). Otherwise we have seen this value before, so we append the corresponding key to the list.</p>",
          "polygon": [
            [
              128.0478515625,
              554.94140625
            ],
            [
              525.9375,
              554.94140625
            ],
            [
              525.9375,
              601.6489868164062
            ],
            [
              128.0478515625,
              601.6489868164062
            ]
          ],
          "bbox": [
            128.0478515625,
            554.94140625,
            525.9375,
            601.6489868164062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an example:</p>",
          "polygon": [
            [
              128.72021484375,
              612.7793884277344
            ],
            [
              216.40408325195312,
              612.7793884277344
            ],
            [
              216.40408325195312,
              622.7419891357422
            ],
            [
              128.72021484375,
              622.7419891357422
            ]
          ],
          "bbox": [
            128.72021484375,
            612.7793884277344,
            216.40408325195312,
            622.7419891357422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/126/Code/13",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; hist = histogram('parrot')\n&gt;&gt;&gt; print hist\n{'a': 1, 'p': 1, 'r': 2, 't': 1, 'o': 1}\n&gt;&gt;&gt; inverse = invert_dict(hist)\n&gt;&gt;&gt; print inverse\n{1: ['a', 'p', 't', 'o'], 2: ['r']}</pre>",
          "polygon": [
            [
              128.3466796875,
              629.578125
            ],
            [
              340.06640625,
              629.578125
            ],
            [
              340.06640625,
              700.6854248046875
            ],
            [
              128.3466796875,
              700.6854248046875
            ]
          ],
          "bbox": [
            128.3466796875,
            629.578125,
            340.06640625,
            700.6854248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/126/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/127/Page/244",
      "block_type": "Page",
      "html": "<content-ref src='/page/127/PageHeader/0'></content-ref><content-ref src='/page/127/PageHeader/14'></content-ref><content-ref src='/page/127/FigureGroup/242'></content-ref><content-ref src='/page/127/Text/3'></content-ref><content-ref src='/page/127/Text/4'></content-ref><content-ref src='/page/127/Code/241'></content-ref><content-ref src='/page/127/Text/6'></content-ref><content-ref src='/page/127/Text/7'></content-ref><content-ref src='/page/127/Text/8'></content-ref><content-ref src='/page/127/Text/9'></content-ref><content-ref src='/page/127/Text/10'></content-ref><content-ref src='/page/127/Text/11'></content-ref><content-ref src='/page/127/SectionHeader/12'></content-ref><content-ref src='/page/127/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/127/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.90625,
              60.66650390625
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.24072265625,
              60.85986328125
            ],
            [
              101.37744140625,
              60.85986328125
            ],
            [
              101.37744140625,
              70.33447265625
            ],
            [
              85.24072265625,
              70.33447265625
            ]
          ],
          "bbox": [
            85.24072265625,
            60.85986328125,
            101.37744140625,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/FigureGroup/242",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/127/Figure/1'></content-ref><content-ref src='/page/127/Caption/2'></content-ref>",
          "polygon": [
            [
              156.7353515625,
              83.48291015625
            ],
            [
              412.3828125,
              83.48291015625
            ],
            [
              412.3828125,
              219.55291748046875
            ],
            [
              156.7353515625,
              219.55291748046875
            ]
          ],
          "bbox": [
            156.7353515625,
            83.48291015625,
            412.3828125,
            219.55291748046875
          ],
          "children": [
            {
              "id": "/page/127/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  156.7353515625,
                  83.48291015625
                ],
                [
                  412.3828125,
                  83.48291015625
                ],
                [
                  412.3828125,
                  195.099609375
                ],
                [
                  156.7353515625,
                  195.099609375
                ]
              ],
              "bbox": [
                156.7353515625,
                83.48291015625,
                412.3828125,
                195.099609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/126/SectionHeader/7"
              },
              "images": {
                "/page/127/Figure/1": "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"
              }
            },
            {
              "id": "/page/127/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-127-1\"></span>Figure 11.1: State diagram.</p>",
              "polygon": [
                [
                  225.55101013183594,
                  208.828125
                ],
                [
                  343.353515625,
                  208.828125
                ],
                [
                  343.353515625,
                  219.55291748046875
                ],
                [
                  225.55101013183594,
                  219.55291748046875
                ]
              ],
              "bbox": [
                225.55101013183594,
                208.828125,
                343.353515625,
                219.55291748046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/126/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/127/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-127-1\">11.1</a> is a state diagram showing hist and inverse. A dictionary is represented as a box with the type dict above it and the key-value pairs inside. If the values are integers, floats or strings, I usually draw them inside the box, but I usually draw lists outside the box, just to keep the diagram simple.</p>",
          "polygon": [
            [
              85.166015625,
              238.9921875
            ],
            [
              483.205078125,
              238.9921875
            ],
            [
              483.205078125,
              286.171875
            ],
            [
              85.166015625,
              286.171875
            ]
          ],
          "bbox": [
            85.166015625,
            238.9921875,
            483.205078125,
            286.171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Lists can be values in a dictionary, as this example shows, but they cannot be keys. Here's what happens if you try:</p>",
          "polygon": [
            [
              85.6142578125,
              293.326171875
            ],
            [
              482.90625,
              293.326171875
            ],
            [
              482.90625,
              316.60791015625
            ],
            [
              85.6142578125,
              316.60791015625
            ]
          ],
          "bbox": [
            85.6142578125,
            293.326171875,
            482.90625,
            316.60791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Code/241",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = [1, 2, 3]\n&gt;&gt;&gt; d = dict()\n&gt;&gt;&gt; d[t] = 'oops'\nTraceback (most recent call last):\n  File \"&lt;stdin&gt;\", line 1, in ?\nTypeError: list objects are unhashable</pre>",
          "polygon": [
            [
              85.763671875,
              319.81640625
            ],
            [
              285.163818359375,
              319.81640625
            ],
            [
              285.163818359375,
              391.9113464355469
            ],
            [
              85.763671875,
              391.9113464355469
            ]
          ],
          "bbox": [
            85.763671875,
            319.81640625,
            285.163818359375,
            391.9113464355469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I mentioned earlier that a dictionary is implemented using a hashtable and that means that the keys have to be <b>hashable</b>.</p>",
          "polygon": [
            [
              85.46484375,
              394.646484375
            ],
            [
              482.4032897949219,
              394.646484375
            ],
            [
              482.4032897949219,
              418.7369079589844
            ],
            [
              85.46484375,
              418.7369079589844
            ]
          ],
          "bbox": [
            85.46484375,
            394.646484375,
            482.4032897949219,
            418.7369079589844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>hash</b> is a function that takes a value (of any kind) and returns an integer. Dictionaries use these integers, called hash values, to store and look up key-value pairs.</p>",
          "polygon": [
            [
              85.763671875,
              425.77734375
            ],
            [
              482.4045715332031,
              425.77734375
            ],
            [
              482.4045715332031,
              449.3849182128906
            ],
            [
              85.763671875,
              449.3849182128906
            ]
          ],
          "bbox": [
            85.763671875,
            425.77734375,
            482.4045715332031,
            449.3849182128906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This system works fine if the keys are immutable. But if the keys are mutable, like lists, bad things happen. For example, when you create a key-value pair, Python hashes the key and stores it in the corresponding location. If you modify the key and then hash it again, it would go to a different location. In that case you might have two entries for the same key, or you might not be able to find a key. Either way, the dictionary wouldn't work correctly.</p>",
          "polygon": [
            [
              85.6142578125,
              456.71484375
            ],
            [
              482.90625,
              456.71484375
            ],
            [
              482.90625,
              516.6149291992188
            ],
            [
              85.6142578125,
              516.6149291992188
            ]
          ],
          "bbox": [
            85.6142578125,
            456.71484375,
            482.90625,
            516.6149291992188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">That's why the keys have to be hashable, and why mutable types like lists aren't. The simplest way to get around this limitation is to use tuples, which we will see in the next chapter.</p>",
          "polygon": [
            [
              85.9130859375,
              524.77734375
            ],
            [
              482.4034423828125,
              524.77734375
            ],
            [
              482.4034423828125,
              559.4569396972656
            ],
            [
              85.9130859375,
              559.4569396972656
            ]
          ],
          "bbox": [
            85.9130859375,
            524.77734375,
            482.4034423828125,
            559.4569396972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since lists and dictionaries are mutable, they can't be used as keys, but they <i>can</i> be used as values.</p>",
          "polygon": [
            [
              86.0625,
              566.9296875
            ],
            [
              482.607421875,
              566.9296875
            ],
            [
              482.607421875,
              590.1039428710938
            ],
            [
              86.0625,
              590.1039428710938
            ]
          ],
          "bbox": [
            86.0625,
            566.9296875,
            482.607421875,
            590.1039428710938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.5.</b> <i>Read the documentation of the dictionary method</i> setdefault <i>and use it to write a</i> <i>more concise version of</i> invert_dict<i>. Solution:</i> <a href=\"http://thinkpython.com/code/invert_dict.py\">http:</a> <a href=\"http://thinkpython.com/code/invert_dict.py\">//</a> <a href=\"http://thinkpython.com/code/invert_dict.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/invert_dict.py\">com/</a> <a href=\"http://thinkpython.com/code/invert_dict.py\">code/</a> <a href=\"http://thinkpython.com/code/invert_dict.py\">invert_</a> <a href=\"http://thinkpython.com/code/invert_dict.py\">dict.</a> <a href=\"http://thinkpython.com/code/invert_dict.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              86.2119140625,
              591.29296875
            ],
            [
              482.40380859375,
              591.29296875
            ],
            [
              482.40380859375,
              626.87109375
            ],
            [
              86.2119140625,
              626.87109375
            ]
          ],
          "bbox": [
            86.2119140625,
            591.29296875,
            482.40380859375,
            626.87109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/126/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/127/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-127-0\"></span><b>11.5 Memos</b></h4>",
          "polygon": [
            [
              85.9130859375,
              653.16796875
            ],
            [
              174.4713134765625,
              653.16796875
            ],
            [
              174.4713134765625,
              668.0169982910156
            ],
            [
              85.9130859375,
              668.0169982910156
            ]
          ],
          "bbox": [
            85.9130859375,
            653.16796875,
            174.4713134765625,
            668.0169982910156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/127/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you played with the fibonacci function from Section <a href=\"#page-78-1\">6.7,</a> you might have noticed that the bigger the argument you provide, the longer the function takes to run. Furthermore,</p>",
          "polygon": [
            [
              86.2119140625,
              677.91796875
            ],
            [
              482.90625,
              677.91796875
            ],
            [
              482.90625,
              700.8349533081055
            ],
            [
              86.2119140625,
              700.8349533081055
            ]
          ],
          "bbox": [
            86.2119140625,
            677.91796875,
            482.90625,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/127/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/128/Page/254",
      "block_type": "Page",
      "html": "<content-ref src='/page/128/PageHeader/0'></content-ref><content-ref src='/page/128/PageHeader/13'></content-ref><content-ref src='/page/128/FigureGroup/253'></content-ref><content-ref src='/page/128/Text/3'></content-ref><content-ref src='/page/128/Text/4'></content-ref><content-ref src='/page/128/Text/5'></content-ref><content-ref src='/page/128/Text/6'></content-ref><content-ref src='/page/128/Text/7'></content-ref><content-ref src='/page/128/Code/8'></content-ref><content-ref src='/page/128/Text/9'></content-ref><content-ref src='/page/128/Text/10'></content-ref><content-ref src='/page/128/Text/11'></content-ref><content-ref src='/page/128/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/128/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.3466796875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.3466796875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.3466796875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/PageHeader/13",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.697265625,
              60.8115234375
            ],
            [
              525.638671875,
              60.8115234375
            ],
            [
              525.638671875,
              70.189453125
            ],
            [
              510.697265625,
              70.189453125
            ]
          ],
          "bbox": [
            510.697265625,
            60.8115234375,
            525.638671875,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/FigureGroup/253",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/128/Figure/1'></content-ref><content-ref src='/page/128/Caption/2'></content-ref>",
          "polygon": [
            [
              214.1103515625,
              83.0478515625
            ],
            [
              438.08203125,
              83.0478515625
            ],
            [
              438.08203125,
              263.3519287109375
            ],
            [
              214.1103515625,
              263.3519287109375
            ]
          ],
          "bbox": [
            214.1103515625,
            83.0478515625,
            438.08203125,
            263.3519287109375
          ],
          "children": [
            {
              "id": "/page/128/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  214.1103515625,
                  83.0478515625
                ],
                [
                  438.08203125,
                  83.0478515625
                ],
                [
                  438.08203125,
                  240.5390625
                ],
                [
                  214.1103515625,
                  240.5390625
                ]
              ],
              "bbox": [
                214.1103515625,
                83.0478515625,
                438.08203125,
                240.5390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/127/SectionHeader/12"
              },
              "images": {
                "/page/128/Figure/1": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAGkAlUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK5vxVd6jFd6LZ6ffGyN3cuksixI52rE74AYEdVFAHSUVyH2LxB/0NVz/wCAcH/xFH2LxB/0NVz/AOAcH/xFAHX0VyH2LxB/0NVz/wCAcH/xFH2LxB/0NVz/AOAcH/xFAHX0VyH2LxB/0NVz/wCAcH/xFH2LxB/0NVz/AOAcH/xFAHX0VyH2LxB/0NVz/wCAcH/xFH2LxB/0NVz/AOAcH/xFAHX0VyH2LxB/0NVz/wCAcH/xFH2LxB/0NVz/AOAcH/xFAHX0VyH2LxB/0NVz/wCAcH/xFH2LxB/0NVz/AOAcH/xFAHX0Vz/hG8vruxvk1C7+1TW19LAspjVCyjGMhQB3roKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuY8Uf8AId8M/wDX3N/6TyV09cx4o/5Dvhn/AK+5v/SeSgC9RRXmUhur/wCM0/2zR/OhsrFTAzXQxCpLfvQvq3THUUAem0V43/bFvaP4BvdH0i4aNlvEtrBZtzFicYLt2zkknoK7nSPGFxNrcmja9o7aPfCA3EQ+0LNHLGPvEOAOR3GKAOrorgf+FiahJp8mt2/ha4m8PRkk3v2pBI0YODIIsZK/jWjqfjf7Pq9hpml6XJqc+oWf2q2KShFIz/ESPlGOc/higDraK5PTPGrzxa0mqaRNY32kKHntopBPvVlJUoQBnOOmKqR+ONXt59Nk1jwtJYafqEyQRTi8WR0Z/u74woIz9TigDt6K5LUPF+oHWbzTfD+gPqz2IH2uQ3SwIjEZCKSDubHbioW+IMM+kaZPp2mXF3qWpO8cGnswjZWT7+9jwoXHWgDs6K4DUvFi3vh/xFp/iLQJrW4s7Pzp7RbkMs8R7pKoH06cV2umtG+l2jRIUjMKFEJztG0YGe9ADfBv+p1n/sKTfyWulrmvBv8AqdZ/7Ck38lrpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuY8Uf8h3wz/19zf8ApPJXT1zHij/kO+Gf+vub/wBJ5KAL1cfFZXQ+J2q3ZtphbPpMcaTeWdjMHbKhuhPtXYUUAeNWUGraJYeBL59D1GdbAXZu4o7di8SsxGSMdcHIHU9q3S0njvxfFe2Vnd2+mWNhcQfarmBovNllXbhQ2CQByTXpFFAHlFpr9zp3gE+EZdD1NtejtmsUgS1YxyZBUSCTG3bg5zmtfRtCvdK8ZeHYpIJXis9BNtJcBCYxIGX5d3TP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"
              }
            },
            {
              "id": "/page/128/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-128-0\"></span>Figure 11.2: Call graph.</p>",
              "polygon": [
                [
                  275.51953125,
                  252.52734375
                ],
                [
                  379.14202880859375,
                  252.52734375
                ],
                [
                  379.14202880859375,
                  263.3519287109375
                ],
                [
                  275.51953125,
                  263.3519287109375
                ]
              ],
              "bbox": [
                275.51953125,
                252.52734375,
                379.14202880859375,
                263.3519287109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/127/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/128/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">the run time increases very quickly.</p>",
          "polygon": [
            [
              128.57080078125,
              285.591796875
            ],
            [
              285.2457275390625,
              285.591796875
            ],
            [
              285.2457275390625,
              296.1878967285156
            ],
            [
              128.57080078125,
              296.1878967285156
            ]
          ],
          "bbox": [
            128.57080078125,
            285.591796875,
            285.2457275390625,
            296.1878967285156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To understand why, consider Figure <a href=\"#page-128-0\">11.2,</a> which shows the <b>call graph</b> for fibonacci with n=4:</p>",
          "polygon": [
            [
              127.7490234375,
              306.087890625
            ],
            [
              525.5999145507812,
              306.087890625
            ],
            [
              525.5999145507812,
              328.6828918457031
            ],
            [
              127.7490234375,
              328.6828918457031
            ]
          ],
          "bbox": [
            127.7490234375,
            306.087890625,
            525.5999145507812,
            328.6828918457031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A call graph shows a set of function frames, with lines connecting each frame to the frames of the functions it calls. At the top of the graph, fibonacci with n=4 calls fibonacci with n=3 and n=2. In turn, fibonacci with n=3 calls fibonacci with n=2 and n=1. And so on.</p>",
          "polygon": [
            [
              128.6455078125,
              338.958984375
            ],
            [
              525.9375,
              338.958984375
            ],
            [
              525.9375,
              373.37188720703125
            ],
            [
              128.6455078125,
              373.37188720703125
            ]
          ],
          "bbox": [
            128.6455078125,
            338.958984375,
            525.9375,
            373.37188720703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Count how many times fibonacci(0) and fibonacci(1) are called. This is an inefficient solution to the problem, and it gets worse as the argument gets bigger.</p>",
          "polygon": [
            [
              128.197265625,
              383.5597229003906
            ],
            [
              526.236328125,
              383.5597229003906
            ],
            [
              526.236328125,
              405.8658752441406
            ],
            [
              128.197265625,
              405.8658752441406
            ]
          ],
          "bbox": [
            128.197265625,
            383.5597229003906,
            526.236328125,
            405.8658752441406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One solution is to keep track of values that have already been computed by storing them in a dictionary. A previously computed value that is stored for later use is called a <b>memo</b>. Here is a \"memoized\" version of fibonacci:</p>",
          "polygon": [
            [
              128.49609375,
              415.72265625
            ],
            [
              525.9375,
              415.72265625
            ],
            [
              525.9375,
              450.55487060546875
            ],
            [
              128.49609375,
              450.55487060546875
            ]
          ],
          "bbox": [
            128.49609375,
            415.72265625,
            525.9375,
            450.55487060546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Code/8",
          "block_type": "Code",
          "html": "<pre>known = {0:0, 1:1}\ndef fibonacci(n):\n    if n in known:\n        return known[n]\n    res = fibonacci(n-1) + fibonacci(n-2)\n    known[n] = res\n    return res</pre>",
          "polygon": [
            [
              127.52490234375,
              456.771728515625
            ],
            [
              344.548828125,
              456.771728515625
            ],
            [
              344.548828125,
              564.2883453369141
            ],
            [
              127.52490234375,
              564.2883453369141
            ]
          ],
          "bbox": [
            127.52490234375,
            456.771728515625,
            344.548828125,
            564.2883453369141
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">known is a dictionary that keeps track of the Fibonacci numbers we already know. It starts with two items: 0 maps to 0 and 1 maps to 1.</p>",
          "polygon": [
            [
              128.0478515625,
              570.6547393798828
            ],
            [
              525.9375,
              570.6547393798828
            ],
            [
              525.9375,
              592.9608917236328
            ],
            [
              128.0478515625,
              592.9608917236328
            ]
          ],
          "bbox": [
            128.0478515625,
            570.6547393798828,
            525.9375,
            592.9608917236328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Whenever fibonacci is called, it checks known. If the result is already there, it can return immediately. Otherwise it has to compute the new value, add it to the dictionary, and return it.</p>",
          "polygon": [
            [
              128.3466796875,
              603.1497344970703
            ],
            [
              525.6033935546875,
              603.1497344970703
            ],
            [
              525.6033935546875,
              637.6498870849609
            ],
            [
              128.3466796875,
              637.6498870849609
            ]
          ],
          "bbox": [
            128.3466796875,
            603.1497344970703,
            525.6033935546875,
            637.6498870849609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.6.</b> <i>Run this version of</i> fibonacci <i>and the original with a range of parameters and</i> <i>compare their run times.</i></p>",
          "polygon": [
            [
              128.49609375,
              639.6328125
            ],
            [
              525.6038208007812,
              639.6328125
            ],
            [
              525.6038208007812,
              661.8661956787109
            ],
            [
              128.49609375,
              661.8661956787109
            ]
          ],
          "bbox": [
            128.49609375,
            639.6328125,
            525.6038208007812,
            661.8661956787109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/128/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.7.</b> <i>Memoize the Ackermann function from Exercise </i><i><a href=\"#page-82-1\">6.5</a></i><i> and see if memoization</i> <i>makes it possible to evaluate the function with bigger arguments. Hint: no. Solution:</i> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">http:</a> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">//</a> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">com/</a> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">code/</a> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">ackermann_</a> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">memo.</a> <a href=\"http://thinkpython.com/code/ackermann_memo.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.794921875,
              663.99609375
            ],
            [
              525.6021728515625,
              663.99609375
            ],
            [
              525.6021728515625,
              698.4492034912109
            ],
            [
              128.794921875,
              698.4492034912109
            ]
          ],
          "bbox": [
            128.794921875,
            663.99609375,
            525.6021728515625,
            698.4492034912109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/127/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/129/Page/197",
      "block_type": "Page",
      "html": "<content-ref src='/page/129/PageHeader/0'></content-ref><content-ref src='/page/129/PageHeader/18'></content-ref><content-ref src='/page/129/SectionHeader/1'></content-ref><content-ref src='/page/129/Text/2'></content-ref><content-ref src='/page/129/Text/3'></content-ref><content-ref src='/page/129/Code/4'></content-ref><content-ref src='/page/129/Text/5'></content-ref><content-ref src='/page/129/Code/6'></content-ref><content-ref src='/page/129/Text/7'></content-ref><content-ref src='/page/129/Text/8'></content-ref><content-ref src='/page/129/Code/9'></content-ref><content-ref src='/page/129/Text/10'></content-ref><content-ref src='/page/129/Text/11'></content-ref><content-ref src='/page/129/Code/12'></content-ref><content-ref src='/page/129/Code/13'></content-ref><content-ref src='/page/129/Text/14'></content-ref><content-ref src='/page/129/Text/15'></content-ref><content-ref src='/page/129/Code/16'></content-ref><content-ref src='/page/129/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/129/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.134765625
            ],
            [
              482.90625,
              60.134765625
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.134765625,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/129/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.0380859375
            ],
            [
              101.900390625,
              60.0380859375
            ],
            [
              101.900390625,
              69.99609375
            ],
            [
              85.763671875,
              69.99609375
            ]
          ],
          "bbox": [
            85.763671875,
            60.0380859375,
            101.900390625,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/127/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/129/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-129-0\"></span><b>11.6 Global variables</b></h4>",
          "polygon": [
            [
              85.46484375,
              85.60986328125
            ],
            [
              234.62493896484375,
              85.60986328125
            ],
            [
              234.62493896484375,
              100.29998779296875
            ],
            [
              85.46484375,
              100.29998779296875
            ]
          ],
          "bbox": [
            85.46484375,
            85.60986328125,
            234.62493896484375,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the previous example, known is created outside the function, so it belongs to the special frame called __main__. Variables in __main__ are sometimes called <b>global</b> because they can be accessed from any function. Unlike local variables, which disappear when their function ends, global variables persist from one function call to the next.</p>",
          "polygon": [
            [
              85.166015625,
              111.375
            ],
            [
              483.50390625,
              111.375
            ],
            [
              483.50390625,
              158.8529052734375
            ],
            [
              85.166015625,
              158.8529052734375
            ]
          ],
          "bbox": [
            85.166015625,
            111.375,
            483.50390625,
            158.8529052734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is common to use global variables for <b>flags</b>; that is, boolean variables that indicate (\"flag\") whether a condition is true. For example, some programs use a flag named verbose to control the level of detail in the output:</p>",
          "polygon": [
            [
              85.46484375,
              166.7724609375
            ],
            [
              483.802734375,
              166.7724609375
            ],
            [
              483.802734375,
              203.0399169921875
            ],
            [
              85.46484375,
              203.0399169921875
            ]
          ],
          "bbox": [
            85.46484375,
            166.7724609375,
            483.802734375,
            203.0399169921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Code/4",
          "block_type": "Code",
          "html": "<pre>verbose = True\ndef example1():\n    if verbose:\n        print 'Running example1'</pre>",
          "polygon": [
            [
              85.83837890625,
              208.7547607421875
            ],
            [
              254.302734375,
              208.7547607421875
            ],
            [
              254.302734375,
              267.494384765625
            ],
            [
              85.83837890625,
              267.494384765625
            ]
          ],
          "bbox": [
            85.83837890625,
            208.7547607421875,
            254.302734375,
            267.494384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you try to reassign a global variable, you might be surprised. The following example is supposed to keep track of whether the function has been called:</p>",
          "polygon": [
            [
              85.763671875,
              271.86328125
            ],
            [
              482.90625,
              271.86328125
            ],
            [
              482.90625,
              295.6649475097656
            ],
            [
              85.763671875,
              295.6649475097656
            ]
          ],
          "bbox": [
            85.763671875,
            271.86328125,
            482.90625,
            295.6649475097656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Code/6",
          "block_type": "Code",
          "html": "<pre>been_called = False\ndef example2():\n   been_called = True # WRONG</pre>",
          "polygon": [
            [
              85.53955078125,
              301.3797912597656
            ],
            [
              285.1484680175781,
              301.3797912597656
            ],
            [
              285.1484680175781,
              347.9253845214844
            ],
            [
              85.53955078125,
              347.9253845214844
            ]
          ],
          "bbox": [
            85.53955078125,
            301.3797912597656,
            285.1484680175781,
            347.9253845214844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you run it you will see that the value of been_called doesn't change. The problem is that example2 creates a new local variable named been_called. The local variable goes away when the function ends, and has no effect on the global variable.</p>",
          "polygon": [
            [
              85.763671875,
              352.107421875
            ],
            [
              483.50390625,
              352.107421875
            ],
            [
              483.50390625,
              388.29095458984375
            ],
            [
              85.763671875,
              388.29095458984375
            ]
          ],
          "bbox": [
            85.763671875,
            352.107421875,
            483.50390625,
            388.29095458984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To reassign a global variable inside a function you have to <b>declare</b> the global variable before you use it:</p>",
          "polygon": [
            [
              86.0625,
              396.38671875
            ],
            [
              482.607421875,
              396.38671875
            ],
            [
              482.607421875,
              420.2839660644531
            ],
            [
              86.0625,
              420.2839660644531
            ]
          ],
          "bbox": [
            86.0625,
            396.38671875,
            482.607421875,
            420.2839660644531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Code/9",
          "block_type": "Code",
          "html": "<pre>been_called = False\ndef example2():\n    global been_called\n    been_called = True</pre>",
          "polygon": [
            [
              86.40008544921875,
              425.9988098144531
            ],
            [
              223.822265625,
              425.9988098144531
            ],
            [
              223.822265625,
              484.7384033203125
            ],
            [
              86.40008544921875,
              484.7384033203125
            ]
          ],
          "bbox": [
            86.40008544921875,
            425.9988098144531,
            223.822265625,
            484.7384033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The global statement tells the interpreter something like, \"In this function, when I say been_called, I mean the global variable; don't create a local one.\"</p>",
          "polygon": [
            [
              86.40008544921875,
              489.5859375
            ],
            [
              483.205078125,
              489.5859375
            ],
            [
              483.205078125,
              512.9089660644531
            ],
            [
              86.40008544921875,
              512.9089660644531
            ]
          ],
          "bbox": [
            86.40008544921875,
            489.5859375,
            483.205078125,
            512.9089660644531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's an example that tries to update a global variable:</p>",
          "polygon": [
            [
              86.13720703125,
              521.68359375
            ],
            [
              332.296875,
              521.68359375
            ],
            [
              332.296875,
              532.7079772949219
            ],
            [
              86.13720703125,
              532.7079772949219
            ]
          ],
          "bbox": [
            86.13720703125,
            521.68359375,
            332.296875,
            532.7079772949219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Code/12",
          "block_type": "Code",
          "html": "<pre>count = 0\ndef example3():\n   count = count + 1 # WRONG</pre>",
          "polygon": [
            [
              86.361328125,
              536.765625
            ],
            [
              290.162109375,
              536.765625
            ],
            [
              290.162109375,
              587.8125
            ],
            [
              86.361328125,
              587.8125
            ]
          ],
          "bbox": [
            86.361328125,
            536.765625,
            290.162109375,
            587.8125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Code/13",
          "block_type": "Code",
          "html": "<pre>If you run it you get:</pre>",
          "polygon": [
            [
              85.763671875,
              590.9823760986328
            ],
            [
              177.35862731933594,
              590.9823760986328
            ],
            [
              177.35862731933594,
              601.734375
            ],
            [
              85.763671875,
              601.734375
            ]
          ],
          "bbox": [
            85.763671875,
            590.9823760986328,
            177.35862731933594,
            601.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">UnboundLocalError: local variable 'count' referenced before assignment</p>",
          "polygon": [
            [
              85.166015625,
              606.375
            ],
            [
              452.4832458496094,
              606.375
            ],
            [
              452.4832458496094,
              617.203125
            ],
            [
              85.166015625,
              617.203125
            ]
          ],
          "bbox": [
            85.166015625,
            606.375,
            452.4832458496094,
            617.203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python assumes that count is local, which means that you are reading it before writing it. The solution, again, is to declare count global.</p>",
          "polygon": [
            [
              85.0166015625,
              621.0703125
            ],
            [
              482.90625,
              621.0703125
            ],
            [
              482.90625,
              644.79296875
            ],
            [
              85.0166015625,
              644.79296875
            ]
          ],
          "bbox": [
            85.0166015625,
            621.0703125,
            482.90625,
            644.79296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Code/16",
          "block_type": "Code",
          "html": "<pre>def example3():\n    global count\n    count += 1</pre>",
          "polygon": [
            [
              86.40007019042969,
              650.5078125
            ],
            [
              173.1708984375,
              650.5078125
            ],
            [
              173.1708984375,
              685.65234375
            ],
            [
              86.40007019042969,
              685.65234375
            ]
          ],
          "bbox": [
            86.40007019042969,
            650.5078125,
            173.1708984375,
            685.65234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/129/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the global value is mutable, you can modify it without declaring it:</p>",
          "polygon": [
            [
              86.13720703125,
              689.90625
            ],
            [
              389.671875,
              689.90625
            ],
            [
              389.671875,
              700.8349761962891
            ],
            [
              86.13720703125,
              700.8349761962891
            ]
          ],
          "bbox": [
            86.13720703125,
            689.90625,
            389.671875,
            700.8349761962891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/129/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/130/Page/195",
      "block_type": "Page",
      "html": "<content-ref src='/page/130/PageHeader/0'></content-ref><content-ref src='/page/130/PageHeader/18'></content-ref><content-ref src='/page/130/Code/1'></content-ref><content-ref src='/page/130/Text/2'></content-ref><content-ref src='/page/130/Code/3'></content-ref><content-ref src='/page/130/SectionHeader/4'></content-ref><content-ref src='/page/130/Text/5'></content-ref><content-ref src='/page/130/Code/6'></content-ref><content-ref src='/page/130/Text/7'></content-ref><content-ref src='/page/130/Text/8'></content-ref><content-ref src='/page/130/Text/9'></content-ref><content-ref src='/page/130/Text/10'></content-ref><content-ref src='/page/130/Code/11'></content-ref><content-ref src='/page/130/Text/12'></content-ref><content-ref src='/page/130/Text/13'></content-ref><content-ref src='/page/130/SectionHeader/14'></content-ref><content-ref src='/page/130/Text/15'></content-ref><content-ref src='/page/130/ListItem/16'></content-ref><content-ref src='/page/130/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/130/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.27197265625,
              60.8115234375
            ],
            [
              525.6033935546875,
              60.8115234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.27197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.27197265625,
            60.8115234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/130/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.99609375,
              60.8115234375
            ],
            [
              525.9375,
              60.8115234375
            ],
            [
              525.9375,
              70.189453125
            ],
            [
              510.99609375,
              70.189453125
            ]
          ],
          "bbox": [
            510.99609375,
            60.8115234375,
            525.9375,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/130/Code/1",
          "block_type": "Code",
          "html": "<pre>known = {0:0, 1:1}\ndef example4():\n    known[2] = 1</pre>",
          "polygon": [
            [
              127.8984375,
              88.68572998046875
            ],
            [
              223.74656677246094,
              88.68572998046875
            ],
            [
              223.74656677246094,
              135.2313232421875
            ],
            [
              127.8984375,
              135.2313232421875
            ]
          ],
          "bbox": [
            127.8984375,
            88.68572998046875,
            223.74656677246094,
            135.2313232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So you can add, remove and replace elements of a global list or dictionary, but if you want to reassign the variable, you have to declare it:</p>",
          "polygon": [
            [
              128.794921875,
              140.958984375
            ],
            [
              525.638671875,
              140.958984375
            ],
            [
              525.638671875,
              163.93792724609375
            ],
            [
              128.794921875,
              163.93792724609375
            ]
          ],
          "bbox": [
            128.794921875,
            140.958984375,
            525.638671875,
            163.93792724609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/130/Code/3",
          "block_type": "Code",
          "html": "<pre>def example5():\n    global known\n    known = dict()</pre>",
          "polygon": [
            [
              129.60000610351562,
              170.18975830078125
            ],
            [
              223.74111938476562,
              170.18975830078125
            ],
            [
              223.74111938476562,
              204.540283203125
            ],
            [
              129.60000610351562,
              204.540283203125
            ]
          ],
          "bbox": [
            129.60000610351562,
            170.18975830078125,
            223.74111938476562,
            204.540283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/129/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/130/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-130-0\"></span><b>11.7 Long integers</b></h4>",
          "polygon": [
            [
              127.7490234375,
              234.62371826171875
            ],
            [
              259.2333984375,
              234.62371826171875
            ],
            [
              259.2333984375,
              249.43359375
            ],
            [
              127.7490234375,
              249.43359375
            ]
          ],
          "bbox": [
            127.7490234375,
            234.62371826171875,
            259.2333984375,
            249.43359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you compute fibonacci(50), you get:</p>",
          "polygon": [
            [
              128.3466796875,
              261.228515625
            ],
            [
              307.8939514160156,
              261.228515625
            ],
            [
              307.8939514160156,
              271.55487060546875
            ],
            [
              128.3466796875,
              271.55487060546875
            ]
          ],
          "bbox": [
            128.3466796875,
            261.228515625,
            307.8939514160156,
            271.55487060546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fibonacci(50)\n12586269025L</pre>",
          "polygon": [
            [
              129.09375,
              277.8056640625
            ],
            [
              218.52618408203125,
              277.8056640625
            ],
            [
              218.52618408203125,
              299.9622802734375
            ],
            [
              129.09375,
              299.9622802734375
            ]
          ],
          "bbox": [
            129.09375,
            277.8056640625,
            218.52618408203125,
            299.9622802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The L at the end indicates that the result is a long integer, or type long. In Python 3, long is gone; all integers, even really big ones, are type int.</p>",
          "polygon": [
            [
              128.6455078125,
              306.36370849609375
            ],
            [
              525.9375,
              306.36370849609375
            ],
            [
              525.9375,
              328.66986083984375
            ],
            [
              128.6455078125,
              328.66986083984375
            ]
          ],
          "bbox": [
            128.6455078125,
            306.36370849609375,
            525.9375,
            328.66986083984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Values with type int have a limited range; long integers can be arbitrarily big, but as they get bigger they consume more space and time.</p>",
          "polygon": [
            [
              128.6455078125,
              338.8927001953125
            ],
            [
              525.6017456054688,
              338.8927001953125
            ],
            [
              525.6017456054688,
              361.1988525390625
            ],
            [
              128.6455078125,
              361.1988525390625
            ]
          ],
          "bbox": [
            128.6455078125,
            338.8927001953125,
            525.6017456054688,
            361.1988525390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The mathematical operators work on long integers, and the functions in the math module, too, so in general any code that works with int will also work with long.</p>",
          "polygon": [
            [
              128.794921875,
              370.86328125
            ],
            [
              525.638671875,
              370.86328125
            ],
            [
              525.638671875,
              393.72784423828125
            ],
            [
              128.794921875,
              393.72784423828125
            ]
          ],
          "bbox": [
            128.794921875,
            370.86328125,
            525.638671875,
            393.72784423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Any time the result of a computation is too big to be represented with an integer, Python converts the result as a long integer:</p>",
          "polygon": [
            [
              129.09375,
              403.34765625
            ],
            [
              525.6033935546875,
              403.34765625
            ],
            [
              525.6033935546875,
              426.2568359375
            ],
            [
              129.09375,
              426.2568359375
            ]
          ],
          "bbox": [
            129.09375,
            403.34765625,
            525.6033935546875,
            426.2568359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; 1000 * 1000\n1000000\n&gt;&gt;&gt; 100000 * 100000\n10000000000L</pre>",
          "polygon": [
            [
              127.8984375,
              432.5086669921875
            ],
            [
              228.97698974609375,
              432.5086669921875
            ],
            [
              228.97698974609375,
              479.05426025390625
            ],
            [
              127.8984375,
              479.05426025390625
            ]
          ],
          "bbox": [
            127.8984375,
            432.5086669921875,
            228.97698974609375,
            479.05426025390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the first case the result has type int; in the second case it is long.</p>",
          "polygon": [
            [
              128.27197265625,
              484.55859375
            ],
            [
              425.5577392578125,
              484.55859375
            ],
            [
              425.5577392578125,
              495.56683349609375
            ],
            [
              128.27197265625,
              495.56683349609375
            ]
          ],
          "bbox": [
            128.27197265625,
            484.55859375,
            425.5577392578125,
            495.56683349609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.8.</b> <i>Exponentiation of large integers is the basis of common algorithms for public-key en</i><i>cryption. Read the Wikipedia page on the RSA algorithm (</i><a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">http:</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">//</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">en.</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">org/</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">RSA_</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">(</a> <a href=\"http://en.wikipedia.org/wiki/RSA_(algorithm)\">algorithm)</a> <i>) and write functions to encode and decode messages.</i></p>",
          "polygon": [
            [
              129.392578125,
              496.16015625
            ],
            [
              525.6006469726562,
              496.16015625
            ],
            [
              525.6006469726562,
              532.51171875
            ],
            [
              129.392578125,
              532.51171875
            ]
          ],
          "bbox": [
            129.392578125,
            496.16015625,
            525.6006469726562,
            532.51171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/130/SectionHeader/14",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-130-1\"></span><b>11.8 Debugging</b></h4>",
          "polygon": [
            [
              127.52490234375,
              561.90234375
            ],
            [
              243.17897033691406,
              561.90234375
            ],
            [
              243.17897033691406,
              576.4298858642578
            ],
            [
              127.52490234375,
              576.4298858642578
            ]
          ],
          "bbox": [
            127.52490234375,
            561.90234375,
            243.17897033691406,
            576.4298858642578
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you work with bigger datasets it can become unwieldy to debug by printing and checking data by hand. Here are some suggestions for debugging large datasets:</p>",
          "polygon": [
            [
              128.6455078125,
              588.5859375
            ],
            [
              525.6035766601562,
              588.5859375
            ],
            [
              525.6035766601562,
              611.2088470458984
            ],
            [
              128.6455078125,
              611.2088470458984
            ]
          ],
          "bbox": [
            128.6455078125,
            588.5859375,
            525.6035766601562,
            611.2088470458984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/130/ListItem/16",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>Scale down the input:</b> If possible, reduce the size of the dataset. For example if the program reads a text file, start with just the first 10 lines, or with the smallest example you can find. You can either edit the files themselves, or (better) modify the program so it reads only the first n lines.</li>",
          "polygon": [
            [
              129.2431640625,
              624.9375
            ],
            [
              525.9375,
              624.9375
            ],
            [
              525.9375,
              672.292854309082
            ],
            [
              129.2431640625,
              672.292854309082
            ]
          ],
          "bbox": [
            129.2431640625,
            624.9375,
            525.9375,
            672.292854309082
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/130/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If there is an error, you can reduce n to the smallest value that manifests the error, and then increase it gradually as you find and correct errors.</p>",
          "polygon": [
            [
              153.1494140625,
              678.3046875
            ],
            [
              525.5960693359375,
              678.3046875
            ],
            [
              525.5960693359375,
              700.8348541259766
            ],
            [
              153.1494140625,
              700.8348541259766
            ]
          ],
          "bbox": [
            153.1494140625,
            678.3046875,
            525.5960693359375,
            700.8348541259766
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/130/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/131/Page/178",
      "block_type": "Page",
      "html": "<content-ref src='/page/131/PageHeader/0'></content-ref><content-ref src='/page/131/PageHeader/23'></content-ref><content-ref src='/page/131/ListItem/1'></content-ref><content-ref src='/page/131/Text/2'></content-ref><content-ref src='/page/131/ListItem/3'></content-ref><content-ref src='/page/131/Text/4'></content-ref><content-ref src='/page/131/ListItem/5'></content-ref><content-ref src='/page/131/Text/6'></content-ref><content-ref src='/page/131/SectionHeader/7'></content-ref><content-ref src='/page/131/Text/8'></content-ref><content-ref src='/page/131/Text/9'></content-ref><content-ref src='/page/131/Text/10'></content-ref><content-ref src='/page/131/Text/11'></content-ref><content-ref src='/page/131/ListItem/12'></content-ref><content-ref src='/page/131/Text/13'></content-ref><content-ref src='/page/131/Text/14'></content-ref><content-ref src='/page/131/Text/15'></content-ref><content-ref src='/page/131/Text/177'></content-ref><content-ref src='/page/131/Text/17'></content-ref><content-ref src='/page/131/ListItem/18'></content-ref><content-ref src='/page/131/Text/19'></content-ref><content-ref src='/page/131/ListItem/20'></content-ref><content-ref src='/page/131/Text/21'></content-ref><content-ref src='/page/131/Text/22'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/131/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.40338134765625,
              60.85986328125
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/PageHeader/23",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.98779296875,
              61.5849609375
            ],
            [
              101.97509765625,
              61.5849609375
            ],
            [
              101.97509765625,
              70.576171875
            ],
            [
              85.98779296875,
              70.576171875
            ]
          ],
          "bbox": [
            85.98779296875,
            61.5849609375,
            101.97509765625,
            70.576171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>Check summaries and types:</b> Instead of printing and checking the entire dataset, consider printing summaries of the data: for example, the number of items in a dictionary or the total of a list of numbers.</li>",
          "polygon": [
            [
              85.763671875,
              88.7381591796875
            ],
            [
              482.607421875,
              88.7381591796875
            ],
            [
              482.607421875,
              123.1868896484375
            ],
            [
              85.763671875,
              123.1868896484375
            ]
          ],
          "bbox": [
            85.763671875,
            88.7381591796875,
            482.607421875,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A common cause of runtime errors is a value that is not the right type. For debugging this kind of error, it is often enough to print the type of a value.</p>",
          "polygon": [
            [
              109.669921875,
              129.357421875
            ],
            [
              482.4039611816406,
              129.357421875
            ],
            [
              482.4039611816406,
              151.60089111328125
            ],
            [
              109.669921875,
              151.60089111328125
            ]
          ],
          "bbox": [
            109.669921875,
            129.357421875,
            482.4039611816406,
            151.60089111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/ListItem/3",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>Write self-checks:</b> Sometimes you can write code to check for errors automatically. For example, if you are computing the average of a list of numbers, you could check that the result is not greater than the largest element in the list or less than the smallest. This is called a \"sanity check\" because it detects results that are \"insane.\"</li>",
          "polygon": [
            [
              85.3154296875,
              161.455078125
            ],
            [
              482.4039001464844,
              161.455078125
            ],
            [
              482.4039001464844,
              208.4298095703125
            ],
            [
              85.3154296875,
              208.4298095703125
            ]
          ],
          "bbox": [
            85.3154296875,
            161.455078125,
            482.4039001464844,
            208.4298095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another kind of check compares the results of two different computations to see if they are consistent. This is called a \"consistency check.\"</p>",
          "polygon": [
            [
              110.865234375,
              214.435546875
            ],
            [
              482.4038391113281,
              214.435546875
            ],
            [
              482.4038391113281,
              236.84381103515625
            ],
            [
              110.865234375,
              236.84381103515625
            ]
          ],
          "bbox": [
            110.865234375,
            214.435546875,
            482.4038391113281,
            236.84381103515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/ListItem/5",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>Pretty print the output:</b> Formatting debugging output can make it easier to spot an error. We saw an example in Section <a href=\"#page-80-0\">6.9.</a> The pprint module provides a pprint function that displays built-in types in a more human-readable format.</li>",
          "polygon": [
            [
              85.763671875,
              247.030029296875
            ],
            [
              482.4027099609375,
              247.030029296875
            ],
            [
              482.4027099609375,
              281.53125
            ],
            [
              85.763671875,
              281.53125
            ]
          ],
          "bbox": [
            85.763671875,
            247.030029296875,
            482.4027099609375,
            281.53125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Again, time you spend building scaffolding can reduce the time you spend debugging.</p>",
          "polygon": [
            [
              85.9130859375,
              295.7401123046875
            ],
            [
              468.29638671875,
              295.7401123046875
            ],
            [
              468.29638671875,
              305.89453125
            ],
            [
              85.9130859375,
              305.89453125
            ]
          ],
          "bbox": [
            85.9130859375,
            295.7401123046875,
            468.29638671875,
            305.89453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/130/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/131/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-131-0\"></span><b>11.9 Glossary</b></h4>",
          "polygon": [
            [
              85.763671875,
              335.1865539550781
            ],
            [
              184.02589416503906,
              335.1865539550781
            ],
            [
              184.02589416503906,
              349.53277587890625
            ],
            [
              85.763671875,
              349.53277587890625
            ]
          ],
          "bbox": [
            85.763671875,
            335.1865539550781,
            184.02589416503906,
            349.53277587890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>dictionary:</b> A mapping from a set of keys to their corresponding values.</p>",
          "polygon": [
            [
              85.763671875,
              358.5589904785156
            ],
            [
              404.814208984375,
              358.5589904785156
            ],
            [
              404.814208984375,
              368.61871337890625
            ],
            [
              85.763671875,
              368.61871337890625
            ]
          ],
          "bbox": [
            85.763671875,
            358.5589904785156,
            404.814208984375,
            368.61871337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>key-value pair:</b> The representation of the mapping from a key to a value.</p>",
          "polygon": [
            [
              86.0625,
              378.791015625
            ],
            [
              409.693359375,
              378.791015625
            ],
            [
              409.693359375,
              388.86370849609375
            ],
            [
              86.0625,
              388.86370849609375
            ]
          ],
          "bbox": [
            86.0625,
            378.791015625,
            409.693359375,
            388.86370849609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>item:</b> Another name for a key-value pair.</p>",
          "polygon": [
            [
              85.53955078125,
              399.04998779296875
            ],
            [
              268.57598876953125,
              399.04998779296875
            ],
            [
              268.57598876953125,
              409.1097106933594
            ],
            [
              85.53955078125,
              409.1097106933594
            ]
          ],
          "bbox": [
            85.53955078125,
            399.04998779296875,
            268.57598876953125,
            409.1097106933594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>key:</b> An object that appears in a dictionary as the first part of a key-value pair.</p>",
          "polygon": [
            [
              85.3154296875,
              419.2959899902344
            ],
            [
              431.5078125,
              419.2959899902344
            ],
            [
              431.5078125,
              429.355712890625
            ],
            [
              85.3154296875,
              429.355712890625
            ]
          ],
          "bbox": [
            85.3154296875,
            419.2959899902344,
            431.5078125,
            429.355712890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/ListItem/12",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>value:</b> An object that appears in a dictionary as the second part of a key-value pair. This is more specific than our previous use of the word \"value.\"</li>",
          "polygon": [
            [
              85.46484375,
              439.3125
            ],
            [
              483.50390625,
              439.3125
            ],
            [
              483.50390625,
              461.79571533203125
            ],
            [
              85.46484375,
              461.79571533203125
            ]
          ],
          "bbox": [
            85.46484375,
            439.3125,
            483.50390625,
            461.79571533203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>implementation:</b> A way of performing a computation.</p>",
          "polygon": [
            [
              85.6142578125,
              471.9809875488281
            ],
            [
              328.8700256347656,
              471.9809875488281
            ],
            [
              328.8700256347656,
              482.04071044921875
            ],
            [
              85.6142578125,
              482.04071044921875
            ]
          ],
          "bbox": [
            85.6142578125,
            471.9809875488281,
            328.8700256347656,
            482.04071044921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>hashtable:</b> The algorithm used to implement Python dictionaries.</p>",
          "polygon": [
            [
              85.68896484375,
              491.90625
            ],
            [
              376.9793395996094,
              491.90625
            ],
            [
              376.9793395996094,
              502.2867126464844
            ],
            [
              85.68896484375,
              502.2867126464844
            ]
          ],
          "bbox": [
            85.68896484375,
            491.90625,
            376.9793395996094,
            502.2867126464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>hash function:</b> A function used by a hashtable to compute the location for a key.</p>",
          "polygon": [
            [
              85.763671875,
              512.40234375
            ],
            [
              441.795654296875,
              512.40234375
            ],
            [
              441.795654296875,
              522.53271484375
            ],
            [
              85.763671875,
              522.53271484375
            ]
          ],
          "bbox": [
            85.763671875,
            512.40234375,
            441.795654296875,
            522.53271484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/177",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>hashable:</b> A type that has a hash function. Immutable types like integers, floats and strings are hashable; mutable types like lists and dictionaries are not.</p>",
          "polygon": [
            [
              85.46484375,
              532.51171875
            ],
            [
              483.205078125,
              532.51171875
            ],
            [
              483.205078125,
              554.9727172851562
            ],
            [
              85.46484375,
              554.9727172851562
            ]
          ],
          "bbox": [
            85.46484375,
            532.51171875,
            483.205078125,
            554.9727172851562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>lookup:</b> A dictionary operation that takes a key and finds the corresponding value.</p>",
          "polygon": [
            [
              85.6142578125,
              564.609375
            ],
            [
              453.9996337890625,
              564.609375
            ],
            [
              453.9996337890625,
              575.2177124023438
            ],
            [
              85.6142578125,
              575.2177124023438
            ]
          ],
          "bbox": [
            85.6142578125,
            564.609375,
            453.9996337890625,
            575.2177124023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/ListItem/18",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>reverse lookup:</b> A dictionary operation that takes a value and finds one or more keys that map to it.</li>",
          "polygon": [
            [
              85.763671875,
              585.10546875
            ],
            [
              483.205078125,
              585.10546875
            ],
            [
              483.205078125,
              607.65771484375
            ],
            [
              85.763671875,
              607.65771484375
            ]
          ],
          "bbox": [
            85.763671875,
            585.10546875,
            483.205078125,
            607.65771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>singleton:</b> A list (or other sequence) with a single element.</p>",
          "polygon": [
            [
              85.68896484375,
              617.58984375
            ],
            [
              347.537109375,
              617.58984375
            ],
            [
              347.537109375,
              627.9037170410156
            ],
            [
              85.68896484375,
              627.9037170410156
            ]
          ],
          "bbox": [
            85.68896484375,
            617.58984375,
            347.537109375,
            627.9037170410156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/ListItem/20",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>call graph:</b> A diagram that shows every frame created during the execution of a program, with an arrow from each caller to each callee.</li>",
          "polygon": [
            [
              85.9130859375,
              637.3125
            ],
            [
              482.90625,
              637.3125
            ],
            [
              482.90625,
              660.3437194824219
            ],
            [
              85.9130859375,
              660.3437194824219
            ]
          ],
          "bbox": [
            85.9130859375,
            637.3125,
            482.90625,
            660.3437194824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/21",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>histogram:</b> A set of counters.</p>",
          "polygon": [
            [
              85.763671875,
              670.5300140380859
            ],
            [
              216.37161254882812,
              670.5300140380859
            ],
            [
              216.37161254882812,
              680.589729309082
            ],
            [
              85.763671875,
              680.589729309082
            ]
          ],
          "bbox": [
            85.763671875,
            670.5300140380859,
            216.37161254882812,
            680.589729309082
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/131/Text/22",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>memo:</b> A computed value stored to avoid unnecessary future computation.</p>",
          "polygon": [
            [
              86.361328125,
              690.775016784668
            ],
            [
              421.048828125,
              690.775016784668
            ],
            [
              421.048828125,
              700.8347320556641
            ],
            [
              86.361328125,
              700.8347320556641
            ]
          ],
          "bbox": [
            86.361328125,
            690.775016784668,
            421.048828125,
            700.8347320556641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/131/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/132/Page/289",
      "block_type": "Page",
      "html": "<content-ref src='/page/132/PageHeader/0'></content-ref><content-ref src='/page/132/PageHeader/16'></content-ref><content-ref src='/page/132/ListGroup/287'></content-ref><content-ref src='/page/132/Text/3'></content-ref><content-ref src='/page/132/SectionHeader/4'></content-ref><content-ref src='/page/132/Text/5'></content-ref><content-ref src='/page/132/Text/6'></content-ref><content-ref src='/page/132/Text/7'></content-ref><content-ref src='/page/132/Text/8'></content-ref><content-ref src='/page/132/Text/9'></content-ref><content-ref src='/page/132/Text/10'></content-ref><content-ref src='/page/132/Text/11'></content-ref><content-ref src='/page/132/Text/12'></content-ref><content-ref src='/page/132/Text/13'></content-ref><content-ref src='/page/132/Text/14'></content-ref><content-ref src='/page/132/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/132/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/132/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              61.1982421875
            ],
            [
              525.9375,
              61.1982421875
            ],
            [
              525.9375,
              70.4794921875
            ],
            [
              509.80078125,
              70.4794921875
            ]
          ],
          "bbox": [
            509.80078125,
            61.1982421875,
            525.9375,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/132/ListGroup/287",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/132/ListItem/1'></content-ref><content-ref src='/page/132/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              128.6455078125,
              88.7381591796875
            ],
            [
              525.6030883789062,
              88.7381591796875
            ],
            [
              525.6030883789062,
              131.1568603515625
            ],
            [
              128.6455078125,
              131.1568603515625
            ]
          ],
          "bbox": [
            128.6455078125,
            88.7381591796875,
            525.6030883789062,
            131.1568603515625
          ],
          "children": [
            {
              "id": "/page/132/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>global variable:</b> A variable defined outside a function. Global variables can be accessed from any function.</li>",
              "polygon": [
                [
                  128.6455078125,
                  88.7381591796875
                ],
                [
                  525.6030883789062,
                  88.7381591796875
                ],
                [
                  525.6030883789062,
                  110.99188232421875
                ],
                [
                  128.6455078125,
                  110.99188232421875
                ]
              ],
              "bbox": [
                128.6455078125,
                88.7381591796875,
                525.6030883789062,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/131/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/132/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>flag:</b> A boolean variable used to indicate whether a condition is true.</li>",
              "polygon": [
                [
                  129.01904296875,
                  120.7529296875
                ],
                [
                  433.599609375,
                  120.7529296875
                ],
                [
                  433.599609375,
                  131.1568603515625
                ],
                [
                  129.01904296875,
                  131.1568603515625
                ]
              ],
              "bbox": [
                129.01904296875,
                120.7529296875,
                433.599609375,
                131.1568603515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/122/SectionHeader/1",
                "4": "/page/131/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/132/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>declaration:</b> A statement like global that tells the interpreter something about a variable.</p>",
          "polygon": [
            [
              128.9443359375,
              140.958984375
            ],
            [
              522.5784301757812,
              140.958984375
            ],
            [
              522.5784301757812,
              151.32086181640625
            ],
            [
              128.9443359375,
              151.32086181640625
            ]
          ],
          "bbox": [
            128.9443359375,
            140.958984375,
            522.5784301757812,
            151.32086181640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/131/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/132/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-132-1\"></span><b>11.10 Exercises</b></h4>",
          "polygon": [
            [
              128.42138671875,
              180.6627197265625
            ],
            [
              236.373046875,
              180.6627197265625
            ],
            [
              236.373046875,
              195.0089111328125
            ],
            [
              128.42138671875,
              195.0089111328125
            ]
          ],
          "bbox": [
            128.42138671875,
            180.6627197265625,
            236.373046875,
            195.0089111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.9.</b> <i>If you did Exercise </i><i><a href=\"#page-119-2\">10.8,</a></i><i> you already have a function named</i> has_duplicates <i>that</i> <i>takes a list as a parameter and returns</i> True <i>if there is any object that appears more than once in the</i> <i>list.</i></p>",
          "polygon": [
            [
              128.197265625,
              207.18157958984375
            ],
            [
              525.5997924804688,
              207.18157958984375
            ],
            [
              525.5997924804688,
              241.53314208984375
            ],
            [
              128.197265625,
              241.53314208984375
            ]
          ],
          "bbox": [
            128.197265625,
            207.18157958984375,
            525.5997924804688,
            241.53314208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Use a dictionary to write a faster, simpler version of</i> has_duplicates<i>. Solution:</i> <a href=\"http://thinkpython.com/code/has_duplicates.py\">http:</a> <a href=\"http://thinkpython.com/code/has_duplicates.py\">//</a> <a href=\"http://thinkpython.com/code/has_duplicates.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/has_duplicates.py\">com/</a> <a href=\"http://thinkpython.com/code/has_duplicates.py\">code/</a> <a href=\"http://thinkpython.com/code/has_duplicates.py\">has_</a> <a href=\"http://thinkpython.com/code/has_duplicates.py\">duplicates.</a> <a href=\"http://thinkpython.com/code/has_duplicates.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.794921875,
              251.3671875
            ],
            [
              525.638671875,
              251.3671875
            ],
            [
              525.638671875,
              273.86517333984375
            ],
            [
              128.794921875,
              273.86517333984375
            ]
          ],
          "bbox": [
            128.794921875,
            251.3671875,
            525.638671875,
            273.86517333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-132-0\"></span><b>Exercise 11.10.</b> <i>Two words are \"rotate pairs\" if you can rotate one of them and get the other (see</i> rotate_word <i>in Exercise </i><i><a href=\"#page-101-0\">8.12)</a></i><i>.</i></p>",
          "polygon": [
            [
              129.09375,
              276.0965576171875
            ],
            [
              525.6047973632812,
              276.0965576171875
            ],
            [
              525.6047973632812,
              298.27630615234375
            ],
            [
              129.09375,
              298.27630615234375
            ]
          ],
          "bbox": [
            129.09375,
            276.0965576171875,
            525.6047973632812,
            298.27630615234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a program that reads a wordlist and finds all the rotate pairs. Solution:</i> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">http:</a> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">//</a> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">com/</a> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">code/</a> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">rotate_</a> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">pairs.</a> <a href=\"http://thinkpython.com/code/rotate_pairs.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.794921875,
              308.3478698730469
            ],
            [
              524.443359375,
              308.3478698730469
            ],
            [
              524.443359375,
              330.5851745605469
            ],
            [
              128.794921875,
              330.5851745605469
            ]
          ],
          "bbox": [
            128.794921875,
            308.3478698730469,
            524.443359375,
            330.5851745605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 11.11.</b> <i>Here's another Puzzler from</i> Car Talk <i>(</i><a href=\"http://www.cartalk.com/content/puzzlers\">http:</a> <a href=\"http://www.cartalk.com/content/puzzlers\">//</a> <a href=\"http://www.cartalk.com/content/puzzlers\">www.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">cartalk.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">com/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">content/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">puzzlers</a> <i>):</i></p>",
          "polygon": [
            [
              129.60003662109375,
              332.7358703613281
            ],
            [
              524.7421875,
              332.7358703613281
            ],
            [
              524.7421875,
              354.97418212890625
            ],
            [
              129.60003662109375,
              354.97418212890625
            ]
          ],
          "bbox": [
            129.60003662109375,
            332.7358703613281,
            524.7421875,
            354.97418212890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/10",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>This was sent in by a fellow named Dan O'Leary. He came upon a common one-syllable,</i> <i>five-letter word recently that has the following unique property. When you remove the</i> <i>first letter, the remaining letters form a homophone of the original word, that is a word</i> <i>that sounds exactly the same. Replace the first letter, that is, put it back and remove</i> <i>the second letter and the result is yet another homophone of the original word. And the</i> <i>question is, what's the word?</i></p></blockquote>",
          "polygon": [
            [
              153.4482421875,
              369.1475830078125
            ],
            [
              501.43359375,
              369.1475830078125
            ],
            [
              501.43359375,
              440.0811767578125
            ],
            [
              153.4482421875,
              440.0811767578125
            ]
          ],
          "bbox": [
            153.4482421875,
            369.1475830078125,
            501.43359375,
            440.0811767578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/11",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>Now I'm going to give you an example that doesn't work. Let's look at the five-letter</i> <i>word, 'wrack.' W-R-A-C-K, you know like to 'wrack with pain.' If I remove the first</i> <i>letter, I am left with a four-letter word, 'R-A-C-K.' As in, 'Holy cow, did you see the</i> <i>rack on that buck! It must have been a nine-pointer!' It's a perfect homophone. If you</i> <i>put the 'w' back, and remove the 'r,' instead, you're left with the word, 'wack,' which is</i> <i>a real word, it's just not a homophone of the other two words.</i></p></blockquote>",
          "polygon": [
            [
              152.701171875,
              446.298583984375
            ],
            [
              500.6975402832031,
              446.298583984375
            ],
            [
              500.6975402832031,
              517.232177734375
            ],
            [
              152.701171875,
              517.232177734375
            ]
          ],
          "bbox": [
            152.701171875,
            446.298583984375,
            500.6975402832031,
            517.232177734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/12",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>But there is, however, at least one word that Dan and we know of, which will yield two</i> <i>homophones if you remove either of the first two letters to make two, new four-letter</i> <i>words. The question is, what's the word?</i></p></blockquote>",
          "polygon": [
            [
              154.1953125,
              523.4495849609375
            ],
            [
              500.8359375,
              523.4495849609375
            ],
            [
              500.8359375,
              557.8001708984375
            ],
            [
              154.1953125,
              557.8001708984375
            ]
          ],
          "bbox": [
            154.1953125,
            523.4495849609375,
            500.8359375,
            557.8001708984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You can use the dictionary from Exercise </i><i><a href=\"#page-123-1\">11.1</a></i><i> to check whether a string is in the word list.</i></p>",
          "polygon": [
            [
              129.60003662109375,
              571.5703125
            ],
            [
              490.1864013671875,
              571.5703125
            ],
            [
              490.1864013671875,
              581.9361724853516
            ],
            [
              129.60003662109375,
              581.9361724853516
            ]
          ],
          "bbox": [
            129.60003662109375,
            571.5703125,
            490.1864013671875,
            581.9361724853516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>To check whether two words are homophones, you can use the CMU Pronouncing Dictionary.</i> <i>You can download it from</i> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">http:</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">//</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">www.</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">speech.</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">cs.</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">cmu.</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">edu/</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">cgi-bin/</a> <a href=\"http://www.speech.cs.cmu.edu/cgi-bin/cmudict\">cmudict</a> <i>or from</i> <a href=\"http://thinkpython.com/code/c06d\">http:</a> <a href=\"http://thinkpython.com/code/c06d\">//</a> <a href=\"http://thinkpython.com/code/c06d\">thinkpython.</a> <a href=\"http://thinkpython.com/code/c06d\">com/</a> <a href=\"http://thinkpython.com/code/c06d\">code/</a> <a href=\"http://thinkpython.com/code/c06d\">c06d</a> <i>and you can also download</i> <a href=\"http://thinkpython.com/code/pronounce.py\">http:</a> <a href=\"http://thinkpython.com/code/pronounce.py\">//</a> <a href=\"http://thinkpython.com/code/pronounce.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/pronounce.py\">com/</a> <a href=\"http://thinkpython.com/code/pronounce.py\">code/</a> <a href=\"http://thinkpython.com/code/pronounce.py\">pronounce.</a> <a href=\"http://thinkpython.com/code/pronounce.py\">py</a> <i>, which provides a function named</i> read_dictionary <i>that reads the</i> <i>pronouncing dictionary and returns a Python dictionary that maps from each word to a string that</i> <i>describes its primary pronunciation.</i></p>",
          "polygon": [
            [
              128.794921875,
              592.111572265625
            ],
            [
              525.638671875,
              592.111572265625
            ],
            [
              525.638671875,
              663.0451812744141
            ],
            [
              128.794921875,
              663.0451812744141
            ]
          ],
          "bbox": [
            128.794921875,
            592.111572265625,
            525.638671875,
            663.0451812744141
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/132/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a program that lists all the words that solve the Puzzler. Solution:</i> <a href=\"http://thinkpython.com/code/homophone.py\">http:</a> <a href=\"http://thinkpython.com/code/homophone.py\">//</a> <a href=\"http://thinkpython.com/code/homophone.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/homophone.py\">com/</a> <a href=\"http://thinkpython.com/code/homophone.py\">code/</a> <a href=\"http://thinkpython.com/code/homophone.py\">homophone.</a> <a href=\"http://thinkpython.com/code/homophone.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.49609375,
              673.139892578125
            ],
            [
              523.9028930664062,
              673.139892578125
            ],
            [
              523.9028930664062,
              695.3771896362305
            ],
            [
              128.49609375,
              695.3771896362305
            ]
          ],
          "bbox": [
            128.49609375,
            673.139892578125,
            523.9028930664062,
            695.3771896362305
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/132/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/133/Page/3",
      "block_type": "Page",
      "html": "<content-ref src='/page/133/PageHeader/0'></content-ref><content-ref src='/page/133/PageHeader/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/133/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.08642578125
            ],
            [
              482.40338134765625,
              60.08642578125
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.08642578125,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/133/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.8671875,
              60.521484375
            ],
            [
              101.00390625,
              60.521484375
            ],
            [
              101.00390625,
              70.6728515625
            ],
            [
              84.8671875,
              70.6728515625
            ]
          ],
          "bbox": [
            84.8671875,
            60.521484375,
            101.00390625,
            70.6728515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "4": "/page/132/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/122/SectionHeader/1",
        "4": "/page/132/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/134/Page/151",
      "block_type": "Page",
      "html": "<content-ref src='/page/134/SectionHeader/0'></content-ref><content-ref src='/page/134/SectionHeader/1'></content-ref><content-ref src='/page/134/SectionHeader/2'></content-ref><content-ref src='/page/134/Text/3'></content-ref><content-ref src='/page/134/Text/4'></content-ref><content-ref src='/page/134/Text/5'></content-ref><content-ref src='/page/134/Text/6'></content-ref><content-ref src='/page/134/Code/7'></content-ref><content-ref src='/page/134/Text/8'></content-ref><content-ref src='/page/134/Code/9'></content-ref><content-ref src='/page/134/Code/10'></content-ref><content-ref src='/page/134/Text/11'></content-ref><content-ref src='/page/134/Code/12'></content-ref><content-ref src='/page/134/Text/13'></content-ref><content-ref src='/page/134/Code/14'></content-ref><content-ref src='/page/134/Text/15'></content-ref><content-ref src='/page/134/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/134/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-134-0\"></span><b>Chapter 12</b></h2>",
          "polygon": [
            [
              128.9443359375,
              162.615234375
            ],
            [
              232.6376953125,
              162.615234375
            ],
            [
              232.6376953125,
              183.574951171875
            ],
            [
              128.9443359375,
              183.574951171875
            ]
          ],
          "bbox": [
            128.9443359375,
            162.615234375,
            232.6376953125,
            183.574951171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/122/SectionHeader/1",
            "2": "/page/134/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/134/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Tuples</b></h1>",
          "polygon": [
            [
              128.6455078125,
              217.059326171875
            ],
            [
              204.87843322753906,
              217.059326171875
            ],
            [
              204.87843322753906,
              241.84637451171875
            ],
            [
              128.6455078125,
              241.84637451171875
            ]
          ],
          "bbox": [
            128.6455078125,
            217.059326171875,
            204.87843322753906,
            241.84637451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/134/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-134-1\"></span><b>12.1 Tuples are immutable</b></h4>",
          "polygon": [
            [
              128.27197265625,
              289.458984375
            ],
            [
              311.4381103515625,
              289.458984375
            ],
            [
              311.4381103515625,
              303.8710021972656
            ],
            [
              128.27197265625,
              303.8710021972656
            ]
          ],
          "bbox": [
            128.27197265625,
            289.458984375,
            311.4381103515625,
            303.8710021972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A tuple is a sequence of values. The values can be any type, and they are indexed by integers, so in that respect tuples are a lot like lists. The important difference is that tuples are immutable.</p>",
          "polygon": [
            [
              128.6455078125,
              315.0073547363281
            ],
            [
              527.1328125,
              315.0073547363281
            ],
            [
              527.1328125,
              349.35894775390625
            ],
            [
              128.6455078125,
              349.35894775390625
            ]
          ],
          "bbox": [
            128.6455078125,
            315.0073547363281,
            527.1328125,
            349.35894775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Syntactically, a tuple is a comma-separated list of values:</p>",
          "polygon": [
            [
              128.42138671875,
              357.71484375
            ],
            [
              380.109375,
              357.71484375
            ],
            [
              380.109375,
              368.2869567871094
            ],
            [
              128.42138671875,
              368.2869567871094
            ]
          ],
          "bbox": [
            128.42138671875,
            357.71484375,
            380.109375,
            368.2869567871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; t = 'a', 'b', 'c', 'd', 'e'</p>",
          "polygon": [
            [
              129.60000610351562,
              373.1318054199219
            ],
            [
              291.7033996582031,
              373.1318054199219
            ],
            [
              291.7033996582031,
              383.0943908691406
            ],
            [
              129.60000610351562,
              383.0943908691406
            ]
          ],
          "bbox": [
            129.60000610351562,
            373.1318054199219,
            291.7033996582031,
            383.0943908691406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although it is not necessary, it is common to enclose tuples in parentheses:</p>",
          "polygon": [
            [
              129.60000610351562,
              387.4921875
            ],
            [
              458.103515625,
              387.4921875
            ],
            [
              458.103515625,
              398.2009582519531
            ],
            [
              129.60000610351562,
              398.2009582519531
            ]
          ],
          "bbox": [
            129.60000610351562,
            387.4921875,
            458.103515625,
            398.2009582519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ('a', 'b', 'c', 'd', 'e')</pre>",
          "polygon": [
            [
              128.86962890625,
              402.9609375
            ],
            [
              302.1624450683594,
              402.9609375
            ],
            [
              302.1624450683594,
              413.0083923339844
            ],
            [
              128.86962890625,
              413.0083923339844
            ]
          ],
          "bbox": [
            128.86962890625,
            402.9609375,
            302.1624450683594,
            413.0083923339844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To create a tuple with a single element, you have to include a final comma:</p>",
          "polygon": [
            [
              128.49609375,
              417.26953125
            ],
            [
              457.2200622558594,
              417.26953125
            ],
            [
              457.2200622558594,
              428.1149597167969
            ],
            [
              128.49609375,
              428.1149597167969
            ]
          ],
          "bbox": [
            128.49609375,
            417.26953125,
            457.2200622558594,
            428.1149597167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t1 = 'a',\n&gt;&gt;&gt; type(t1)\n&lt;type 'tuple'&gt;\nA value in parentheses is not a tuple:\n&gt;&gt;&gt; t2 = ('a')</pre>",
          "polygon": [
            [
              129.60006713867188,
              432.9598083496094
            ],
            [
              292.10003662109375,
              432.9598083496094
            ],
            [
              292.10003662109375,
              497.2243957519531
            ],
            [
              129.60006713867188,
              497.2243957519531
            ]
          ],
          "bbox": [
            129.60006713867188,
            432.9598083496094,
            292.10003662109375,
            497.2243957519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; type(t2)\n&lt;type 'str'&gt;</pre>",
          "polygon": [
            [
              127.599609375,
              496.546875
            ],
            [
              193.640625,
              496.546875
            ],
            [
              193.640625,
              521.6123962402344
            ],
            [
              127.599609375,
              521.6123962402344
            ]
          ],
          "bbox": [
            127.599609375,
            496.546875,
            193.640625,
            521.6123962402344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another way to create a tuple is the built-in function tuple. With no argument, it creates an empty tuple:</p>",
          "polygon": [
            [
              128.9443359375,
              526.6068115234375
            ],
            [
              525.9375,
              526.6068115234375
            ],
            [
              525.9375,
              549.140625
            ],
            [
              128.9443359375,
              549.140625
            ]
          ],
          "bbox": [
            128.9443359375,
            526.6068115234375,
            525.9375,
            549.140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = tuple()\n&gt;&gt;&gt; print t\n()</pre>",
          "polygon": [
            [
              128.49609375,
              553.7578125
            ],
            [
              208.05557250976562,
              553.7578125
            ],
            [
              208.05557250976562,
              588.1094207763672
            ],
            [
              128.49609375,
              588.1094207763672
            ]
          ],
          "bbox": [
            128.49609375,
            553.7578125,
            208.05557250976562,
            588.1094207763672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the argument is a sequence (string, list or tuple), the result is a tuple with the elements of the sequence:</p>",
          "polygon": [
            [
              128.197265625,
              592.453125
            ],
            [
              526.236328125,
              592.453125
            ],
            [
              526.236328125,
              615.65625
            ],
            [
              128.197265625,
              615.65625
            ]
          ],
          "bbox": [
            128.197265625,
            592.453125,
            526.236328125,
            615.65625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = tuple('lupins')\n&gt;&gt;&gt; print t\n('l', 'u', 'p', 'i', 'n', 's')</pre>",
          "polygon": [
            [
              128.3466796875,
              620.2548217773438
            ],
            [
              286.4745178222656,
              620.2548217773438
            ],
            [
              286.4745178222656,
              654.6064300537109
            ],
            [
              128.3466796875,
              654.6064300537109
            ]
          ],
          "bbox": [
            128.3466796875,
            620.2548217773438,
            286.4745178222656,
            654.6064300537109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Because tuple is the name of a built-in function, you should avoid using it as a variable name.</p>",
          "polygon": [
            [
              128.9443359375,
              658.1953125
            ],
            [
              526.53515625,
              658.1953125
            ],
            [
              526.53515625,
              681.9069900512695
            ],
            [
              128.9443359375,
              681.9069900512695
            ]
          ],
          "bbox": [
            128.9443359375,
            658.1953125,
            526.53515625,
            681.9069900512695
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/134/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most list operators also work on tuples. The bracket operator indexes an element:</p>",
          "polygon": [
            [
              128.197265625,
              690.29296875
            ],
            [
              488.583984375,
              690.29296875
            ],
            [
              488.583984375,
              700.8349914550781
            ],
            [
              128.197265625,
              700.8349914550781
            ]
          ],
          "bbox": [
            128.197265625,
            690.29296875,
            488.583984375,
            700.8349914550781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "4": "/page/134/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/135/Page/181",
      "block_type": "Page",
      "html": "<content-ref src='/page/135/PageHeader/0'></content-ref><content-ref src='/page/135/PageHeader/20'></content-ref><content-ref src='/page/135/Code/1'></content-ref><content-ref src='/page/135/Text/2'></content-ref><content-ref src='/page/135/TextInlineMath/3'></content-ref><content-ref src='/page/135/Text/4'></content-ref><content-ref src='/page/135/Text/5'></content-ref><content-ref src='/page/135/Text/6'></content-ref><content-ref src='/page/135/Code/7'></content-ref><content-ref src='/page/135/SectionHeader/8'></content-ref><content-ref src='/page/135/Text/9'></content-ref><content-ref src='/page/135/Code/177'></content-ref><content-ref src='/page/135/Text/11'></content-ref><content-ref src='/page/135/TextInlineMath/12'></content-ref><content-ref src='/page/135/Text/13'></content-ref><content-ref src='/page/135/Text/14'></content-ref><content-ref src='/page/135/Code/15'></content-ref><content-ref src='/page/135/Text/16'></content-ref><content-ref src='/page/135/Code/17'></content-ref><content-ref src='/page/135/Text/18'></content-ref><content-ref src='/page/135/Code/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/135/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.1015625
            ],
            [
              482.4034118652344,
              61.1015625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.1015625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.6142578125,
              60.76318359375
            ],
            [
              101.6015625,
              60.76318359375
            ],
            [
              101.6015625,
              70.23779296875
            ],
            [
              85.6142578125,
              70.23779296875
            ]
          ],
          "bbox": [
            85.6142578125,
            60.76318359375,
            101.6015625,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ('a', 'b', 'c', 'd', 'e')\n&gt;&gt;&gt; print t[0]\n'a'</pre>",
          "polygon": [
            [
              85.98779296875,
              86.3349609375
            ],
            [
              260.578125,
              86.3349609375
            ],
            [
              260.578125,
              123.03729248046875
            ],
            [
              85.98779296875,
              123.03729248046875
            ]
          ],
          "bbox": [
            85.98779296875,
            86.3349609375,
            260.578125,
            123.03729248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And the slice operator selects a range of elements.</p>",
          "polygon": [
            [
              86.40003204345703,
              130.4208984375
            ],
            [
              306.0,
              130.4208984375
            ],
            [
              306.0,
              141.28887939453125
            ],
            [
              86.40003204345703,
              141.28887939453125
            ]
          ],
          "bbox": [
            86.40003204345703,
            130.4208984375,
            306.0,
            141.28887939453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/TextInlineMath/3",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; print t[1:3] ('b', 'c')</p>",
          "polygon": [
            [
              85.9130859375,
              148.9833984375
            ],
            [
              170.0858612060547,
              148.9833984375
            ],
            [
              170.0858612060547,
              171.436279296875
            ],
            [
              85.9130859375,
              171.436279296875
            ]
          ],
          "bbox": [
            85.9130859375,
            148.9833984375,
            170.0858612060547,
            171.436279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you try to modify one of the elements of the tuple, you get an error:</p>",
          "polygon": [
            [
              85.3154296875,
              179.05078125
            ],
            [
              409.7860107421875,
              179.05078125
            ],
            [
              409.7860107421875,
              189.68890380859375
            ],
            [
              85.3154296875,
              189.68890380859375
            ]
          ],
          "bbox": [
            85.3154296875,
            179.05078125,
            409.7860107421875,
            189.68890380859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; t[0] = 'A' TypeError: object doesn't support item assignment</p>",
          "polygon": [
            [
              85.166015625,
              197.6787109375
            ],
            [
              343.65234375,
              197.6787109375
            ],
            [
              343.65234375,
              219.8363037109375
            ],
            [
              85.166015625,
              219.8363037109375
            ]
          ],
          "bbox": [
            85.166015625,
            197.6787109375,
            343.65234375,
            219.8363037109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can't modify the elements of a tuple, but you can replace one tuple with another:</p>",
          "polygon": [
            [
              85.3154296875,
              227.00390625
            ],
            [
              460.66497802734375,
              227.00390625
            ],
            [
              460.66497802734375,
              238.087890625
            ],
            [
              85.3154296875,
              238.087890625
            ]
          ],
          "bbox": [
            85.3154296875,
            227.00390625,
            460.66497802734375,
            238.087890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ('A',) + t[1:]\n&gt;&gt;&gt; print t\n('A', 'b', 'c', 'd', 'e')</pre>",
          "polygon": [
            [
              85.46484375,
              245.759765625
            ],
            [
              217.12942504882812,
              245.759765625
            ],
            [
              217.12942504882812,
              280.43035888671875
            ],
            [
              85.46484375,
              280.43035888671875
            ]
          ],
          "bbox": [
            85.46484375,
            245.759765625,
            217.12942504882812,
            280.43035888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/134/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/135/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-135-0\"></span><b>12.2 Tuple assignment</b></h4>",
          "polygon": [
            [
              85.46484375,
              315.5625
            ],
            [
              241.53985595703125,
              315.5625
            ],
            [
              241.53985595703125,
              330.0780029296875
            ],
            [
              85.46484375,
              330.0780029296875
            ]
          ],
          "bbox": [
            85.46484375,
            315.5625,
            241.53985595703125,
            330.0780029296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is often useful to swap the values of two variables. With conventional assignments, you have to use a temporary variable. For example, to swap a and b:</p>",
          "polygon": [
            [
              85.166015625,
              345.1353454589844
            ],
            [
              482.4034118652344,
              345.1353454589844
            ],
            [
              482.4034118652344,
              367.29193115234375
            ],
            [
              85.166015625,
              367.29193115234375
            ]
          ],
          "bbox": [
            85.166015625,
            345.1353454589844,
            482.4034118652344,
            367.29193115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Code/177",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; temp = a\n&gt;&gt;&gt; a = b\n&gt;&gt;&gt; b = temp</pre>",
          "polygon": [
            [
              85.68896484375,
              375.28277587890625
            ],
            [
              153.4482421875,
              375.28277587890625
            ],
            [
              153.4482421875,
              409.63336181640625
            ],
            [
              85.68896484375,
              409.63336181640625
            ]
          ],
          "bbox": [
            85.68896484375,
            375.28277587890625,
            153.4482421875,
            409.63336181640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This solution is cumbersome; <b>tuple assignment</b> is more elegant:</p>",
          "polygon": [
            [
              85.68896484375,
              417.8262023925781
            ],
            [
              367.7926940917969,
              417.8262023925781
            ],
            [
              367.7926940917969,
              427.88592529296875
            ],
            [
              85.68896484375,
              427.88592529296875
            ]
          ],
          "bbox": [
            85.68896484375,
            417.8262023925781,
            367.7926940917969,
            427.88592529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/TextInlineMath/12",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; a, b = b, a</p>",
          "polygon": [
            [
              85.166015625,
              435.87677001953125
            ],
            [
              164.85556030273438,
              435.87677001953125
            ],
            [
              164.85556030273438,
              445.88671875
            ],
            [
              85.166015625,
              445.88671875
            ]
          ],
          "bbox": [
            85.166015625,
            435.87677001953125,
            164.85556030273438,
            445.88671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The left side is a tuple of variables; the right side is a tuple of expressions. Each value is assigned to its respective variable. All the expressions on the right side are evaluated before any of the assignments.</p>",
          "polygon": [
            [
              85.46484375,
              453.62109375
            ],
            [
              482.4035339355469,
              453.62109375
            ],
            [
              482.4035339355469,
              488.47991943359375
            ],
            [
              85.46484375,
              488.47991943359375
            ]
          ],
          "bbox": [
            85.46484375,
            453.62109375,
            482.4035339355469,
            488.47991943359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The number of variables on the left and the number of values on the right have to be the same:</p>",
          "polygon": [
            [
              85.46484375,
              500.02734375
            ],
            [
              482.607421875,
              500.02734375
            ],
            [
              482.607421875,
              522.7479248046875
            ],
            [
              85.46484375,
              522.7479248046875
            ]
          ],
          "bbox": [
            85.46484375,
            500.02734375,
            482.607421875,
            522.7479248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Code/15",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; a, b = 1, 2, 3\nValueError: too many values to unpack</pre>",
          "polygon": [
            [
              85.39013671875,
              530.73876953125
            ],
            [
              280.30078125,
              530.73876953125
            ],
            [
              280.30078125,
              552.8953704833984
            ],
            [
              85.39013671875,
              552.8953704833984
            ]
          ],
          "bbox": [
            85.39013671875,
            530.73876953125,
            280.30078125,
            552.8953704833984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">More generally, the right side can be any kind of sequence (string, list or tuple). For example, to split an email address into a user name and a domain, you could write:</p>",
          "polygon": [
            [
              85.46484375,
              561.12890625
            ],
            [
              482.4034729003906,
              561.12890625
            ],
            [
              482.4034729003906,
              583.3419189453125
            ],
            [
              85.46484375,
              583.3419189453125
            ]
          ],
          "bbox": [
            85.46484375,
            561.12890625,
            482.4034729003906,
            583.3419189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Code/17",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; addr = 'monty@python.org'\n&gt;&gt;&gt; uname, domain = addr.split('@')</pre>",
          "polygon": [
            [
              85.46484375,
              591.29296875
            ],
            [
              269.42047119140625,
              591.29296875
            ],
            [
              269.42047119140625,
              613.4893646240234
            ],
            [
              85.46484375,
              613.4893646240234
            ]
          ],
          "bbox": [
            85.46484375,
            591.29296875,
            269.42047119140625,
            613.4893646240234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value from split is a list with two elements; the first element is assigned to uname, the second to domain.</p>",
          "polygon": [
            [
              85.46484375,
              621.6297607421875
            ],
            [
              482.40069580078125,
              621.6297607421875
            ],
            [
              482.40069580078125,
              643.9359130859375
            ],
            [
              85.46484375,
              643.9359130859375
            ]
          ],
          "bbox": [
            85.46484375,
            621.6297607421875,
            482.40069580078125,
            643.9359130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/135/Code/19",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print uname\nmonty\n&gt;&gt;&gt; print domain\npython.org</pre>",
          "polygon": [
            [
              85.53955078125,
              651.9267578125
            ],
            [
              173.3203125,
              651.9267578125
            ],
            [
              173.3203125,
              698.80078125
            ],
            [
              85.53955078125,
              698.80078125
            ]
          ],
          "bbox": [
            85.53955078125,
            651.9267578125,
            173.3203125,
            698.80078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "4": "/page/135/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/136/Page/203",
      "block_type": "Page",
      "html": "<content-ref src='/page/136/PageHeader/0'></content-ref><content-ref src='/page/136/PageHeader/20'></content-ref><content-ref src='/page/136/SectionHeader/1'></content-ref><content-ref src='/page/136/Text/2'></content-ref><content-ref src='/page/136/Text/3'></content-ref><content-ref src='/page/136/Code/4'></content-ref><content-ref src='/page/136/Text/5'></content-ref><content-ref src='/page/136/Code/6'></content-ref><content-ref src='/page/136/Text/7'></content-ref><content-ref src='/page/136/SectionHeader/8'></content-ref><content-ref src='/page/136/Text/9'></content-ref><content-ref src='/page/136/Code/10'></content-ref><content-ref src='/page/136/Text/11'></content-ref><content-ref src='/page/136/Code/12'></content-ref><content-ref src='/page/136/Text/13'></content-ref><content-ref src='/page/136/Code/14'></content-ref><content-ref src='/page/136/Text/15'></content-ref><content-ref src='/page/136/Text/16'></content-ref><content-ref src='/page/136/TextInlineMath/17'></content-ref><content-ref src='/page/136/Text/18'></content-ref><content-ref src='/page/136/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/136/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.3466796875,
              61.14990234375
            ],
            [
              525.6033935546875,
              61.14990234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.3466796875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.3466796875,
            61.14990234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.501953125,
              60.37646484375
            ],
            [
              526.833984375,
              60.37646484375
            ],
            [
              526.833984375,
              70.33447265625
            ],
            [
              509.501953125,
              70.33447265625
            ]
          ],
          "bbox": [
            509.501953125,
            60.37646484375,
            526.833984375,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/135/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-136-0\"></span><b>12.3 Tuples as return values</b></h4>",
          "polygon": [
            [
              128.86962890625,
              85.95379638671875
            ],
            [
              319.80194091796875,
              85.95379638671875
            ],
            [
              319.80194091796875,
              100.29998779296875
            ],
            [
              128.86962890625,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.86962890625,
            85.95379638671875,
            319.80194091796875,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Strictly speaking, a function can only return one value, but if the value is a tuple, the effect is the same as returning multiple values. For example, if you want to divide two integers and compute the quotient and remainder, it is inefficient to compute x/y and then x%y. It is better to compute them both at the same time.</p>",
          "polygon": [
            [
              128.3466796875,
              110.98828125
            ],
            [
              526.53515625,
              110.98828125
            ],
            [
              526.53515625,
              158.57501220703125
            ],
            [
              128.3466796875,
              158.57501220703125
            ]
          ],
          "bbox": [
            128.3466796875,
            110.98828125,
            526.53515625,
            158.57501220703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The built-in function divmod takes two arguments and returns a tuple of two values, the quotient and remainder. You can store the result as a tuple:</p>",
          "polygon": [
            [
              128.197265625,
              167.255859375
            ],
            [
              526.236328125,
              167.255859375
            ],
            [
              526.236328125,
              190.28997802734375
            ],
            [
              128.197265625,
              190.28997802734375
            ]
          ],
          "bbox": [
            128.197265625,
            167.255859375,
            526.236328125,
            190.28997802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/136/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = divmod(7, 3)\n&gt;&gt;&gt; print t\n(2, 1)\nOr use tuple assignment to store the elements separately:\n&gt;&gt;&gt; quot, rem = divmod(7, 3)\n&gt;&gt;&gt; print quot\n2\n&gt;&gt;&gt; print rem\n1</pre>",
          "polygon": [
            [
              126.703125,
              195.0029296875
            ],
            [
              380.54779052734375,
              195.0029296875
            ],
            [
              380.54779052734375,
              309.954345703125
            ],
            [
              126.703125,
              309.954345703125
            ]
          ],
          "bbox": [
            126.703125,
            195.0029296875,
            380.54779052734375,
            309.954345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an example of a function that returns a tuple:</p>",
          "polygon": [
            [
              128.794921875,
              314.40234375
            ],
            [
              361.880859375,
              314.40234375
            ],
            [
              361.880859375,
              325.6539001464844
            ],
            [
              128.794921875,
              325.6539001464844
            ]
          ],
          "bbox": [
            128.794921875,
            314.40234375,
            361.880859375,
            325.6539001464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/136/Code/6",
          "block_type": "Code",
          "html": "<pre>def min_max(t):\n    return min(t), max(t)</pre>",
          "polygon": [
            [
              129.5999755859375,
              330.451171875
            ],
            [
              260.3636169433594,
              330.451171875
            ],
            [
              260.3636169433594,
              353.2473449707031
            ],
            [
              129.5999755859375,
              353.2473449707031
            ]
          ],
          "bbox": [
            129.5999755859375,
            330.451171875,
            260.3636169433594,
            353.2473449707031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">max and min are built-in functions that find the largest and smallest elements of a sequence. min_max computes both and returns a tuple of two values.</p>",
          "polygon": [
            [
              129.59996032714844,
              357.71484375
            ],
            [
              525.595458984375,
              357.71484375
            ],
            [
              525.595458984375,
              381.1408996582031
            ],
            [
              129.59996032714844,
              381.1408996582031
            ]
          ],
          "bbox": [
            129.59996032714844,
            357.71484375,
            525.595458984375,
            381.1408996582031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/136/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-136-1\"></span><b>12.4 Variable-length argument tuples</b></h4>",
          "polygon": [
            [
              128.6455078125,
              409.53515625
            ],
            [
              381.8205261230469,
              409.53515625
            ],
            [
              381.8205261230469,
              423.9659729003906
            ],
            [
              128.6455078125,
              423.9659729003906
            ]
          ],
          "bbox": [
            128.6455078125,
            409.53515625,
            381.8205261230469,
            423.9659729003906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Functions can take a variable number of arguments. A parameter name that begins with * <b>gathers</b> arguments into a tuple. For example, printall takes any number of arguments and prints them:</p>",
          "polygon": [
            [
              128.794921875,
              435.05859375
            ],
            [
              525.603271484375,
              435.05859375
            ],
            [
              525.603271484375,
              470.0458984375
            ],
            [
              128.794921875,
              470.0458984375
            ]
          ],
          "bbox": [
            128.794921875,
            435.05859375,
            525.603271484375,
            470.0458984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Code/10",
          "block_type": "Code",
          "html": "<pre>def printall(*args):\n    print args</pre>",
          "polygon": [
            [
              128.27197265625,
              475.4837341308594
            ],
            [
              234.28125,
              475.4837341308594
            ],
            [
              234.28125,
              497.64031982421875
            ],
            [
              128.27197265625,
              497.64031982421875
            ]
          ],
          "bbox": [
            128.27197265625,
            475.4837341308594,
            234.28125,
            497.64031982421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The gather parameter can have any name you like, but args is conventional. Here's how the function works:</p>",
          "polygon": [
            [
              128.9443359375,
              503.12109375
            ],
            [
              525.6024169921875,
              503.12109375
            ],
            [
              525.6024169921875,
              525.5339050292969
            ],
            [
              128.9443359375,
              525.5339050292969
            ]
          ],
          "bbox": [
            128.9443359375,
            503.12109375,
            525.6024169921875,
            525.5339050292969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; printall(1, 2.0, '3')\n(1, 2.0, '3')</pre>",
          "polygon": [
            [
              127.7490234375,
              530.578125
            ],
            [
              260.329345703125,
              530.578125
            ],
            [
              260.329345703125,
              553.1283569335938
            ],
            [
              127.7490234375,
              553.1283569335938
            ]
          ],
          "bbox": [
            127.7490234375,
            530.578125,
            260.329345703125,
            553.1283569335938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The complement of gather is <b>scatter</b>. If you have a sequence of values and you want to pass it to a function as multiple arguments, you can use the * operator. For example, divmod takes exactly two arguments; it doesn't work with a tuple:</p>",
          "polygon": [
            [
              128.794921875,
              558.421875
            ],
            [
              525.638671875,
              558.421875
            ],
            [
              525.638671875,
              593.2159118652344
            ],
            [
              128.794921875,
              593.2159118652344
            ]
          ],
          "bbox": [
            128.794921875,
            558.421875,
            525.638671875,
            593.2159118652344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = (7, 3)\n&gt;&gt;&gt; divmod(t)\nTypeError: divmod expected 2 arguments, got 1</pre>",
          "polygon": [
            [
              129.46728515625,
              598.25390625
            ],
            [
              364.9762878417969,
              598.25390625
            ],
            [
              364.9762878417969,
              633.0043640136719
            ],
            [
              129.46728515625,
              633.0043640136719
            ]
          ],
          "bbox": [
            129.46728515625,
            598.25390625,
            364.9762878417969,
            633.0043640136719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/15",
          "block_type": "Text",
          "html": "<p>TypeError: <strong>init</strong>() expected 2 arguments, got 3</p>\n",
          "polygon": [
            [
              128.27197265625,
              628.03125
            ],
            [
              343.353515625,
              628.03125
            ],
            [
              343.353515625,
              638.0859375
            ],
            [
              128.27197265625,
              638.0859375
            ]
          ],
          "bbox": [
            128.27197265625,
            628.03125,
            343.353515625,
            638.0859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you scatter the tuple, it works:</p>",
          "polygon": [
            [
              128.12255859375,
              638.7403106689453
            ],
            [
              289.7188720703125,
              638.7403106689453
            ],
            [
              289.7188720703125,
              649.6875
            ],
            [
              128.12255859375,
              649.6875
            ]
          ],
          "bbox": [
            128.12255859375,
            638.7403106689453,
            289.7188720703125,
            649.6875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/TextInlineMath/17",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; divmod(*t)</p>",
          "polygon": [
            [
              129.01904296875,
              654.1397552490234
            ],
            [
              202.82508850097656,
              654.1397552490234
            ],
            [
              202.82508850097656,
              664.76953125
            ],
            [
              129.01904296875,
              664.76953125
            ]
          ],
          "bbox": [
            129.01904296875,
            654.1397552490234,
            202.82508850097656,
            664.76953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">(2, 1)</p>",
          "polygon": [
            [
              129.5999755859375,
              666.3347473144531
            ],
            [
              160.98216247558594,
              666.3347473144531
            ],
            [
              160.98216247558594,
              676.7578125
            ],
            [
              129.5999755859375,
              676.7578125
            ]
          ],
          "bbox": [
            129.5999755859375,
            666.3347473144531,
            160.98216247558594,
            676.7578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/136/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 12.1.</b> <i>Many of the built-in functions use variable-length argument tuples. For example,</i> max <i>and</i> min <i>can take any number of arguments:</i></p>",
          "polygon": [
            [
              128.3466796875,
              678.3046875
            ],
            [
              525.5968017578125,
              678.3046875
            ],
            [
              525.5968017578125,
              700.734375
            ],
            [
              128.3466796875,
              700.734375
            ]
          ],
          "bbox": [
            128.3466796875,
            678.3046875,
            525.5968017578125,
            700.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "4": "/page/136/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/137/Page/210",
      "block_type": "Page",
      "html": "<content-ref src='/page/137/PageHeader/0'></content-ref><content-ref src='/page/137/PageHeader/17'></content-ref><content-ref src='/page/137/Code/1'></content-ref><content-ref src='/page/137/SectionHeader/2'></content-ref><content-ref src='/page/137/Text/3'></content-ref><content-ref src='/page/137/Text/4'></content-ref><content-ref src='/page/137/Code/5'></content-ref><content-ref src='/page/137/Text/6'></content-ref><content-ref src='/page/137/Text/7'></content-ref><content-ref src='/page/137/TextInlineMath/8'></content-ref><content-ref src='/page/137/Text/9'></content-ref><content-ref src='/page/137/Code/10'></content-ref><content-ref src='/page/137/Text/11'></content-ref><content-ref src='/page/137/ListItem/207'></content-ref><content-ref src='/page/137/Text/13'></content-ref><content-ref src='/page/137/Code/14'></content-ref><content-ref src='/page/137/Text/15'></content-ref><content-ref src='/page/137/Code/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/137/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.521484375
            ],
            [
              482.4034118652344,
              60.521484375
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.521484375,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/137/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.2314453125
            ],
            [
              102.6474609375,
              60.2314453125
            ],
            [
              102.6474609375,
              70.4794921875
            ],
            [
              85.763671875,
              70.4794921875
            ]
          ],
          "bbox": [
            85.763671875,
            60.2314453125,
            102.6474609375,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/137/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; max(1,2,3)\n3\nBut sum does not.\n&gt;&gt;&gt; sum(1,2,3)\nTypeError: sum expected at most 2 arguments, got 3\nWrite a function called sumall that takes any number of arguments and returns their sum.</pre>",
          "polygon": [
            [
              86.0625,
              84.64306640625
            ],
            [
              452.357177734375,
              84.64306640625
            ],
            [
              452.357177734375,
              172.08984375
            ],
            [
              86.0625,
              172.08984375
            ]
          ],
          "bbox": [
            86.0625,
            84.64306640625,
            452.357177734375,
            172.08984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "4": "/page/136/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/137/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-137-0\"></span><b>12.5 Lists and tuples</b></h2>",
          "polygon": [
            [
              85.763671875,
              199.16015625
            ],
            [
              229.5,
              199.16015625
            ],
            [
              229.5,
              215.7159423828125
            ],
            [
              85.763671875,
              215.7159423828125
            ]
          ],
          "bbox": [
            85.763671875,
            199.16015625,
            229.5,
            215.7159423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">zip is a built-in function that takes two or more sequences and \"zips\" them into a list of tuples where each tuple contains one element from each sequence. In Python 3, zip returns an iterator of tuples, but for most purposes, an iterator behaves like a list.</p>",
          "polygon": [
            [
              85.763671875,
              226.810546875
            ],
            [
              483.50390625,
              226.810546875
            ],
            [
              483.50390625,
              262.49285888671875
            ],
            [
              85.763671875,
              262.49285888671875
            ]
          ],
          "bbox": [
            85.763671875,
            226.810546875,
            483.50390625,
            262.49285888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example zips a string and a list:</p>",
          "polygon": [
            [
              86.13720703125,
              270.896484375
            ],
            [
              247.130859375,
              270.896484375
            ],
            [
              247.130859375,
              282.6878356933594
            ],
            [
              86.13720703125,
              282.6878356933594
            ]
          ],
          "bbox": [
            86.13720703125,
            270.896484375,
            247.130859375,
            282.6878356933594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; s = 'abc'\n&gt;&gt;&gt; t = [0, 1, 2]\n&gt;&gt;&gt; zip(s, t)\n[('a', 0), ('b', 1), ('c', 2)]</pre>",
          "polygon": [
            [
              86.13720703125,
              288.7986755371094
            ],
            [
              243.27981567382812,
              288.7986755371094
            ],
            [
              243.27981567382812,
              336.638671875
            ],
            [
              86.13720703125,
              336.638671875
            ]
          ],
          "bbox": [
            86.13720703125,
            288.7986755371094,
            243.27981567382812,
            336.638671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The result is a list of tuples where each tuple contains a character from the string and the corresponding element from the list.</p>",
          "polygon": [
            [
              86.0625,
              340.119140625
            ],
            [
              482.4034118652344,
              340.119140625
            ],
            [
              482.4034118652344,
              363.91082763671875
            ],
            [
              86.0625,
              363.91082763671875
            ]
          ],
          "bbox": [
            86.0625,
            340.119140625,
            482.4034118652344,
            363.91082763671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the sequences are not the same length, the result has the length of the shorter one.</p>",
          "polygon": [
            [
              85.6142578125,
              372.0234375
            ],
            [
              454.4782409667969,
              372.0234375
            ],
            [
              454.4782409667969,
              384.1058349609375
            ],
            [
              85.6142578125,
              384.1058349609375
            ]
          ],
          "bbox": [
            85.6142578125,
            372.0234375,
            454.4782409667969,
            384.1058349609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; zip('Anne', 'Elk') [('A', 'E'), ('n', 'l'), ('n', 'k')]</p>",
          "polygon": [
            [
              85.68896484375,
              388.458984375
            ],
            [
              274.6507568359375,
              388.458984375
            ],
            [
              274.6507568359375,
              412.374267578125
            ],
            [
              85.68896484375,
              412.374267578125
            ]
          ],
          "bbox": [
            85.68896484375,
            388.458984375,
            274.6507568359375,
            412.374267578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can use tuple assignment in a for loop to traverse a list of tuples:</p>",
          "polygon": [
            [
              85.68896484375,
              416.8828125
            ],
            [
              391.7991943359375,
              416.8828125
            ],
            [
              391.7991943359375,
              428.746826171875
            ],
            [
              85.68896484375,
              428.746826171875
            ]
          ],
          "bbox": [
            85.68896484375,
            416.8828125,
            391.7991943359375,
            428.746826171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Code/10",
          "block_type": "Code",
          "html": "<pre>t = [('a', 0), ('b', 1), ('c', 2)]\nfor letter, number in t:\n    print number, letter</pre>",
          "polygon": [
            [
              85.39013671875,
              434.857666015625
            ],
            [
              264.19586181640625,
              434.857666015625
            ],
            [
              264.19586181640625,
              469.86328125
            ],
            [
              85.39013671875,
              469.86328125
            ]
          ],
          "bbox": [
            85.39013671875,
            434.857666015625,
            264.19586181640625,
            469.86328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each time through the loop, Python selects the next tuple in the list and assigns the elements to letter and number. The output of this loop is:</p>",
          "polygon": [
            [
              85.6142578125,
              474.890625
            ],
            [
              482.4034729003906,
              474.890625
            ],
            [
              482.4034729003906,
              497.77581787109375
            ],
            [
              85.6142578125,
              497.77581787109375
            ]
          ],
          "bbox": [
            85.6142578125,
            474.890625,
            482.4034729003906,
            497.77581787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/ListItem/207",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">0 a 1 b 2 c</li>",
          "polygon": [
            [
              85.166015625,
              503.88665771484375
            ],
            [
              102.9462890625,
              503.88665771484375
            ],
            [
              102.9462890625,
              538.2382659912109
            ],
            [
              85.166015625,
              538.2382659912109
            ]
          ],
          "bbox": [
            85.166015625,
            503.88665771484375,
            102.9462890625,
            538.2382659912109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you combine zip, for and tuple assignment, you get a useful idiom for traversing two (or more) sequences at the same time. For example, has_match takes two sequences, t1 and t2, and returns True if there is an index i such that t1[i] == t2[i]:</p>",
          "polygon": [
            [
              85.0166015625,
              543.33984375
            ],
            [
              482.90625,
              543.33984375
            ],
            [
              482.90625,
              578.9998321533203
            ],
            [
              85.0166015625,
              578.9998321533203
            ]
          ],
          "bbox": [
            85.0166015625,
            543.33984375,
            482.90625,
            578.9998321533203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Code/14",
          "block_type": "Code",
          "html": "<pre>def has_match(t1, t2):\n    for x, y in zip(t1, t2):\n        if x == y:\n            return True\n    return False</pre>",
          "polygon": [
            [
              86.28662109375,
              584.71875
            ],
            [
              232.84571838378906,
              584.71875
            ],
            [
              232.84571838378906,
              643.8502960205078
            ],
            [
              86.28662109375,
              643.8502960205078
            ]
          ],
          "bbox": [
            86.28662109375,
            584.71875,
            232.84571838378906,
            643.8502960205078
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you need to traverse the elements of a sequence and their indices, you can use the built-in function enumerate:</p>",
          "polygon": [
            [
              85.166015625,
              649.30078125
            ],
            [
              482.607421875,
              649.30078125
            ],
            [
              482.607421875,
              672.50390625
            ],
            [
              85.166015625,
              672.50390625
            ]
          ],
          "bbox": [
            85.166015625,
            649.30078125,
            482.607421875,
            672.50390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/137/Code/16",
          "block_type": "Code",
          "html": "<pre>for index, element in enumerate('abc'):\n    print index, element</pre>",
          "polygon": [
            [
              85.9130859375,
              677.91796875
            ],
            [
              290.3377685546875,
              677.91796875
            ],
            [
              290.3377685546875,
              700.6852874755859
            ],
            [
              85.9130859375,
              700.6852874755859
            ]
          ],
          "bbox": [
            85.9130859375,
            677.91796875,
            290.3377685546875,
            700.6852874755859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "2": "/page/137/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/138/Page/189",
      "block_type": "Page",
      "html": "<content-ref src='/page/138/PageHeader/0'></content-ref><content-ref src='/page/138/PageHeader/20'></content-ref><content-ref src='/page/138/Text/1'></content-ref><content-ref src='/page/138/Text/2'></content-ref><content-ref src='/page/138/SectionHeader/3'></content-ref><content-ref src='/page/138/Text/4'></content-ref><content-ref src='/page/138/Code/5'></content-ref><content-ref src='/page/138/Text/6'></content-ref><content-ref src='/page/138/Text/7'></content-ref><content-ref src='/page/138/Code/8'></content-ref><content-ref src='/page/138/Text/9'></content-ref><content-ref src='/page/138/Code/10'></content-ref><content-ref src='/page/138/Text/11'></content-ref><content-ref src='/page/138/Text/12'></content-ref><content-ref src='/page/138/Code/13'></content-ref><content-ref src='/page/138/Text/14'></content-ref><content-ref src='/page/138/Code/15'></content-ref><content-ref src='/page/138/Text/16'></content-ref><content-ref src='/page/138/Text/17'></content-ref><content-ref src='/page/138/Code/188'></content-ref><content-ref src='/page/138/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/138/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              61.1015625
            ],
            [
              525.6033935546875,
              61.1015625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            61.1015625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/138/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.3984375,
              60.521484375
            ],
            [
              525.9375,
              60.521484375
            ],
            [
              525.9375,
              70.189453125
            ],
            [
              510.3984375,
              70.189453125
            ]
          ],
          "bbox": [
            510.3984375,
            60.521484375,
            525.9375,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The output of this loop is:</p>",
          "polygon": [
            [
              128.3466796875,
              88.171875
            ],
            [
              242.97439575195312,
              88.171875
            ],
            [
              242.97439575195312,
              98.79791259765625
            ],
            [
              128.3466796875,
              98.79791259765625
            ]
          ],
          "bbox": [
            128.3466796875,
            88.171875,
            242.97439575195312,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">0 a 1 b 2 c Again.</p>",
          "polygon": [
            [
              128.6455078125,
              104.80078125
            ],
            [
              165.7001953125,
              104.80078125
            ],
            [
              165.7001953125,
              156.02496337890625
            ],
            [
              128.6455078125,
              156.02496337890625
            ]
          ],
          "bbox": [
            128.6455078125,
            104.80078125,
            165.7001953125,
            156.02496337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/138/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-138-0\"></span><b>12.6 Dictionaries and tuples</b></h4>",
          "polygon": [
            [
              128.57080078125,
              186.1083984375
            ],
            [
              322.0256042480469,
              186.1083984375
            ],
            [
              322.0256042480469,
              200.4730224609375
            ],
            [
              128.57080078125,
              200.4730224609375
            ]
          ],
          "bbox": [
            128.57080078125,
            186.1083984375,
            322.0256042480469,
            200.4730224609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Dictionaries have a method called items that returns a list of tuples, where each tuple is a key-value pair.</p>",
          "polygon": [
            [
              129.09375,
              212.6953125
            ],
            [
              525.5999755859375,
              212.6953125
            ],
            [
              525.5999755859375,
              235.33001708984375
            ],
            [
              129.09375,
              235.33001708984375
            ]
          ],
          "bbox": [
            129.09375,
            212.6953125,
            525.5999755859375,
            235.33001708984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; d = {'a':0, 'b':1, 'c':2}\n&gt;&gt;&gt; t = d.items()\n&gt;&gt;&gt; print t\n[('a', 0), ('c', 2), ('b', 1)]</pre>",
          "polygon": [
            [
              129.16845703125,
              241.6368408203125
            ],
            [
              286.4798583984375,
              241.6368408203125
            ],
            [
              286.4798583984375,
              288.1824645996094
            ],
            [
              129.16845703125,
              288.1824645996094
            ]
          ],
          "bbox": [
            129.16845703125,
            241.6368408203125,
            286.4798583984375,
            288.1824645996094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As you should expect from a dictionary, the items are in no particular order. In Python 3, items returns an iterator, but for many purposes, iterators behave like lists.</p>",
          "polygon": [
            [
              129.60003662109375,
              294.099609375
            ],
            [
              525.6033935546875,
              294.099609375
            ],
            [
              525.6033935546875,
              316.9450378417969
            ],
            [
              129.60003662109375,
              316.9450378417969
            ]
          ],
          "bbox": [
            129.60003662109375,
            294.099609375,
            525.6033935546875,
            316.9450378417969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Going in the other direction, you can use a list of tuples to initialize a new dictionary:</p>",
          "polygon": [
            [
              128.794921875,
              327.1640625
            ],
            [
              504.15386962890625,
              327.1640625
            ],
            [
              504.15386962890625,
              337.3360290527344
            ],
            [
              128.794921875,
              337.3360290527344
            ]
          ],
          "bbox": [
            128.794921875,
            327.1640625,
            504.15386962890625,
            337.3360290527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = [('a', 0), ('c', 2), ('b', 1)]\n&gt;&gt;&gt; d = dict(t)\n&gt;&gt;&gt; print d\n{'a': 0, 'c': 2, 'b': 1}</pre>",
          "polygon": [
            [
              129.5419921875,
              343.40625
            ],
            [
              328.3128967285156,
              343.40625
            ],
            [
              328.3128967285156,
              393.6796875
            ],
            [
              129.5419921875,
              393.6796875
            ]
          ],
          "bbox": [
            129.5419921875,
            343.40625,
            328.3128967285156,
            393.6796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Combining dict with zip yields a concise way to create a dictionary:</p>",
          "polygon": [
            [
              127.4501953125,
              396.6448974609375
            ],
            [
              434.49609375,
              396.6448974609375
            ],
            [
              434.49609375,
              406.7570495605469
            ],
            [
              127.4501953125,
              406.7570495605469
            ]
          ],
          "bbox": [
            127.4501953125,
            396.6448974609375,
            434.49609375,
            406.7570495605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; d = dict(zip('abc', range(3)))\n&gt;&gt;&gt; print d\n{'a': 0, 'c': 2, 'b': 1}</pre>",
          "polygon": [
            [
              128.57080078125,
              413.0649108886719
            ],
            [
              307.40447998046875,
              413.0649108886719
            ],
            [
              307.40447998046875,
              447.4154968261719
            ],
            [
              128.57080078125,
              447.4154968261719
            ]
          ],
          "bbox": [
            128.57080078125,
            413.0649108886719,
            307.40447998046875,
            447.4154968261719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The dictionary method update also takes a list of tuples and adds them, as key-value pairs, to an existing dictionary.</p>",
          "polygon": [
            [
              129.60011291503906,
              453.8719177246094
            ],
            [
              525.9375,
              453.8719177246094
            ],
            [
              525.9375,
              476.1790771484375
            ],
            [
              129.60011291503906,
              476.1790771484375
            ]
          ],
          "bbox": [
            129.60011291503906,
            453.8719177246094,
            525.9375,
            476.1790771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Combining items, tuple assignment and for, you get the idiom for traversing the keys and values of a dictionary:</p>",
          "polygon": [
            [
              129.09375,
              486.4569091796875
            ],
            [
              525.5986328125,
              486.4569091796875
            ],
            [
              525.5986328125,
              508.7640686035156
            ],
            [
              129.09375,
              508.7640686035156
            ]
          ],
          "bbox": [
            129.09375,
            486.4569091796875,
            525.5986328125,
            508.7640686035156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Code/13",
          "block_type": "Code",
          "html": "<pre>for key, val in d.items():\n    print val, key</pre>",
          "polygon": [
            [
              128.794921875,
              515.0709228515625
            ],
            [
              265.59954833984375,
              515.0709228515625
            ],
            [
              265.59954833984375,
              539.859375
            ],
            [
              128.794921875,
              539.859375
            ]
          ],
          "bbox": [
            128.794921875,
            515.0709228515625,
            265.59954833984375,
            539.859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The output of this loop is:</p>",
          "polygon": [
            [
              128.86962890625,
              543.8334808349609
            ],
            [
              242.97450256347656,
              543.8334808349609
            ],
            [
              242.97450256347656,
              554.16796875
            ],
            [
              128.86962890625,
              554.16796875
            ]
          ],
          "bbox": [
            128.86962890625,
            543.8334808349609,
            242.97450256347656,
            554.16796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Code/15",
          "block_type": "Code",
          "html": "<pre>0 a\n2 c\n1 b</pre>",
          "polygon": [
            [
              127.8984375,
              560.1039276123047
            ],
            [
              149.2646484375,
              560.1039276123047
            ],
            [
              149.2646484375,
              596.70703125
            ],
            [
              127.8984375,
              596.70703125
            ]
          ],
          "bbox": [
            127.8984375,
            560.1039276123047,
            149.2646484375,
            596.70703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Again.</p>",
          "polygon": [
            [
              128.6455078125,
              601.0604858398438
            ],
            [
              160.0224609375,
              601.0604858398438
            ],
            [
              160.0224609375,
              611.40234375
            ],
            [
              128.6455078125,
              611.40234375
            ]
          ],
          "bbox": [
            128.6455078125,
            601.0604858398438,
            160.0224609375,
            611.40234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is common to use tuples as keys in dictionaries (primarily because you can't use lists). For example, a telephone directory might map from last-name, first-name pairs to telephone numbers. Assuming that we have defined last, first and number, we could write:</p>",
          "polygon": [
            [
              127.8984375,
              621.0703125
            ],
            [
              525.603515625,
              621.0703125
            ],
            [
              525.603515625,
              655.875
            ],
            [
              127.8984375,
              655.875
            ]
          ],
          "bbox": [
            127.8984375,
            621.0703125,
            525.603515625,
            655.875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Code/188",
          "block_type": "Code",
          "html": "<pre>directory[last,first] = number</pre>",
          "polygon": [
            [
              127.7490234375,
              662.1099395751953
            ],
            [
              286.5209655761719,
              662.1099395751953
            ],
            [
              286.5209655761719,
              672.0725402832031
            ],
            [
              127.7490234375,
              672.0725402832031
            ]
          ],
          "bbox": [
            127.7490234375,
            662.1099395751953,
            286.5209655761719,
            672.0725402832031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/138/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The expression in brackets is a tuple. We could use tuple assignment to traverse this dictionary.</p>",
          "polygon": [
            [
              128.49609375,
              678.3046875
            ],
            [
              525.6035766601562,
              678.3046875
            ],
            [
              525.6035766601562,
              700.8351058959961
            ],
            [
              128.49609375,
              700.8351058959961
            ]
          ],
          "bbox": [
            128.49609375,
            678.3046875,
            525.6035766601562,
            700.8351058959961
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "2": "/page/137/SectionHeader/2",
        "4": "/page/138/SectionHeader/3"
      },
      "images": null
    },
    {
      "id": "/page/139/Page/202",
      "block_type": "Page",
      "html": "<content-ref src='/page/139/PageHeader/0'></content-ref><content-ref src='/page/139/PageHeader/17'></content-ref><content-ref src='/page/139/Text/1'></content-ref><content-ref src='/page/139/Text/170'></content-ref><content-ref src='/page/139/TableGroup/171'></content-ref><content-ref src='/page/139/Code/6'></content-ref><content-ref src='/page/139/Text/7'></content-ref><content-ref src='/page/139/Text/8'></content-ref><content-ref src='/page/139/Text/9'></content-ref><content-ref src='/page/139/Text/10'></content-ref><content-ref src='/page/139/Text/11'></content-ref><content-ref src='/page/139/SectionHeader/12'></content-ref><content-ref src='/page/139/Text/13'></content-ref><content-ref src='/page/139/Code/14'></content-ref><content-ref src='/page/139/Text/15'></content-ref><content-ref src='/page/139/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/139/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.47314453125
            ],
            [
              482.4034118652344,
              60.47314453125
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.47314453125,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.94189453125,
              60.47314453125
            ],
            [
              101.67626953125,
              60.47314453125
            ],
            [
              101.67626953125,
              70.52783203125
            ],
            [
              84.94189453125,
              70.52783203125
            ]
          ],
          "bbox": [
            84.94189453125,
            60.47314453125,
            101.67626953125,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">tuple</p>",
          "polygon": [
            [
              235.52000427246094,
              87.45758056640625
            ],
            [
              268.9453125,
              87.45758056640625
            ],
            [
              268.9453125,
              97.98486328125
            ],
            [
              235.52000427246094,
              97.98486328125
            ]
          ],
          "bbox": [
            235.52000427246094,
            87.45758056640625,
            268.9453125,
            97.98486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/170",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">0 1 'Cleese' 'John'</p>",
          "polygon": [
            [
              232.9365234375,
              99.193359375
            ],
            [
              327.515625,
              99.193359375
            ],
            [
              327.515625,
              132.064453125
            ],
            [
              232.9365234375,
              132.064453125
            ]
          ],
          "bbox": [
            232.9365234375,
            99.193359375,
            327.515625,
            132.064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/TableGroup/171",
          "block_type": "TableGroup",
          "html": "<content-ref src='/page/139/Caption/3'></content-ref><content-ref src='/page/139/Table/4'></content-ref><content-ref src='/page/139/Caption/5'></content-ref>",
          "polygon": [
            [
              188.859375,
              144.439453125
            ],
            [
              375.029296875,
              144.439453125
            ],
            [
              375.029296875,
              293.87188720703125
            ],
            [
              188.859375,
              293.87188720703125
            ]
          ],
          "bbox": [
            188.859375,
            144.439453125,
            375.029296875,
            293.87188720703125
          ],
          "children": [
            {
              "id": "/page/139/Caption/3",
              "block_type": "Caption",
              "html": "<p><span id=\"page-139-1\"></span>Figure 12.1: State diagram.</p>",
              "polygon": [
                [
                  224.12109375,
                  144.439453125
                ],
                [
                  343.2491760253906,
                  144.439453125
                ],
                [
                  343.2491760253906,
                  155.55291748046875
                ],
                [
                  224.12109375,
                  155.55291748046875
                ]
              ],
              "bbox": [
                224.12109375,
                144.439453125,
                343.2491760253906,
                155.55291748046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "4": "/page/138/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/139/Table/4",
              "block_type": "Table",
              "html": "<table><tbody><tr><th></th><th>dict</th></tr><tr><th></th><td>('Cleese', 'John') → '08700 100 222'</td></tr><tr><th></th><td>('Chapman', 'Graham') → '08700 100 222'</td></tr><tr><th></th><td>('Idle', 'Eric') → '08700 100 222'</td></tr><tr><th></th><td>('Gilliam', 'Terry') → '08700 100 222'</td></tr><tr><th></th><td>('Jones', 'Terry') → '08700 100 222'</td></tr><tr><th></th><td>('Palin', 'Michael') → '08700 100 222'</td></tr></tbody></table>",
              "polygon": [
                [
                  188.859375,
                  168.17657470703125
                ],
                [
                  375.029296875,
                  168.17657470703125
                ],
                [
                  375.029296875,
                  266.0625
                ],
                [
                  188.859375,
                  266.0625
                ]
              ],
              "bbox": [
                188.859375,
                168.17657470703125,
                375.029296875,
                266.0625
              ],
              "children": [
                {
                  "id": "/page/139/TableCell/186",
                  "block_type": "TableCell",
                  "html": "<th></th>",
                  "polygon": [
                    [
                      188.859375,
                      168.17657470703125
                    ],
                    [
                      189.859375,
                      168.17657470703125
                    ],
                    [
                      189.859375,
                      169.17657470703125
                    ],
                    [
                      188.859375,
                      169.17657470703125
                    ]
                  ],
                  "bbox": [
                    188.859375,
                    168.17657470703125,
                    189.859375,
                    169.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/187",
                  "block_type": "TableCell",
                  "html": "<th>dict</th>",
                  "polygon": [
                    [
                      189.859375,
                      168.17657470703125
                    ],
                    [
                      190.859375,
                      168.17657470703125
                    ],
                    [
                      190.859375,
                      169.17657470703125
                    ],
                    [
                      189.859375,
                      169.17657470703125
                    ]
                  ],
                  "bbox": [
                    189.859375,
                    168.17657470703125,
                    190.859375,
                    169.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/188",
                  "block_type": "TableCell",
                  "html": "<th></th>",
                  "polygon": [
                    [
                      188.859375,
                      169.17657470703125
                    ],
                    [
                      189.859375,
                      169.17657470703125
                    ],
                    [
                      189.859375,
                      170.17657470703125
                    ],
                    [
                      188.859375,
                      170.17657470703125
                    ]
                  ],
                  "bbox": [
                    188.859375,
                    169.17657470703125,
                    189.859375,
                    170.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/189",
                  "block_type": "TableCell",
                  "html": "<td>('Cleese', 'John') → '08700 100 222'</td>",
                  "polygon": [
                    [
                      189.859375,
                      169.17657470703125
                    ],
                    [
                      190.859375,
                      169.17657470703125
                    ],
                    [
                      190.859375,
                      170.17657470703125
                    ],
                    [
                      189.859375,
                      170.17657470703125
                    ]
                  ],
                  "bbox": [
                    189.859375,
                    169.17657470703125,
                    190.859375,
                    170.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/190",
                  "block_type": "TableCell",
                  "html": "<th></th>",
                  "polygon": [
                    [
                      188.859375,
                      170.17657470703125
                    ],
                    [
                      189.859375,
                      170.17657470703125
                    ],
                    [
                      189.859375,
                      171.17657470703125
                    ],
                    [
                      188.859375,
                      171.17657470703125
                    ]
                  ],
                  "bbox": [
                    188.859375,
                    170.17657470703125,
                    189.859375,
                    171.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/191",
                  "block_type": "TableCell",
                  "html": "<td>('Chapman', 'Graham') → '08700 100 222'</td>",
                  "polygon": [
                    [
                      189.859375,
                      170.17657470703125
                    ],
                    [
                      190.859375,
                      170.17657470703125
                    ],
                    [
                      190.859375,
                      171.17657470703125
                    ],
                    [
                      189.859375,
                      171.17657470703125
                    ]
                  ],
                  "bbox": [
                    189.859375,
                    170.17657470703125,
                    190.859375,
                    171.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/192",
                  "block_type": "TableCell",
                  "html": "<th></th>",
                  "polygon": [
                    [
                      188.859375,
                      171.17657470703125
                    ],
                    [
                      189.859375,
                      171.17657470703125
                    ],
                    [
                      189.859375,
                      172.17657470703125
                    ],
                    [
                      188.859375,
                      172.17657470703125
                    ]
                  ],
                  "bbox": [
                    188.859375,
                    171.17657470703125,
                    189.859375,
                    172.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/193",
                  "block_type": "TableCell",
                  "html": "<td>('Idle', 'Eric') → '08700 100 222'</td>",
                  "polygon": [
                    [
                      189.859375,
                      171.17657470703125
                    ],
                    [
                      190.859375,
                      171.17657470703125
                    ],
                    [
                      190.859375,
                      172.17657470703125
                    ],
                    [
                      189.859375,
                      172.17657470703125
                    ]
                  ],
                  "bbox": [
                    189.859375,
                    171.17657470703125,
                    190.859375,
                    172.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/194",
                  "block_type": "TableCell",
                  "html": "<th></th>",
                  "polygon": [
                    [
                      188.859375,
                      172.17657470703125
                    ],
                    [
                      189.859375,
                      172.17657470703125
                    ],
                    [
                      189.859375,
                      173.17657470703125
                    ],
                    [
                      188.859375,
                      173.17657470703125
                    ]
                  ],
                  "bbox": [
                    188.859375,
                    172.17657470703125,
                    189.859375,
                    173.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/195",
                  "block_type": "TableCell",
                  "html": "<td>('Gilliam', 'Terry') → '08700 100 222'</td>",
                  "polygon": [
                    [
                      189.859375,
                      172.17657470703125
                    ],
                    [
                      190.859375,
                      172.17657470703125
                    ],
                    [
                      190.859375,
                      173.17657470703125
                    ],
                    [
                      189.859375,
                      173.17657470703125
                    ]
                  ],
                  "bbox": [
                    189.859375,
                    172.17657470703125,
                    190.859375,
                    173.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/196",
                  "block_type": "TableCell",
                  "html": "<th></th>",
                  "polygon": [
                    [
                      188.859375,
                      173.17657470703125
                    ],
                    [
                      189.859375,
                      173.17657470703125
                    ],
                    [
                      189.859375,
                      174.17657470703125
                    ],
                    [
                      188.859375,
                      174.17657470703125
                    ]
                  ],
                  "bbox": [
                    188.859375,
                    173.17657470703125,
                    189.859375,
                    174.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/197",
                  "block_type": "TableCell",
                  "html": "<td>('Jones', 'Terry') → '08700 100 222'</td>",
                  "polygon": [
                    [
                      189.859375,
                      173.17657470703125
                    ],
                    [
                      190.859375,
                      173.17657470703125
                    ],
                    [
                      190.859375,
                      174.17657470703125
                    ],
                    [
                      189.859375,
                      174.17657470703125
                    ]
                  ],
                  "bbox": [
                    189.859375,
                    173.17657470703125,
                    190.859375,
                    174.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/198",
                  "block_type": "TableCell",
                  "html": "<th></th>",
                  "polygon": [
                    [
                      188.859375,
                      174.17657470703125
                    ],
                    [
                      189.859375,
                      174.17657470703125
                    ],
                    [
                      189.859375,
                      175.17657470703125
                    ],
                    [
                      188.859375,
                      175.17657470703125
                    ]
                  ],
                  "bbox": [
                    188.859375,
                    174.17657470703125,
                    189.859375,
                    175.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                },
                {
                  "id": "/page/139/TableCell/199",
                  "block_type": "TableCell",
                  "html": "<td>('Palin', 'Michael') → '08700 100 222'</td>",
                  "polygon": [
                    [
                      189.859375,
                      174.17657470703125
                    ],
                    [
                      190.859375,
                      174.17657470703125
                    ],
                    [
                      190.859375,
                      175.17657470703125
                    ],
                    [
                      189.859375,
                      175.17657470703125
                    ]
                  ],
                  "bbox": [
                    189.859375,
                    174.17657470703125,
                    190.859375,
                    175.17657470703125
                  ],
                  "children": null,
                  "section_hierarchy": {
                    "1": "/page/134/SectionHeader/1",
                    "2": "/page/137/SectionHeader/2",
                    "4": "/page/138/SectionHeader/3"
                  },
                  "images": {}
                }
              ],
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "4": "/page/138/SectionHeader/3"
              },
              "images": null
            },
            {
              "id": "/page/139/Caption/5",
              "block_type": "Caption",
              "html": "<p><span id=\"page-139-2\"></span>Figure 12.2: State diagram.</p>",
              "polygon": [
                [
                  224.2705078125,
                  282.884765625
                ],
                [
                  343.2491760253906,
                  282.884765625
                ],
                [
                  343.2491760253906,
                  293.87188720703125
                ],
                [
                  224.2705078125,
                  293.87188720703125
                ]
              ],
              "bbox": [
                224.2705078125,
                282.884765625,
                343.2491760253906,
                293.87188720703125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "4": "/page/138/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/139/Code/6",
          "block_type": "Code",
          "html": "<pre>for last, first in directory:\n    print first, last, directory[last,first]</pre>",
          "polygon": [
            [
              85.763671875,
              316.49273681640625
            ],
            [
              321.240234375,
              316.49273681640625
            ],
            [
              321.240234375,
              339.345703125
            ],
            [
              85.763671875,
              339.345703125
            ]
          ],
          "bbox": [
            85.763671875,
            316.49273681640625,
            321.240234375,
            339.345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This loop traverses the keys in directory, which are tuples. It assigns the elements of each tuple to last and first, then prints the name and corresponding telephone number.</p>",
          "polygon": [
            [
              85.46484375,
              344.1796875
            ],
            [
              482.4014892578125,
              344.1796875
            ],
            [
              482.4014892578125,
              367.201904296875
            ],
            [
              85.46484375,
              367.201904296875
            ]
          ],
          "bbox": [
            85.46484375,
            344.1796875,
            482.4014892578125,
            367.201904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are two ways to represent tuples in a state diagram. The more detailed version shows the indices and elements just as they appear in a list. For example, the tuple ('Cleese', 'John') would appear as in Figure <a href=\"#page-139-1\">12.1.</a></p>",
          "polygon": [
            [
              85.763671875,
              376.6640625
            ],
            [
              482.607421875,
              376.6640625
            ],
            [
              482.607421875,
              411.7698974609375
            ],
            [
              85.763671875,
              411.7698974609375
            ]
          ],
          "bbox": [
            85.763671875,
            376.6640625,
            482.607421875,
            411.7698974609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But in a larger diagram you might want to leave out the details. For example, a diagram of the telephone directory might appear as in Figure <a href=\"#page-139-2\">12.2.</a></p>",
          "polygon": [
            [
              85.6142578125,
              421.13671875
            ],
            [
              482.90625,
              421.13671875
            ],
            [
              482.90625,
              444.1438903808594
            ],
            [
              85.6142578125,
              444.1438903808594
            ]
          ],
          "bbox": [
            85.6142578125,
            421.13671875,
            482.90625,
            444.1438903808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here the tuples are shown using Python syntax as a graphical shorthand.</p>",
          "polygon": [
            [
              85.6142578125,
              453.234375
            ],
            [
              408.0922546386719,
              453.234375
            ],
            [
              408.0922546386719,
              464.3238830566406
            ],
            [
              85.6142578125,
              464.3238830566406
            ]
          ],
          "bbox": [
            85.6142578125,
            453.234375,
            408.0922546386719,
            464.3238830566406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The telephone number in the diagram is the complaints line for the BBC, so please don't call it.</p>",
          "polygon": [
            [
              85.46484375,
              472.95703125
            ],
            [
              483.205078125,
              472.95703125
            ],
            [
              483.205078125,
              496.6968994140625
            ],
            [
              85.46484375,
              496.6968994140625
            ]
          ],
          "bbox": [
            85.46484375,
            472.95703125,
            483.205078125,
            496.6968994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "4": "/page/138/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/139/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-139-0\"></span><b>12.7 Comparing tuples</b></h3>",
          "polygon": [
            [
              85.46484375,
              525.55078125
            ],
            [
              244.19384765625,
              525.55078125
            ],
            [
              244.19384765625,
              540.5119476318359
            ],
            [
              85.46484375,
              540.5119476318359
            ]
          ],
          "bbox": [
            85.46484375,
            525.55078125,
            244.19384765625,
            540.5119476318359
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The relational operators work with tuples and other sequences; Python starts by comparing the first element from each sequence. If they are equal, it goes on to the next elements, and so on, until it finds elements that differ. Subsequent elements are not considered (even if they are really big).</p>",
          "polygon": [
            [
              85.9130859375,
              552.234375
            ],
            [
              483.50390625,
              552.234375
            ],
            [
              483.50390625,
              599.4618988037109
            ],
            [
              85.9130859375,
              599.4618988037109
            ]
          ],
          "bbox": [
            85.9130859375,
            552.234375,
            483.50390625,
            599.4618988037109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/139/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; (0, 1, 2) &lt; (0, 3, 4)\nTrue\n&gt;&gt;&gt; (0, 1, 2000000) &lt; (0, 3, 4)\nTrue</pre>",
          "polygon": [
            [
              85.9130859375,
              604.828125
            ],
            [
              248.54124450683594,
              604.828125
            ],
            [
              248.54124450683594,
              652.1033477783203
            ],
            [
              85.9130859375,
              652.1033477783203
            ]
          ],
          "bbox": [
            85.9130859375,
            604.828125,
            248.54124450683594,
            652.1033477783203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The sort function works the same way. It sorts primarily by first element, but in the case of a tie, it sorts by second element, and so on.</p>",
          "polygon": [
            [
              86.361328125,
              657.421875
            ],
            [
              482.4044189453125,
              657.421875
            ],
            [
              482.4044189453125,
              680.6559066772461
            ],
            [
              86.361328125,
              680.6559066772461
            ]
          ],
          "bbox": [
            86.361328125,
            657.421875,
            482.4044189453125,
            680.6559066772461
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/139/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This feature lends itself to a pattern called <b>DSU</b> for</p>",
          "polygon": [
            [
              86.0625,
              689.90625
            ],
            [
              310.482421875,
              689.90625
            ],
            [
              310.482421875,
              700.8349075317383
            ],
            [
              86.0625,
              700.8349075317383
            ]
          ],
          "bbox": [
            86.0625,
            689.90625,
            310.482421875,
            700.8349075317383
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "2": "/page/137/SectionHeader/2",
        "3": "/page/139/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/140/Page/180",
      "block_type": "Page",
      "html": "<content-ref src='/page/140/PageHeader/0'></content-ref><content-ref src='/page/140/PageHeader/16'></content-ref><content-ref src='/page/140/ListItem/1'></content-ref><content-ref src='/page/140/Text/2'></content-ref><content-ref src='/page/140/Text/3'></content-ref><content-ref src='/page/140/Text/4'></content-ref><content-ref src='/page/140/Code/5'></content-ref><content-ref src='/page/140/Text/6'></content-ref><content-ref src='/page/140/Text/7'></content-ref><content-ref src='/page/140/Text/8'></content-ref><content-ref src='/page/140/Text/9'></content-ref><content-ref src='/page/140/SectionHeader/10'></content-ref><content-ref src='/page/140/Text/11'></content-ref><content-ref src='/page/140/Text/12'></content-ref><content-ref src='/page/140/Text/13'></content-ref><content-ref src='/page/140/Text/14'></content-ref><content-ref src='/page/140/ListItem/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/140/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.09375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.09375,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.09375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              61.14990234375
            ],
            [
              525.638671875,
              61.14990234375
            ],
            [
              525.638671875,
              70.33447265625
            ],
            [
              510.099609375,
              70.33447265625
            ]
          ],
          "bbox": [
            510.099609375,
            61.14990234375,
            525.638671875,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>Decorate</b> a sequence by building a list of tuples with one or more sort keys preceding the elements from the sequence,</li>",
          "polygon": [
            [
              129.60000610351562,
              88.41357421875
            ],
            [
              526.53515625,
              88.41357421875
            ],
            [
              526.53515625,
              110.99188232421875
            ],
            [
              129.60000610351562,
              110.99188232421875
            ]
          ],
          "bbox": [
            129.60000610351562,
            88.41357421875,
            526.53515625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Sort</b> the list of tuples, and</p>",
          "polygon": [
            [
              128.49609375,
              120.33111572265625
            ],
            [
              245.935546875,
              120.33111572265625
            ],
            [
              245.935546875,
              130.390869140625
            ],
            [
              128.49609375,
              130.390869140625
            ]
          ],
          "bbox": [
            128.49609375,
            120.33111572265625,
            245.935546875,
            130.390869140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Undecorate</b> by extracting the sorted elements of the sequence.</p>",
          "polygon": [
            [
              127.37548828125,
              139.5087890625
            ],
            [
              405.80859375,
              139.5087890625
            ],
            [
              405.80859375,
              149.78985595703125
            ],
            [
              127.37548828125,
              149.78985595703125
            ]
          ],
          "bbox": [
            127.37548828125,
            139.5087890625,
            405.80859375,
            149.78985595703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, suppose you have a list of words and you want to sort them from longest to shortest:</p>",
          "polygon": [
            [
              127.599609375,
              161.1650390625
            ],
            [
              525.638671875,
              161.1650390625
            ],
            [
              525.638671875,
              183.69189453125
            ],
            [
              127.599609375,
              183.69189453125
            ]
          ],
          "bbox": [
            127.599609375,
            161.1650390625,
            525.638671875,
            183.69189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Code/5",
          "block_type": "Code",
          "html": "<pre>def sort_by_length(words):\n    t = []\n    for word in words:\n       t.append((len(word), word))\n    t.sort(reverse=True)\n    res = []\n    for length, word in t:\n        res.append(word)\n    return res</pre>",
          "polygon": [
            [
              129.6000213623047,
              188.84771728515625
            ],
            [
              307.4338073730469,
              188.84771728515625
            ],
            [
              307.4338073730469,
              324.0703125
            ],
            [
              129.6000213623047,
              324.0703125
            ]
          ],
          "bbox": [
            129.6000213623047,
            188.84771728515625,
            307.4338073730469,
            324.0703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first loop builds a list of tuples, where each tuple is a word preceded by its length.</p>",
          "polygon": [
            [
              129.2431640625,
              325.423828125
            ],
            [
              508.69696044921875,
              325.423828125
            ],
            [
              508.69696044921875,
              336.171875
            ],
            [
              129.2431640625,
              336.171875
            ]
          ],
          "bbox": [
            129.2431640625,
            325.423828125,
            508.69696044921875,
            336.171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">sort compares the first element, length, first, and only considers the second element to break ties. The keyword argument reverse=True tells sort to go in decreasing order.</p>",
          "polygon": [
            [
              128.9443359375,
              345.2997131347656
            ],
            [
              525.59912109375,
              345.2997131347656
            ],
            [
              525.59912109375,
              367.6058654785156
            ],
            [
              128.9443359375,
              367.6058654785156
            ]
          ],
          "bbox": [
            128.9443359375,
            345.2997131347656,
            525.59912109375,
            367.6058654785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second loop traverses the list of tuples and builds a list of words in descending order of length.</p>",
          "polygon": [
            [
              129.09375,
              376.6640625
            ],
            [
              525.6034545898438,
              376.6640625
            ],
            [
              525.6034545898438,
              399.03985595703125
            ],
            [
              129.09375,
              399.03985595703125
            ]
          ],
          "bbox": [
            129.09375,
            376.6640625,
            525.6034545898438,
            399.03985595703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 12.2.</b> <i>In this example, ties are broken by comparing words, so words with the same length</i> <i>appear in reverse alphabetical order. For other applications you might want to break ties at ran</i><i>dom. Modify this example so that words with the same length appear in random order. Hint:</i> <i>see the</i> random <i>function in the</i> random <i>module. Solution:</i> <a href=\"http://thinkpython.com/code/unstable_sort.py\">http:</a> <a href=\"http://thinkpython.com/code/unstable_sort.py\">//</a> <a href=\"http://thinkpython.com/code/unstable_sort.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/unstable_sort.py\">com/</a> <a href=\"http://thinkpython.com/code/unstable_sort.py\">code/</a> <a href=\"http://thinkpython.com/code/unstable_sort.py\">unstable_</a> <a href=\"http://thinkpython.com/code/unstable_sort.py\">sort.</a> <a href=\"http://thinkpython.com/code/unstable_sort.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              129.2431640625,
              401.09857177734375
            ],
            [
              525.9375,
              401.09857177734375
            ],
            [
              525.9375,
              459.83917236328125
            ],
            [
              129.2431640625,
              459.83917236328125
            ]
          ],
          "bbox": [
            129.2431640625,
            401.09857177734375,
            525.9375,
            459.83917236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/140/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-140-0\"></span><b>12.8 Sequences of sequences</b></h4>",
          "polygon": [
            [
              127.97314453125,
              488.0967102050781
            ],
            [
              326.0281982421875,
              488.0967102050781
            ],
            [
              326.0281982421875,
              502.44293212890625
            ],
            [
              127.97314453125,
              502.44293212890625
            ]
          ],
          "bbox": [
            127.97314453125,
            488.0967102050781,
            326.0281982421875,
            502.44293212890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I have focused on lists of tuples, but almost all of the examples in this chapter also work with lists of lists, tuples of tuples, and tuples of lists. To avoid enumerating the possible combinations, it is sometimes easier to talk about sequences of sequences.</p>",
          "polygon": [
            [
              128.6455078125,
              513.8912658691406
            ],
            [
              525.9375,
              513.8912658691406
            ],
            [
              525.9375,
              548.2418518066406
            ],
            [
              128.6455078125,
              548.2418518066406
            ]
          ],
          "bbox": [
            128.6455078125,
            513.8912658691406,
            525.9375,
            548.2418518066406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In many contexts, the different kinds of sequences (strings, lists and tuples) can be used interchangeably. So how and why do you choose one over the others?</p>",
          "polygon": [
            [
              128.49609375,
              557.26171875
            ],
            [
              525.9375,
              557.26171875
            ],
            [
              525.9375,
              579.6768646240234
            ],
            [
              128.49609375,
              579.6768646240234
            ]
          ],
          "bbox": [
            128.49609375,
            557.26171875,
            525.9375,
            579.6768646240234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To start with the obvious, strings are more limited than other sequences because the elements have to be characters. They are also immutable. If you need the ability to change the characters in a string (as opposed to creating a new string), you might want to use a list of characters instead.</p>",
          "polygon": [
            [
              128.0478515625,
              588.9532623291016
            ],
            [
              525.9375,
              588.9532623291016
            ],
            [
              525.9375,
              635.4988708496094
            ],
            [
              128.0478515625,
              635.4988708496094
            ]
          ],
          "bbox": [
            128.0478515625,
            588.9532623291016,
            525.9375,
            635.4988708496094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/140/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Lists are more common than tuples, mostly because they are mutable. But there are a few cases where you might prefer tuples:</p>",
          "polygon": [
            [
              127.7490234375,
              644.66015625
            ],
            [
              525.6033935546875,
              644.66015625
            ],
            [
              525.6033935546875,
              666.9338836669922
            ],
            [
              127.7490234375,
              666.9338836669922
            ]
          ],
          "bbox": [
            127.7490234375,
            644.66015625,
            525.6033935546875,
            666.9338836669922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/140/ListItem/15",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\">1. In some contexts, like a return statement, it is syntactically simpler to create a tuple than a list. In other contexts, you might prefer a list.</li>",
          "polygon": [
            [
              141.1962890625,
              678.3046875
            ],
            [
              525.6043090820312,
              678.3046875
            ],
            [
              525.6043090820312,
              700.8348846435547
            ],
            [
              141.1962890625,
              700.8348846435547
            ]
          ],
          "bbox": [
            141.1962890625,
            678.3046875,
            525.6043090820312,
            700.8348846435547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "2": "/page/137/SectionHeader/2",
        "3": "/page/139/SectionHeader/12",
        "4": "/page/140/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/141/Page/188",
      "block_type": "Page",
      "html": "<content-ref src='/page/141/PageHeader/0'></content-ref><content-ref src='/page/141/PageHeader/10'></content-ref><content-ref src='/page/141/ListGroup/187'></content-ref><content-ref src='/page/141/Text/3'></content-ref><content-ref src='/page/141/SectionHeader/4'></content-ref><content-ref src='/page/141/Text/5'></content-ref><content-ref src='/page/141/Text/6'></content-ref><content-ref src='/page/141/Text/7'></content-ref><content-ref src='/page/141/Code/8'></content-ref><content-ref src='/page/141/Text/9'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/141/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.4034118652344,
              60.71484375
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/141/PageHeader/10",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.39013671875,
              60.8115234375
            ],
            [
              101.82568359375,
              60.8115234375
            ],
            [
              101.82568359375,
              70.189453125
            ],
            [
              85.39013671875,
              70.189453125
            ]
          ],
          "bbox": [
            85.39013671875,
            60.8115234375,
            101.82568359375,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/141/ListGroup/187",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/141/ListItem/1'></content-ref><content-ref src='/page/141/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              97.41796875,
              88.70361328125
            ],
            [
              482.90625,
              88.70361328125
            ],
            [
              482.90625,
              141.47784423828125
            ],
            [
              97.41796875,
              141.47784423828125
            ]
          ],
          "bbox": [
            97.41796875,
            88.70361328125,
            482.90625,
            141.47784423828125
          ],
          "children": [
            {
              "id": "/page/141/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. If you want to use a sequence as a dictionary key, you have to use an immutable type like a tuple or string.</li>",
              "polygon": [
                [
                  98.8530044555664,
                  88.70361328125
                ],
                [
                  482.90625,
                  88.70361328125
                ],
                [
                  482.90625,
                  110.99188232421875
                ],
                [
                  98.8530044555664,
                  110.99188232421875
                ]
              ],
              "bbox": [
                98.8530044555664,
                88.70361328125,
                482.90625,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/139/SectionHeader/12",
                "4": "/page/140/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/141/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">3. If you are passing a sequence as an argument to a function, using tuples reduces the potential for unexpected behavior due to aliasing.</li>",
              "polygon": [
                [
                  97.41796875,
                  118.916015625
                ],
                [
                  482.4031677246094,
                  118.916015625
                ],
                [
                  482.4031677246094,
                  141.47784423828125
                ],
                [
                  97.41796875,
                  141.47784423828125
                ]
              ],
              "bbox": [
                97.41796875,
                118.916015625,
                482.4031677246094,
                141.47784423828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/139/SectionHeader/12",
                "4": "/page/140/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": null
        },
        {
          "id": "/page/141/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Because tuples are immutable, they don't provide methods like sort and reverse, which modify existing lists. But Python provides the built-in functions sorted and reversed, which take any sequence as a parameter and return a new list with the same elements in a different order.</p>",
          "polygon": [
            [
              85.46484375,
              149.3701171875
            ],
            [
              482.40362548828125,
              149.3701171875
            ],
            [
              482.40362548828125,
              196.2547607421875
            ],
            [
              85.46484375,
              196.2547607421875
            ]
          ],
          "bbox": [
            85.46484375,
            149.3701171875,
            482.40362548828125,
            196.2547607421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/139/SectionHeader/12",
            "4": "/page/140/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/141/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-141-0\"></span><b>12.9 Debugging</b></h3>",
          "polygon": [
            [
              85.6142578125,
              222.5216064453125
            ],
            [
              201.2607421875,
              222.5216064453125
            ],
            [
              201.2607421875,
              237.4453125
            ],
            [
              85.6142578125,
              237.4453125
            ]
          ],
          "bbox": [
            85.6142578125,
            222.5216064453125,
            201.2607421875,
            237.4453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/141/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Lists, dictionaries and tuples are known generically as <b>data structures</b>; in this chapter we are starting to see compound data structures, like lists of tuples, and dictionaries that contain tuples as keys and lists as values. Compound data structures are useful, but they are prone to what I call <b>shape errors</b>; that is, errors caused when a data structure has the wrong type, size or composition. For example, if you are expecting a list with one integer and I give you a plain old integer (not in a list), it won't work.</p>",
          "polygon": [
            [
              85.6142578125,
              246.533203125
            ],
            [
              482.90625,
              246.533203125
            ],
            [
              482.90625,
              317.9517517089844
            ],
            [
              85.6142578125,
              317.9517517089844
            ]
          ],
          "bbox": [
            85.6142578125,
            246.533203125,
            482.90625,
            317.9517517089844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/141/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To help debug these kinds of errors, I have written a module called structshape that provides a function, also called structshape, that takes any kind of data structure as an argument and returns a string that summarizes its shape. You can download it from <a href=\"http://thinkpython.com/code/structshape.py\">http://thinkpython.com/code/structshape.py</a></p>",
          "polygon": [
            [
              85.6142578125,
              325.037109375
            ],
            [
              482.4033508300781,
              325.037109375
            ],
            [
              482.4033508300781,
              372.603515625
            ],
            [
              85.6142578125,
              372.603515625
            ]
          ],
          "bbox": [
            85.6142578125,
            325.037109375,
            482.4033508300781,
            372.603515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/141/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's the result for a simple list:</p>",
          "polygon": [
            [
              85.9130859375,
              379.951171875
            ],
            [
              231.6647186279297,
              379.951171875
            ],
            [
              231.6647186279297,
              390.4167785644531
            ],
            [
              85.9130859375,
              390.4167785644531
            ]
          ],
          "bbox": [
            85.9130859375,
            379.951171875,
            231.6647186279297,
            390.4167785644531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/141/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; from structshape import structshape\n&gt;&gt;&gt; t = [1,2,3]\n&gt;&gt;&gt; print structshape(t)\nlist of 3 int\nA fancier program might write \"list of 3 ints,\" but it was easier not to deal with plurals.\nHere's a list of lists:\n&gt;&gt;&gt; t2 = [[1,2], [3,4], [5,6]]\n&gt;&gt;&gt; print structshape(t2)\nlist of 3 list of 2 int\nIf the elements of the list are not the same type, structshape groups them, in order, by\ntype:\n&gt;&gt;&gt; t3 = [1, 2, 3, 4.0, '5', '6', [7], [8], 9]\n&gt;&gt;&gt; print structshape(t3)\nlist of (3 int, float, 2 str, 2 list of int, int)\nHere's a list of tuples:\n&gt;&gt;&gt; s = 'abc'\n&gt;&gt;&gt; lt = zip(t, s)\n&gt;&gt;&gt; print structshape(lt)\nlist of 3 tuple of (int, str)\nAnd here's a dictionary with 3 items that map integers to strings.\n&gt;&gt;&gt; d = dict(lt)\n&gt;&gt;&gt; print structshape(d)\ndict of 3 int-&gt;str</pre>",
          "polygon": [
            [
              86.40007019042969,
              393.6796875
            ],
            [
              482.40252685546875,
              393.6796875
            ],
            [
              482.40252685546875,
              693.0
            ],
            [
              86.40007019042969,
              693.0
            ]
          ],
          "bbox": [
            86.40007019042969,
            393.6796875,
            482.40252685546875,
            693.0
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/141/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are having trouble keeping track of your data structures, structshape can help.</p>",
          "polygon": [
            [
              86.361328125,
              690.72265625
            ],
            [
              465.560302734375,
              690.72265625
            ],
            [
              465.560302734375,
              701.12109375
            ],
            [
              86.361328125,
              701.12109375
            ]
          ],
          "bbox": [
            86.361328125,
            690.72265625,
            465.560302734375,
            701.12109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "2": "/page/137/SectionHeader/2",
        "3": "/page/141/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/142/Page/223",
      "block_type": "Page",
      "html": "<content-ref src='/page/142/PageHeader/0'></content-ref><content-ref src='/page/142/PageHeader/19'></content-ref><content-ref src='/page/142/SectionHeader/1'></content-ref><content-ref src='/page/142/Text/2'></content-ref><content-ref src='/page/142/ListGroup/219'></content-ref><content-ref src='/page/142/SectionHeader/9'></content-ref><content-ref src='/page/142/Text/10'></content-ref><content-ref src='/page/142/Text/11'></content-ref><content-ref src='/page/142/ListItem/12'></content-ref><content-ref src='/page/142/Text/13'></content-ref><content-ref src='/page/142/Text/14'></content-ref><content-ref src='/page/142/Text/15'></content-ref><content-ref src='/page/142/ListGroup/220'></content-ref><content-ref src='/page/142/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/142/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.46728515625,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.46728515625,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.46728515625,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/142/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              61.0048828125
            ],
            [
              525.638671875,
              61.0048828125
            ],
            [
              525.638671875,
              70.189453125
            ],
            [
              510.099609375,
              70.189453125
            ]
          ],
          "bbox": [
            510.099609375,
            61.0048828125,
            525.638671875,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/142/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-142-0\"></span><b>12.10 Glossary</b></h4>",
          "polygon": [
            [
              129.60000610351562,
              85.95379638671875
            ],
            [
              234.3990020751953,
              85.95379638671875
            ],
            [
              234.3990020751953,
              100.29998779296875
            ],
            [
              129.60000610351562,
              100.29998779296875
            ]
          ],
          "bbox": [
            129.60000610351562,
            85.95379638671875,
            234.3990020751953,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/142/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>tuple:</b> An immutable sequence of elements.</p>",
          "polygon": [
            [
              128.49609375,
              110.17822265625
            ],
            [
              325.125,
              110.17822265625
            ],
            [
              325.125,
              120.23797607421875
            ],
            [
              128.49609375,
              120.23797607421875
            ]
          ],
          "bbox": [
            128.49609375,
            110.17822265625,
            325.125,
            120.23797607421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/142/ListGroup/219",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/142/ListItem/3'></content-ref><content-ref src='/page/142/ListItem/4'></content-ref><content-ref src='/page/142/ListItem/5'></content-ref><content-ref src='/page/142/ListItem/6'></content-ref><content-ref src='/page/142/ListItem/7'></content-ref><content-ref src='/page/142/ListItem/8'></content-ref></ul></p>",
          "polygon": [
            [
              128.3466796875,
              131.5810546875
            ],
            [
              525.6038208007812,
              131.5810546875
            ],
            [
              525.6038208007812,
              311.4140319824219
            ],
            [
              128.3466796875,
              311.4140319824219
            ]
          ],
          "bbox": [
            128.3466796875,
            131.5810546875,
            525.6038208007812,
            311.4140319824219
          ],
          "children": [
            {
              "id": "/page/142/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>tuple assignment:</b> An assignment with a sequence on the right side and a tuple of variables on the left. The right side is evaluated and then its elements are assigned to the variables on the left.</li>",
              "polygon": [
                [
                  128.9443359375,
                  131.5810546875
                ],
                [
                  525.6038208007812,
                  131.5810546875
                ],
                [
                  525.6038208007812,
                  166.3280029296875
                ],
                [
                  128.9443359375,
                  166.3280029296875
                ]
              ],
              "bbox": [
                128.9443359375,
                131.5810546875,
                525.6038208007812,
                166.3280029296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/142/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>gather:</b> The operation of assembling a variable-length argument tuple.</li>",
              "polygon": [
                [
                  128.3466796875,
                  177.96826171875
                ],
                [
                  441.66796875,
                  177.96826171875
                ],
                [
                  441.66796875,
                  188.02801513671875
                ],
                [
                  128.3466796875,
                  188.02801513671875
                ]
              ],
              "bbox": [
                128.3466796875,
                177.96826171875,
                441.66796875,
                188.02801513671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/142/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>scatter:</b> The operation of treating a sequence as a list of arguments.</li>",
              "polygon": [
                [
                  128.86962890625,
                  199.546875
                ],
                [
                  424.63250732421875,
                  199.546875
                ],
                [
                  424.63250732421875,
                  209.72900390625
                ],
                [
                  128.86962890625,
                  209.72900390625
                ]
              ],
              "bbox": [
                128.86962890625,
                199.546875,
                424.63250732421875,
                209.72900390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/142/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>DSU:</b> Abbreviation of \"decorate-sort-undecorate,\" a pattern that involves building a list of tuples, sorting, and extracting part of the result.</li>",
              "polygon": [
                [
                  129.09375,
                  221.3692626953125
                ],
                [
                  525.603515625,
                  221.3692626953125
                ],
                [
                  525.603515625,
                  243.6240234375
                ],
                [
                  129.09375,
                  243.6240234375
                ]
              ],
              "bbox": [
                129.09375,
                221.3692626953125,
                525.603515625,
                243.6240234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/142/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>data structure:</b> A collection of related values, often organized in lists, dictionaries, tuples, etc.</li>",
              "polygon": [
                [
                  129.2431640625,
                  255.2642822265625
                ],
                [
                  525.6031494140625,
                  255.2642822265625
                ],
                [
                  525.6031494140625,
                  277.51904296875
                ],
                [
                  129.2431640625,
                  277.51904296875
                ]
              ],
              "bbox": [
                129.2431640625,
                255.2642822265625,
                525.6031494140625,
                277.51904296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/142/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>shape (of a data structure):</b> A summary of the type, size and composition of a data structure.</li>",
              "polygon": [
                [
                  128.3466796875,
                  289.072265625
                ],
                [
                  525.6028442382812,
                  289.072265625
                ],
                [
                  525.6028442382812,
                  311.4140319824219
                ],
                [
                  128.3466796875,
                  311.4140319824219
                ]
              ],
              "bbox": [
                128.3466796875,
                289.072265625,
                525.6028442382812,
                311.4140319824219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/142/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-142-1\"></span><b>12.11 Exercises</b></h4>",
          "polygon": [
            [
              128.72021484375,
              343.4568786621094
            ],
            [
              235.97714233398438,
              343.4568786621094
            ],
            [
              235.97714233398438,
              357.8031005859375
            ],
            [
              128.72021484375,
              357.8031005859375
            ]
          ],
          "bbox": [
            128.72021484375,
            343.4568786621094,
            235.97714233398438,
            357.8031005859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/142/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 12.3.</b> <i>Write a function called</i> most_frequent <i>that takes a string and prints the let</i><i>ters in decreasing order of frequency. Find text samples from several different languages and see</i> <i>how letter frequency varies between languages. Compare your results with the tables at</i> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">//</a> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">Letter_</a> <a href=\"http://en.wikipedia.org/wiki/Letter_frequencies\">frequencies</a> <i>. Solution:</i> <a href=\"http://thinkpython.com/code/most_frequent.py\">http:</a> <a href=\"http://thinkpython.com/code/most_frequent.py\">//</a> <a href=\"http://thinkpython.com/code/most_frequent.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/most_frequent.py\">com/</a> <a href=\"http://thinkpython.com/code/most_frequent.py\">code/</a> <a href=\"http://thinkpython.com/code/most_frequent.py\">most_</a> <a href=\"http://thinkpython.com/code/most_frequent.py\">frequent.</a> <a href=\"http://thinkpython.com/code/most_frequent.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              128.6455078125,
              371.23675537109375
            ],
            [
              525.9375,
              371.23675537109375
            ],
            [
              525.9375,
              433.8984375
            ],
            [
              128.6455078125,
              433.8984375
            ]
          ],
          "bbox": [
            128.6455078125,
            371.23675537109375,
            525.9375,
            433.8984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/142/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-142-2\"></span><b>Exercise 12.4.</b> <i>More anagrams!</i></p>",
          "polygon": [
            [
              129.46728515625,
              432.2087707519531
            ],
            [
              261.474609375,
              432.2087707519531
            ],
            [
              261.474609375,
              442.40625
            ],
            [
              129.46728515625,
              442.40625
            ]
          ],
          "bbox": [
            129.46728515625,
            432.2087707519531,
            261.474609375,
            442.40625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/142/ListItem/12",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>1. Write a program that reads a word list from a file (see Section </i><i><a href=\"#page-102-1\">9.1)</a></i><i> and prints all the sets of</i> <i>words that are anagrams.</i></li>",
          "polygon": [
            [
              141.943359375,
              457.875
            ],
            [
              526.833984375,
              457.875
            ],
            [
              526.833984375,
              480.3046875
            ],
            [
              141.943359375,
              480.3046875
            ]
          ],
          "bbox": [
            141.943359375,
            457.875,
            526.833984375,
            480.3046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/142/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Here is an example of what the output might look like:</i></p>",
          "polygon": [
            [
              153.298828125,
              486.4921875
            ],
            [
              372.33984375,
              486.4921875
            ],
            [
              372.33984375,
              497.1173400878906
            ],
            [
              153.298828125,
              497.1173400878906
            ]
          ],
          "bbox": [
            153.298828125,
            486.4921875,
            372.33984375,
            497.1173400878906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/142/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">['deltas', 'desalt', 'lasted', 'salted', 'slated', 'staled'] ['retainers', 'ternaries'] ['generating', 'greatening'] ['resmelts', 'smelters', 'termless']</p>",
          "polygon": [
            [
              154.5070037841797,
              508.89288330078125
            ],
            [
              468.25445556640625,
              508.89288330078125
            ],
            [
              468.25445556640625,
              555.4384918212891
            ],
            [
              154.5070037841797,
              555.4384918212891
            ]
          ],
          "bbox": [
            154.5070037841797,
            508.89288330078125,
            468.25445556640625,
            555.4384918212891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/142/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Hint: you might want to build a dictionary that maps from a set of letters to a list of words</i> <i>that can be spelled with those letters. The question is, how can you represent the set of letters</i> <i>in a way that can be used as a key?</i></p>",
          "polygon": [
            [
              154.1953125,
              567.166748046875
            ],
            [
              525.60400390625,
              567.166748046875
            ],
            [
              525.60400390625,
              601.5173492431641
            ],
            [
              154.1953125,
              601.5173492431641
            ]
          ],
          "bbox": [
            154.1953125,
            567.166748046875,
            525.60400390625,
            601.5173492431641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/142/ListGroup/220",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/142/ListItem/16'></content-ref><content-ref src='/page/142/ListItem/17'></content-ref></ul></p>",
          "polygon": [
            [
              141.7939453125,
              613.2557525634766
            ],
            [
              525.6043090820312,
              613.2557525634766
            ],
            [
              525.6043090820312,
              681.5023651123047
            ],
            [
              141.7939453125,
              681.5023651123047
            ]
          ],
          "bbox": [
            141.7939453125,
            613.2557525634766,
            525.6043090820312,
            681.5023651123047
          ],
          "children": [
            {
              "id": "/page/142/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Modify the previous program so that it prints the largest set of anagrams first, followed by the</i> <i>second largest set, and so on.</i></li>",
              "polygon": [
                [
                  141.7939453125,
                  613.2557525634766
                ],
                [
                  525.6043090820312,
                  613.2557525634766
                ],
                [
                  525.6043090820312,
                  635.412353515625
                ],
                [
                  141.7939453125,
                  635.412353515625
                ]
              ],
              "bbox": [
                141.7939453125,
                613.2557525634766,
                525.6043090820312,
                635.412353515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/142/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. In Scrabble a \"bingo\" is when you play all seven tiles in your rack, along with a letter on</i> <i>the board, to form an eight-letter word. What set of 8 letters forms the most possible bingos?</i> <i>Hint: there are seven.</i></li>",
              "polygon": [
                [
                  142.0541229248047,
                  647.1507568359375
                ],
                [
                  525.6043090820312,
                  647.1507568359375
                ],
                [
                  525.6043090820312,
                  681.5023651123047
                ],
                [
                  142.0541229248047,
                  681.5023651123047
                ]
              ],
              "bbox": [
                142.0541229248047,
                647.1507568359375,
                525.6043090820312,
                681.5023651123047
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/142/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/anagram_sets.py\">http:</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">//</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">com/</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">code/</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">anagram_</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">sets.</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              154.5071258544922,
              688.4060668945312
            ],
            [
              435.58282470703125,
              688.4060668945312
            ],
            [
              435.58282470703125,
              698.4493637084961
            ],
            [
              154.5071258544922,
              698.4493637084961
            ]
          ],
          "bbox": [
            154.5071258544922,
            688.4060668945312,
            435.58282470703125,
            698.4493637084961
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "2": "/page/137/SectionHeader/2",
        "3": "/page/141/SectionHeader/4",
        "4": "/page/142/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/143/Page/165",
      "block_type": "Page",
      "html": "<content-ref src='/page/143/PageHeader/0'></content-ref><content-ref src='/page/143/PageHeader/13'></content-ref><content-ref src='/page/143/Text/1'></content-ref><content-ref src='/page/143/Text/2'></content-ref><content-ref src='/page/143/Text/3'></content-ref><content-ref src='/page/143/Text/4'></content-ref><content-ref src='/page/143/Text/5'></content-ref><content-ref src='/page/143/Text/6'></content-ref><content-ref src='/page/143/Text/7'></content-ref><content-ref src='/page/143/ListGroup/165'></content-ref><content-ref src='/page/143/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/143/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.607421875,
              60.66650390625
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/PageHeader/13",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.166015625,
              60.56982421875
            ],
            [
              101.6015625,
              60.56982421875
            ],
            [
              101.6015625,
              70.43115234375
            ],
            [
              85.166015625,
              70.43115234375
            ]
          ],
          "bbox": [
            85.166015625,
            60.56982421875,
            101.6015625,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 12.5.</b> <i>Two words form a \"metathesis pair\" if you can transform one into the other by</i> <i>swapping two letters; for example, \"converse\" and \"conserve.\" Write a program that finds all of</i> <i>the metathesis pairs in the dictionary. Hint: don't test all pairs of words, and don't test all possible</i> <i>swaps. Solution:</i> <a href=\"http://thinkpython.com/code/metathesis.py\">http:</a> <a href=\"http://thinkpython.com/code/metathesis.py\">//</a> <a href=\"http://thinkpython.com/code/metathesis.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/metathesis.py\">com/</a> <a href=\"http://thinkpython.com/code/metathesis.py\">code/</a> <a href=\"http://thinkpython.com/code/metathesis.py\">metathesis.</a> <a href=\"http://thinkpython.com/code/metathesis.py\">py</a> <i>. Credit: This exercise is</i> <i>inspired by an example at</i> <a href=\"http://puzzlers.org\">http:</a> <a href=\"http://puzzlers.org\">//</a> <a href=\"http://puzzlers.org\">puzzlers.</a> <a href=\"http://puzzlers.org\">org</a> <i>.</i></p>",
          "polygon": [
            [
              85.46484375,
              88.0751953125
            ],
            [
              482.90625,
              88.0751953125
            ],
            [
              482.90625,
              147.40216064453125
            ],
            [
              85.46484375,
              147.40216064453125
            ]
          ],
          "bbox": [
            85.46484375,
            88.0751953125,
            482.90625,
            147.40216064453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 12.6.</b> <i>Here's another Car Talk Puzzler (</i><a href=\"http://www.cartalk.com/content/puzzlers\">http:</a> <a href=\"http://www.cartalk.com/content/puzzlers\">//</a> <a href=\"http://www.cartalk.com/content/puzzlers\">www.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">cartalk.</a> <a href=\"http://www.cartalk.com/content/puzzlers\">com/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">content/</a> <a href=\"http://www.cartalk.com/content/puzzlers\">puzzlers</a> <i>):</i></p>",
          "polygon": [
            [
              85.46484375,
              149.2734375
            ],
            [
              480.720703125,
              149.2734375
            ],
            [
              480.720703125,
              171.79119873046875
            ],
            [
              85.46484375,
              171.79119873046875
            ]
          ],
          "bbox": [
            85.46484375,
            149.2734375,
            480.720703125,
            171.79119873046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/Text/3",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>What is the longest English word, that remains a valid English word, as you remove its</i> <i>letters one at a time?</i></p></blockquote>",
          "polygon": [
            [
              110.7158203125,
              185.9150390625
            ],
            [
              457.4974060058594,
              185.9150390625
            ],
            [
              457.4974060058594,
              208.12115478515625
            ],
            [
              110.7158203125,
              208.12115478515625
            ]
          ],
          "bbox": [
            110.7158203125,
            185.9150390625,
            457.4974060058594,
            208.12115478515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/Text/4",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>Now, letters can be removed from either end, or the middle, but you can't rearrange any</i> <i>of the letters. Every time you drop a letter, you wind up with another English word. If</i> <i>you do that, you're eventually going to wind up with one letter and that too is going</i> <i>to be an English word—one that's found in the dictionary. I want to know what's the</i> <i>longest word and how many letters does it have?</i></p></blockquote>",
          "polygon": [
            [
              110.1181640625,
              214.33856201171875
            ],
            [
              459.0,
              214.33856201171875
            ],
            [
              459.0,
              273.07818603515625
            ],
            [
              110.1181640625,
              273.07818603515625
            ]
          ],
          "bbox": [
            110.1181640625,
            214.33856201171875,
            459.0,
            273.07818603515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/Text/5",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\"><i>I'm going to give you a little modest example: Sprite. Ok? You start off with sprite,</i> <i>you take a letter off, one from the interior of the word, take the r away, and we're left</i> <i>with the word spite, then we take the e off the end, we're left with spit, we take the s off,</i> <i>we're left with pit, it, and I.</i></p></blockquote>",
          "polygon": [
            [
              110.1181640625,
              278.82421875
            ],
            [
              459.0,
              278.82421875
            ],
            [
              459.0,
              325.8402099609375
            ],
            [
              110.1181640625,
              325.8402099609375
            ]
          ],
          "bbox": [
            110.1181640625,
            278.82421875,
            459.0,
            325.8402099609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a program to find all words that can be reduced in this way, and then find the longest one.</i></p>",
          "polygon": [
            [
              85.46484375,
              339.5390625
            ],
            [
              470.3984680175781,
              339.5390625
            ],
            [
              470.3984680175781,
              349.9761962890625
            ],
            [
              85.46484375,
              349.9761962890625
            ]
          ],
          "bbox": [
            85.46484375,
            339.5390625,
            470.3984680175781,
            349.9761962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>This exercise is a little more challenging than most, so here are some suggestions:</i></p>",
          "polygon": [
            [
              86.2119140625,
              359.455078125
            ],
            [
              410.1247253417969,
              359.455078125
            ],
            [
              410.1247253417969,
              370.11419677734375
            ],
            [
              86.2119140625,
              370.11419677734375
            ]
          ],
          "bbox": [
            86.2119140625,
            359.455078125,
            410.1247253417969,
            370.11419677734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/143/ListGroup/165",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/143/ListItem/8'></content-ref><content-ref src='/page/143/ListItem/9'></content-ref><content-ref src='/page/143/ListItem/10'></content-ref><content-ref src='/page/143/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              97.119140625,
              383.23828125
            ],
            [
              483.50390625,
              383.23828125
            ],
            [
              483.50390625,
              503.89453125
            ],
            [
              97.119140625,
              503.89453125
            ]
          ],
          "bbox": [
            97.119140625,
            383.23828125,
            483.50390625,
            503.89453125
          ],
          "children": [
            {
              "id": "/page/143/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. You might want to write a function that takes a word and computes a list of all the words that</i> <i>can be formed by removing one letter. These are the \"children\" of the word.</i></li>",
              "polygon": [
                [
                  97.41796875,
                  383.23828125
                ],
                [
                  482.90625,
                  383.23828125
                ],
                [
                  482.90625,
                  406.4441833496094
                ],
                [
                  97.41796875,
                  406.4441833496094
                ]
              ],
              "bbox": [
                97.41796875,
                383.23828125,
                482.90625,
                406.4441833496094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/143/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Recursively, a word is reducible if any of its children are reducible. As a base case, you can</i> <i>consider the empty string reducible.</i></li>",
              "polygon": [
                [
                  97.5673828125,
                  415.72265625
                ],
                [
                  483.50390625,
                  415.72265625
                ],
                [
                  483.50390625,
                  438.92578125
                ],
                [
                  97.5673828125,
                  438.92578125
                ]
              ],
              "bbox": [
                97.5673828125,
                415.72265625,
                483.50390625,
                438.92578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/143/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. The wordlist I provided,</i> words.txt<i>, doesn't contain single letter words. So you might want</i> <i>to add \"I\", \"a\", and the empty string.</i></li>",
              "polygon": [
                [
                  97.2685546875,
                  447.8203125
                ],
                [
                  483.50390625,
                  447.8203125
                ],
                [
                  483.50390625,
                  471.1622009277344
                ],
                [
                  97.2685546875,
                  471.1622009277344
                ]
              ],
              "bbox": [
                97.2685546875,
                447.8203125,
                483.50390625,
                471.1622009277344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/143/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. To improve the performance of your program, you might want to memoize the words that are</i> <i>known to be reducible.</i></li>",
              "polygon": [
                [
                  97.119140625,
                  480.69140625
                ],
                [
                  483.205078125,
                  480.69140625
                ],
                [
                  483.205078125,
                  503.89453125
                ],
                [
                  97.119140625,
                  503.89453125
                ]
              ],
              "bbox": [
                97.119140625,
                480.69140625,
                483.205078125,
                503.89453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/134/SectionHeader/1",
                "2": "/page/137/SectionHeader/2",
                "3": "/page/141/SectionHeader/4",
                "4": "/page/142/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/143/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/reducible.py\">http:</a> <a href=\"http://thinkpython.com/code/reducible.py\">//</a> <a href=\"http://thinkpython.com/code/reducible.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/reducible.py\">com/</a> <a href=\"http://thinkpython.com/code/reducible.py\">code/</a> <a href=\"http://thinkpython.com/code/reducible.py\">reducible.</a> <a href=\"http://thinkpython.com/code/reducible.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.68896484375,
              517.4296875
            ],
            [
              350.0595703125,
              517.4296875
            ],
            [
              350.0595703125,
              527.6561889648438
            ],
            [
              85.68896484375,
              527.6561889648438
            ]
          ],
          "bbox": [
            85.68896484375,
            517.4296875,
            350.0595703125,
            527.6561889648438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/137/SectionHeader/2",
            "3": "/page/141/SectionHeader/4",
            "4": "/page/142/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/134/SectionHeader/1",
        "2": "/page/137/SectionHeader/2",
        "3": "/page/141/SectionHeader/4",
        "4": "/page/142/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/144/Page/137",
      "block_type": "Page",
      "html": "<content-ref src='/page/144/SectionHeader/0'></content-ref><content-ref src='/page/144/SectionHeader/1'></content-ref><content-ref src='/page/144/SectionHeader/2'></content-ref><content-ref src='/page/144/Text/3'></content-ref><content-ref src='/page/144/Text/4'></content-ref><content-ref src='/page/144/Text/5'></content-ref><content-ref src='/page/144/Text/6'></content-ref><content-ref src='/page/144/Text/7'></content-ref><content-ref src='/page/144/Text/8'></content-ref><content-ref src='/page/144/Text/9'></content-ref><content-ref src='/page/144/Text/10'></content-ref><content-ref src='/page/144/Text/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/144/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-144-0\"></span><b>Chapter 13</b></h2>",
          "polygon": [
            [
              129.01904296875,
              166.9874267578125
            ],
            [
              231.591796875,
              166.9874267578125
            ],
            [
              231.591796875,
              187.64990234375
            ],
            [
              129.01904296875,
              187.64990234375
            ]
          ],
          "bbox": [
            129.01904296875,
            166.9874267578125,
            231.591796875,
            187.64990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/134/SectionHeader/1",
            "2": "/page/144/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/144/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Case study: data structure</b> <b>selection</b></h1>",
          "polygon": [
            [
              128.57080078125,
              225.209228515625
            ],
            [
              423.439453125,
              225.209228515625
            ],
            [
              423.439453125,
              280.4812927246094
            ],
            [
              128.57080078125,
              280.4812927246094
            ]
          ],
          "bbox": [
            128.57080078125,
            225.209228515625,
            423.439453125,
            280.4812927246094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/144/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-144-1\"></span><b>13.1 Word frequency analysis</b></h3>",
          "polygon": [
            [
              128.86962890625,
              331.611328125
            ],
            [
              331.3649597167969,
              331.611328125
            ],
            [
              331.3649597167969,
              346.58087158203125
            ],
            [
              128.86962890625,
              346.58087158203125
            ]
          ],
          "bbox": [
            128.86962890625,
            331.611328125,
            331.3649597167969,
            346.58087158203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As usual, you should at least attempt the following exercises before you read my solutions. <b>Exercise 13.1.</b> <i>Write a program that reads a file, breaks each line into words, strips whitespace and</i> <i>punctuation from the words, and converts them to lowercase.</i></p>",
          "polygon": [
            [
              128.6455078125,
              362.162109375
            ],
            [
              526.53515625,
              362.162109375
            ],
            [
              526.53515625,
              397.11712646484375
            ],
            [
              128.6455078125,
              397.11712646484375
            ]
          ],
          "bbox": [
            128.6455078125,
            362.162109375,
            526.53515625,
            397.11712646484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Hint: The</i> string <i>module provides strings named</i> whitespace<i>, which contains space, tab, newline,</i> <i>etc., and</i> punctuation <i>which contains the punctuation characters. Let's see if we can make Python</i> <i>swear:</i></p>",
          "polygon": [
            [
              128.794921875,
              409.921875
            ],
            [
              526.236328125,
              409.921875
            ],
            [
              526.236328125,
              444.5091247558594
            ],
            [
              128.794921875,
              444.5091247558594
            ]
          ],
          "bbox": [
            128.794921875,
            409.921875,
            526.236328125,
            444.5091247558594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; import string &gt;&gt;&gt; print string.punctuation !\"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~</p>",
          "polygon": [
            [
              128.794921875,
              453.6006774902344
            ],
            [
              296.9364929199219,
              453.6006774902344
            ],
            [
              296.9364929199219,
              488.0390625
            ],
            [
              128.794921875,
              488.0390625
            ]
          ],
          "bbox": [
            128.794921875,
            453.6006774902344,
            296.9364929199219,
            488.0390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Also, you might consider using the string methods</i> strip<i>,</i> replace <i>and</i> translate<i>.</i> <b>Exercise 13.2.</b> <i>Go to Project Gutenberg (</i><a href=\"http://gutenberg.org\">http:</a> <a href=\"http://gutenberg.org\">//</a> <a href=\"http://gutenberg.org\">gutenberg.</a> <a href=\"http://gutenberg.org\">org</a> <i>) and download your favorite</i> <i>out-of-copyright book in plain text format.</i></p>",
          "polygon": [
            [
              129.392578125,
              496.99755859375
            ],
            [
              525.638671875,
              496.99755859375
            ],
            [
              525.638671875,
              531.3515625
            ],
            [
              129.392578125,
              531.3515625
            ]
          ],
          "bbox": [
            129.392578125,
            496.99755859375,
            525.638671875,
            531.3515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Modify your program from the previous exercise to read the book you downloaded, skip over the</i> <i>header information at the beginning of the file, and process the rest of the words as before.</i></p>",
          "polygon": [
            [
              128.9443359375,
              544.3895568847656
            ],
            [
              525.9375,
              544.3895568847656
            ],
            [
              525.9375,
              566.5461578369141
            ],
            [
              128.9443359375,
              566.5461578369141
            ]
          ],
          "bbox": [
            128.9443359375,
            544.3895568847656,
            525.9375,
            566.5461578369141
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Then modify the program to count the total number of words in the book, and the number of times</i> <i>each word is used.</i></p>",
          "polygon": [
            [
              128.6455078125,
              579.5865631103516
            ],
            [
              526.53515625,
              579.5865631103516
            ],
            [
              526.53515625,
              601.7441711425781
            ],
            [
              128.6455078125,
              601.7441711425781
            ]
          ],
          "bbox": [
            128.6455078125,
            579.5865631103516,
            526.53515625,
            601.7441711425781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Print the number of different words used in the book. Compare different books by different authors,</i> <i>written in different eras. Which author uses the most extensive vocabulary?</i></p>",
          "polygon": [
            [
              129.392578125,
              614.109375
            ],
            [
              526.236328125,
              614.109375
            ],
            [
              526.236328125,
              639.6328125
            ],
            [
              129.392578125,
              639.6328125
            ]
          ],
          "bbox": [
            129.392578125,
            614.109375,
            526.236328125,
            639.6328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 13.3.</b> <i>Modify the program from the previous exercise to print the 20 most frequently-used</i> <i>words in the book.</i></p>",
          "polygon": [
            [
              129.2431640625,
              639.1725769042969
            ],
            [
              526.53515625,
              639.1725769042969
            ],
            [
              526.53515625,
              661.3301849365234
            ],
            [
              129.2431640625,
              661.3301849365234
            ]
          ],
          "bbox": [
            129.2431640625,
            639.1725769042969,
            526.53515625,
            661.3301849365234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/144/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 13.4.</b> <i>Modify the previous program to read a word list (see Section </i><i><a href=\"#page-102-1\">9.1)</a></i><i> and then print all</i> <i>the words in the book that are not in the word list. How many of them are typos? How many of</i> <i>them are common words that</i> should <i>be in the word list, and how many of them are really obscure?</i></p>",
          "polygon": [
            [
              128.6455078125,
              663.5615844726562
            ],
            [
              526.53515625,
              663.5615844726562
            ],
            [
              526.53515625,
              698.0858917236328
            ],
            [
              128.6455078125,
              698.0858917236328
            ]
          ],
          "bbox": [
            128.6455078125,
            663.5615844726562,
            526.53515625,
            698.0858917236328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/145/Page/212",
      "block_type": "Page",
      "html": "<content-ref src='/page/145/PageHeader/0'></content-ref><content-ref src='/page/145/PageHeader/16'></content-ref><content-ref src='/page/145/SectionHeader/1'></content-ref><content-ref src='/page/145/Text/2'></content-ref><content-ref src='/page/145/Text/3'></content-ref><content-ref src='/page/145/Text/4'></content-ref><content-ref src='/page/145/Text/5'></content-ref><content-ref src='/page/145/Code/6'></content-ref><content-ref src='/page/145/Code/7'></content-ref><content-ref src='/page/145/Text/8'></content-ref><content-ref src='/page/145/Code/9'></content-ref><content-ref src='/page/145/Text/10'></content-ref><content-ref src='/page/145/Code/11'></content-ref><content-ref src='/page/145/Text/12'></content-ref><content-ref src='/page/145/Text/13'></content-ref><content-ref src='/page/145/Code/14'></content-ref><content-ref src='/page/145/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/145/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.27978515625
            ],
            [
              484.400390625,
              60.27978515625
            ],
            [
              484.400390625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.27978515625,
            484.400390625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/145/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.8671875,
              60.47314453125
            ],
            [
              100.705078125,
              60.47314453125
            ],
            [
              100.705078125,
              70.23779296875
            ],
            [
              84.8671875,
              70.23779296875
            ]
          ],
          "bbox": [
            84.8671875,
            60.47314453125,
            100.705078125,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/145/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-145-0\"></span><b>13.2 Random numbers</b></h4>",
          "polygon": [
            [
              85.39013671875,
              85.95379638671875
            ],
            [
              243.544921875,
              85.95379638671875
            ],
            [
              243.544921875,
              100.546875
            ],
            [
              85.39013671875,
              100.546875
            ]
          ],
          "bbox": [
            85.39013671875,
            85.95379638671875,
            243.544921875,
            100.546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Given the same inputs, most computer programs generate the same outputs every time, so they are said to be <b>deterministic</b>. Determinism is usually a good thing, since we expect the same calculation to yield the same result. For some applications, though, we want the computer to be unpredictable. Games are an obvious example, but there are more.</p>",
          "polygon": [
            [
              85.46484375,
              115.7255859375
            ],
            [
              483.802734375,
              115.7255859375
            ],
            [
              483.802734375,
              162.81597900390625
            ],
            [
              85.46484375,
              162.81597900390625
            ]
          ],
          "bbox": [
            85.46484375,
            115.7255859375,
            483.802734375,
            162.81597900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Making a program truly nondeterministic turns out to be not so easy, but there are ways to make it at least seem nondeterministic. One of them is to use algorithms that generate <b>pseudorandom</b> numbers. Pseudorandom numbers are not truly random because they are generated by a deterministic computation, but just by looking at the numbers it is all but impossible to distinguish them from random.</p>",
          "polygon": [
            [
              85.763671875,
              174.990234375
            ],
            [
              483.205078125,
              174.990234375
            ],
            [
              483.205078125,
              234.3199462890625
            ],
            [
              85.763671875,
              234.3199462890625
            ]
          ],
          "bbox": [
            85.763671875,
            174.990234375,
            483.205078125,
            234.3199462890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The random module provides functions that generate pseudorandom numbers (which I will simply call \"random\" from here on).</p>",
          "polygon": [
            [
              85.9130859375,
              245.56640625
            ],
            [
              483.50390625,
              245.56640625
            ],
            [
              483.50390625,
              269.23992919921875
            ],
            [
              85.9130859375,
              269.23992919921875
            ]
          ],
          "bbox": [
            85.9130859375,
            245.56640625,
            483.50390625,
            269.23992919921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The function random returns a random float between 0.0 and 1.0 (including 0.0 but not 1.0). Each time you call random, you get the next number in a long series. To see a sample, run this loop:</p>",
          "polygon": [
            [
              86.0625,
              281.337890625
            ],
            [
              482.607421875,
              281.337890625
            ],
            [
              482.607421875,
              316.3548889160156
            ],
            [
              86.0625,
              316.3548889160156
            ]
          ],
          "bbox": [
            86.0625,
            281.337890625,
            482.607421875,
            316.3548889160156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Code/6",
          "block_type": "Code",
          "html": "<pre>import random</pre>",
          "polygon": [
            [
              85.98779296875,
              324.45703125
            ],
            [
              156.884765625,
              324.45703125
            ],
            [
              156.884765625,
              334.9603271484375
            ],
            [
              85.98779296875,
              334.9603271484375
            ]
          ],
          "bbox": [
            85.98779296875,
            324.45703125,
            156.884765625,
            334.9603271484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Code/7",
          "block_type": "Code",
          "html": "<pre>for i in range(10):\n    x = random.random()\n    print x</pre>",
          "polygon": [
            [
              86.0625,
              349.3867492675781
            ],
            [
              206.70286560058594,
              349.3867492675781
            ],
            [
              206.70286560058594,
              383.7373352050781
            ],
            [
              86.0625,
              383.7373352050781
            ]
          ],
          "bbox": [
            86.0625,
            349.3867492675781,
            206.70286560058594,
            383.7373352050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The function randint takes parameters low and high and returns an integer between low and high (including both).</p>",
          "polygon": [
            [
              85.9130859375,
              391.166015625
            ],
            [
              482.4040832519531,
              391.166015625
            ],
            [
              482.4040832519531,
              414.8359069824219
            ],
            [
              85.9130859375,
              414.8359069824219
            ]
          ],
          "bbox": [
            85.9130859375,
            391.166015625,
            482.4040832519531,
            414.8359069824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; random.randint(5, 10)\n5\n&gt;&gt;&gt; random.randint(5, 10)\n9</pre>",
          "polygon": [
            [
              85.6142578125,
              421.91015625
            ],
            [
              218.2939453125,
              421.91015625
            ],
            [
              218.2939453125,
              470.02435302734375
            ],
            [
              85.6142578125,
              470.02435302734375
            ]
          ],
          "bbox": [
            85.6142578125,
            421.91015625,
            218.2939453125,
            470.02435302734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To choose an element from a sequence at random, you can use choice:</p>",
          "polygon": [
            [
              86.361328125,
              477.59765625
            ],
            [
              396.30767822265625,
              477.59765625
            ],
            [
              396.30767822265625,
              488.9289245605469
            ],
            [
              86.361328125,
              488.9289245605469
            ]
          ],
          "bbox": [
            86.361328125,
            477.59765625,
            396.30767822265625,
            488.9289245605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = [1, 2, 3]\n&gt;&gt;&gt; random.choice(t)\n2\n&gt;&gt;&gt; random.choice(t)\n3</pre>",
          "polygon": [
            [
              85.763671875,
              497.57177734375
            ],
            [
              192.8935546875,
              497.57177734375
            ],
            [
              192.8935546875,
              556.3113861083984
            ],
            [
              85.763671875,
              556.3113861083984
            ]
          ],
          "bbox": [
            85.763671875,
            497.57177734375,
            192.8935546875,
            556.3113861083984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The random module also provides functions to generate random values from continuous distributions including Gaussian, exponential, gamma, and a few more.</p>",
          "polygon": [
            [
              86.2119140625,
              563.8359375
            ],
            [
              482.399169921875,
              563.8359375
            ],
            [
              482.399169921875,
              587.4099426269531
            ],
            [
              86.2119140625,
              587.4099426269531
            ]
          ],
          "bbox": [
            86.2119140625,
            563.8359375,
            482.399169921875,
            587.4099426269531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 13.5.</b> <i>Write a function named</i> choose_from_hist <i>that takes a histogram as defined in</i> <i>Section </i><i><a href=\"#page-123-0\">11.1</a></i><i> and returns a random value from the histogram, chosen with probability in proportion</i> <i>to frequency. For example, for this histogram:</i></p>",
          "polygon": [
            [
              85.763671875,
              588.19921875
            ],
            [
              483.205078125,
              588.19921875
            ],
            [
              483.205078125,
              623.8202514648438
            ],
            [
              85.763671875,
              623.8202514648438
            ]
          ],
          "bbox": [
            85.763671875,
            588.19921875,
            483.205078125,
            623.8202514648438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['a', 'a', 'b']\n&gt;&gt;&gt; hist = histogram(t)\n&gt;&gt;&gt; print hist\n{'a': 2, 'b': 1}</pre>",
          "polygon": [
            [
              85.763671875,
              631.8984375
            ],
            [
              206.70835876464844,
              631.8984375
            ],
            [
              206.70835876464844,
              679.181396484375
            ],
            [
              85.763671875,
              679.181396484375
            ]
          ],
          "bbox": [
            85.763671875,
            631.8984375,
            206.70835876464844,
            679.181396484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/145/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>your function should return</i> 'a' <i>with probability</i> 2/3 <i>and</i> 'b' <i>with probability</i> 1/3<i>.</i></p>",
          "polygon": [
            [
              86.2119140625,
              686.8125
            ],
            [
              426.0146789550781,
              686.8125
            ],
            [
              426.0146789550781,
              698.0859603881836
            ],
            [
              86.2119140625,
              698.0859603881836
            ]
          ],
          "bbox": [
            86.2119140625,
            686.8125,
            426.0146789550781,
            698.0859603881836
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/145/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/146/Page/185",
      "block_type": "Page",
      "html": "<content-ref src='/page/146/PageHeader/0'></content-ref><content-ref src='/page/146/PageHeader/17'></content-ref><content-ref src='/page/146/SectionHeader/1'></content-ref><content-ref src='/page/146/Text/2'></content-ref><content-ref src='/page/146/Text/3'></content-ref><content-ref src='/page/146/Code/4'></content-ref><content-ref src='/page/146/Text/5'></content-ref><content-ref src='/page/146/Text/6'></content-ref><content-ref src='/page/146/Text/7'></content-ref><content-ref src='/page/146/Text/8'></content-ref><content-ref src='/page/146/Text/9'></content-ref><content-ref src='/page/146/Text/10'></content-ref><content-ref src='/page/146/Code/11'></content-ref><content-ref src='/page/146/Text/12'></content-ref><content-ref src='/page/146/Text/13'></content-ref><content-ref src='/page/146/Text/14'></content-ref><content-ref src='/page/146/Text/15'></content-ref><content-ref src='/page/146/Code/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/146/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.6455078125,
              61.05322265625
            ],
            [
              525.6033935546875,
              61.05322265625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.6455078125,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            61.05322265625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.8115234375
            ],
            [
              525.9375,
              60.8115234375
            ],
            [
              525.9375,
              69.8994140625
            ],
            [
              509.80078125,
              69.8994140625
            ]
          ],
          "bbox": [
            509.80078125,
            60.8115234375,
            525.9375,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/145/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-146-0\"></span><b>13.3 Word histogram</b></h4>",
          "polygon": [
            [
              127.97314453125,
              85.95379638671875
            ],
            [
              275.220703125,
              85.95379638671875
            ],
            [
              275.220703125,
              100.29998779296875
            ],
            [
              127.97314453125,
              100.29998779296875
            ]
          ],
          "bbox": [
            127.97314453125,
            85.95379638671875,
            275.220703125,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You should attempt the previous exercises before you go on. You can download my solution from <a href=\"http://thinkpython.com/code/analyze_book.py\">http://thinkpython.com/code/analyze_book.py</a>. You will also need <a href=\"http://thinkpython.com/code/emma.txt\">http:</a> <a href=\"http://thinkpython.com/code/emma.txt\">//thinkpython.com/code/emma.txt</a>.</p>",
          "polygon": [
            [
              128.6455078125,
              112.4384765625
            ],
            [
              525.6058349609375,
              112.4384765625
            ],
            [
              525.6058349609375,
              146.88494873046875
            ],
            [
              128.6455078125,
              146.88494873046875
            ]
          ],
          "bbox": [
            128.6455078125,
            112.4384765625,
            525.6058349609375,
            146.88494873046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a program that reads a file and builds a histogram of the words in the file:</p>",
          "polygon": [
            [
              128.794921875,
              156.427734375
            ],
            [
              487.986328125,
              156.427734375
            ],
            [
              487.986328125,
              166.91094970703125
            ],
            [
              128.794921875,
              166.91094970703125
            ]
          ],
          "bbox": [
            128.794921875,
            156.427734375,
            487.986328125,
            166.91094970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Code/4",
          "block_type": "Code",
          "html": "<pre>import string\ndef process_file(filename):\n    hist = dict()\n    fp = open(filename)\n    for line in fp:\n        process_line(line, hist)\n    return hist\ndef process_line(line, hist):\n    line = line.replace('-', ' ')\n    for word in line.split():\n        word = word.strip(string.punctuation + string.whitespace)\n        word = word.lower()\n        hist[word] = hist.get(word, 0) + 1</pre>",
          "polygon": [
            [
              128.3466796875,
              172.853759765625
            ],
            [
              473.94140625,
              172.853759765625
            ],
            [
              473.94140625,
              382.8515625
            ],
            [
              128.3466796875,
              382.8515625
            ]
          ],
          "bbox": [
            128.3466796875,
            172.853759765625,
            473.94140625,
            382.8515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">hist = process_file('emma.txt')</p>",
          "polygon": [
            [
              129.46728515625,
              392.35076904296875
            ],
            [
              291.70343017578125,
              392.35076904296875
            ],
            [
              291.70343017578125,
              402.3133544921875
            ],
            [
              129.46728515625,
              402.3133544921875
            ]
          ],
          "bbox": [
            129.46728515625,
            392.35076904296875,
            291.70343017578125,
            402.3133544921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This program reads emma.txt, which contains the text of <i>Emma</i> by Jane Austen.</p>",
          "polygon": [
            [
              129.2431640625,
              408.375
            ],
            [
              478.33929443359375,
              408.375
            ],
            [
              478.33929443359375,
              418.5179138183594
            ],
            [
              129.2431640625,
              418.5179138183594
            ]
          ],
          "bbox": [
            129.2431640625,
            408.375,
            478.33929443359375,
            418.5179138183594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">process_file loops through the lines of the file, passing them one at a time to process_line. The histogram hist is being used as an accumulator.</p>",
          "polygon": [
            [
              128.0478515625,
              428.4307556152344
            ],
            [
              525.6028442382812,
              428.4307556152344
            ],
            [
              525.6028442382812,
              450.7379150390625
            ],
            [
              128.0478515625,
              450.7379150390625
            ]
          ],
          "bbox": [
            128.0478515625,
            428.4307556152344,
            525.6028442382812,
            450.7379150390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">process_line uses the string method replace to replace hyphens with spaces before using split to break the line into a list of strings. It traverses the list of words and uses strip and lower to remove punctuation and convert to lower case. (It is a shorthand to say that strings are \"converted;\" remember that string are immutable, so methods like strip and lower return new strings.)</p>",
          "polygon": [
            [
              129.09375,
              460.6517639160156
            ],
            [
              525.6058349609375,
              460.6517639160156
            ],
            [
              525.6058349609375,
              519.5409240722656
            ],
            [
              129.09375,
              519.5409240722656
            ]
          ],
          "bbox": [
            129.09375,
            460.6517639160156,
            525.6058349609375,
            519.5409240722656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Finally, process_line updates the histogram by creating a new item or incrementing an existing one.</p>",
          "polygon": [
            [
              128.197265625,
              529.4547729492188
            ],
            [
              525.599609375,
              529.4547729492188
            ],
            [
              525.599609375,
              551.7609252929688
            ],
            [
              128.197265625,
              551.7609252929688
            ]
          ],
          "bbox": [
            128.197265625,
            529.4547729492188,
            525.599609375,
            551.7609252929688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To count the total number of words in the file, we can add up the frequencies in the histogram:</p>",
          "polygon": [
            [
              128.197265625,
              561.8243255615234
            ],
            [
              525.6035766601562,
              561.8243255615234
            ],
            [
              525.6035766601562,
              584.33203125
            ],
            [
              128.197265625,
              584.33203125
            ]
          ],
          "bbox": [
            128.197265625,
            561.8243255615234,
            525.6035766601562,
            584.33203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Code/11",
          "block_type": "Code",
          "html": "<pre>def total_words(hist):\n    return sum(hist.values())</pre>",
          "polygon": [
            [
              128.6455078125,
              589.359375
            ],
            [
              281.2851867675781,
              589.359375
            ],
            [
              281.2851867675781,
              612.0803833007812
            ],
            [
              128.6455078125,
              612.0803833007812
            ]
          ],
          "bbox": [
            128.6455078125,
            589.359375,
            281.2851867675781,
            612.0803833007812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The number of different words is just the number of items in the dictionary:</p>",
          "polygon": [
            [
              128.794921875,
              616.81640625
            ],
            [
              463.78125,
              616.81640625
            ],
            [
              463.78125,
              628.283935546875
            ],
            [
              128.794921875,
              628.283935546875
            ]
          ],
          "bbox": [
            128.794921875,
            616.81640625,
            463.78125,
            628.283935546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">def different_words(hist):</p>",
          "polygon": [
            [
              129.01904296875,
              633.83203125
            ],
            [
              265.5995178222656,
              633.83203125
            ],
            [
              265.5995178222656,
              646.20703125
            ],
            [
              129.01904296875,
              646.20703125
            ]
          ],
          "bbox": [
            129.01904296875,
            633.83203125,
            265.5995178222656,
            646.20703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">return len(hist)</p>",
          "polygon": [
            [
              145.3798828125,
              646.4197845458984
            ],
            [
              234.21189880371094,
              646.4197845458984
            ],
            [
              234.21189880371094,
              658.96875
            ],
            [
              145.3798828125,
              658.96875
            ]
          ],
          "bbox": [
            145.3798828125,
            646.4197845458984,
            234.21189880371094,
            658.96875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is some code to print the results:</p>",
          "polygon": [
            [
              128.197265625,
              662.6243438720703
            ],
            [
              295.696533203125,
              662.6243438720703
            ],
            [
              295.696533203125,
              672.890625
            ],
            [
              128.197265625,
              672.890625
            ]
          ],
          "bbox": [
            128.197265625,
            662.6243438720703,
            295.696533203125,
            672.890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/146/Code/16",
          "block_type": "Code",
          "html": "<pre>print 'Total number of words:', total_words(hist)\nprint 'Number of different words:', different_words(hist)</pre>",
          "polygon": [
            [
              128.3466796875,
              678.5287780761719
            ],
            [
              427.6984558105469,
              678.5287780761719
            ],
            [
              427.6984558105469,
              700.6853790283203
            ],
            [
              128.3466796875,
              700.6853790283203
            ]
          ],
          "bbox": [
            128.3466796875,
            678.5287780761719,
            427.6984558105469,
            700.6853790283203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/146/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/147/Page/162",
      "block_type": "Page",
      "html": "<content-ref src='/page/147/PageHeader/0'></content-ref><content-ref src='/page/147/PageHeader/15'></content-ref><content-ref src='/page/147/Text/1'></content-ref><content-ref src='/page/147/Text/2'></content-ref><content-ref src='/page/147/SectionHeader/3'></content-ref><content-ref src='/page/147/Text/4'></content-ref><content-ref src='/page/147/Code/5'></content-ref><content-ref src='/page/147/Text/6'></content-ref><content-ref src='/page/147/Code/7'></content-ref><content-ref src='/page/147/Text/8'></content-ref><content-ref src='/page/147/Text/9'></content-ref><content-ref src='/page/147/SectionHeader/10'></content-ref><content-ref src='/page/147/Text/11'></content-ref><content-ref src='/page/147/Code/12'></content-ref><content-ref src='/page/147/Text/13'></content-ref><content-ref src='/page/147/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/147/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              483.802734375,
              60.8115234375
            ],
            [
              483.802734375,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            483.802734375,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/147/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.46484375,
              60.6181640625
            ],
            [
              102.0498046875,
              60.6181640625
            ],
            [
              102.0498046875,
              70.0927734375
            ],
            [
              85.46484375,
              70.0927734375
            ]
          ],
          "bbox": [
            85.46484375,
            60.6181640625,
            102.0498046875,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And the results:</p>",
          "polygon": [
            [
              86.0625,
              88.41357421875
            ],
            [
              156.45700073242188,
              88.41357421875
            ],
            [
              156.45700073242188,
              98.79791259765625
            ],
            [
              86.0625,
              98.79791259765625
            ]
          ],
          "bbox": [
            86.0625,
            88.41357421875,
            156.45700073242188,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Total number of words: 161080 Number of different words: 7214</p>",
          "polygon": [
            [
              85.6142578125,
              104.2237548828125
            ],
            [
              249.6708984375,
              104.2237548828125
            ],
            [
              249.6708984375,
              126.38037109375
            ],
            [
              85.6142578125,
              126.38037109375
            ]
          ],
          "bbox": [
            85.6142578125,
            104.2237548828125,
            249.6708984375,
            126.38037109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/146/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/147/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-147-0\"></span><b>13.4 Most common words</b></h4>",
          "polygon": [
            [
              85.46484375,
              154.7841796875
            ],
            [
              263.7333679199219,
              154.7841796875
            ],
            [
              263.7333679199219,
              169.3389892578125
            ],
            [
              85.46484375,
              169.3389892578125
            ]
          ],
          "bbox": [
            85.46484375,
            154.7841796875,
            263.7333679199219,
            169.3389892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To find the most common words, we can apply the DSU pattern; most_common takes a histogram and returns a list of word-frequency tuples, sorted in reverse order by frequency:</p>",
          "polygon": [
            [
              85.3154296875,
              180.2109375
            ],
            [
              482.40350341796875,
              180.2109375
            ],
            [
              482.40350341796875,
              203.4140625
            ],
            [
              85.3154296875,
              203.4140625
            ]
          ],
          "bbox": [
            85.3154296875,
            180.2109375,
            482.40350341796875,
            203.4140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/147/Code/5",
          "block_type": "Code",
          "html": "<pre>def most_common(hist):\n    t = []\n    for key, value in hist.items():\n        t.append((value, key))\n    t.sort(reverse=True)\n    return t</pre>",
          "polygon": [
            [
              86.39999389648438,
              208.6387939453125
            ],
            [
              269.4672546386719,
              208.6387939453125
            ],
            [
              269.4672546386719,
              291.7673034667969
            ],
            [
              86.39999389648438,
              291.7673034667969
            ]
          ],
          "bbox": [
            86.39999389648438,
            208.6387939453125,
            269.4672546386719,
            291.7673034667969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a loop that prints the ten most common words:</p>",
          "polygon": [
            [
              85.98779296875,
              296.2265625
            ],
            [
              326.4787292480469,
              296.2265625
            ],
            [
              326.4787292480469,
              307.4548645019531
            ],
            [
              85.98779296875,
              307.4548645019531
            ]
          ],
          "bbox": [
            85.98779296875,
            296.2265625,
            326.4787292480469,
            307.4548645019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/147/Code/7",
          "block_type": "Code",
          "html": "<pre>t = most_common(hist)\nprint 'The most common words are:'\nfor freq, word in t[0:10]:\n    print word, '\\t', freq</pre>",
          "polygon": [
            [
              84.7177734375,
              312.8807067871094
            ],
            [
              264.1913757324219,
              312.8807067871094
            ],
            [
              264.1913757324219,
              359.4263000488281
            ],
            [
              84.7177734375,
              359.4263000488281
            ]
          ],
          "bbox": [
            84.7177734375,
            312.8807067871094,
            264.1913757324219,
            359.4263000488281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And here are the results from <i>Emma</i>:</p>",
          "polygon": [
            [
              86.39999389648438,
              363.708984375
            ],
            [
              248.625,
              363.708984375
            ],
            [
              248.625,
              375.1138610839844
            ],
            [
              86.39999389648438,
              375.1138610839844
            ]
          ],
          "bbox": [
            86.39999389648438,
            363.708984375,
            248.625,
            375.1138610839844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The most common words are: to 5242 the 5205 and 4897 of 4295 i 3191 a 3130 it 2529 her 2483 was 2400 she 2364</p>",
          "polygon": [
            [
              85.53955078125,
              379.7578125
            ],
            [
              230.6953125,
              379.7578125
            ],
            [
              230.6953125,
              512.4453125
            ],
            [
              85.53955078125,
              512.4453125
            ]
          ],
          "bbox": [
            85.53955078125,
            379.7578125,
            230.6953125,
            512.4453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/147/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-147-1\"></span><b>13.5 Optional parameters</b></h4>",
          "polygon": [
            [
              85.3154296875,
              540.6328125
            ],
            [
              260.9214782714844,
              540.6328125
            ],
            [
              260.9214782714844,
              555.4039306640625
            ],
            [
              85.3154296875,
              555.4039306640625
            ]
          ],
          "bbox": [
            85.3154296875,
            540.6328125,
            260.9214782714844,
            555.4039306640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We have seen built-in functions and methods that take a variable number of arguments. It is possible to write user-defined functions with optional arguments, too. For example, here is a function that prints the most common words in a histogram</p>",
          "polygon": [
            [
              85.166015625,
              566.54296875
            ],
            [
              483.205078125,
              566.54296875
            ],
            [
              483.205078125,
              601.4728851318359
            ],
            [
              85.166015625,
              601.4728851318359
            ]
          ],
          "bbox": [
            85.166015625,
            566.54296875,
            483.205078125,
            601.4728851318359
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/147/Code/12",
          "block_type": "Code",
          "html": "<pre>def print_most_common(hist, num=10):\n    t = most_common(hist)\n    print 'The most common words are:'\n    for freq, word in t[:num]:\n        print word, '\\t', freq</pre>",
          "polygon": [
            [
              86.28662109375,
              606.8987274169922
            ],
            [
              285.10736083984375,
              606.8987274169922
            ],
            [
              285.10736083984375,
              665.9296875
            ],
            [
              86.28662109375,
              665.9296875
            ]
          ],
          "bbox": [
            86.28662109375,
            606.8987274169922,
            285.10736083984375,
            665.9296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first parameter is required; the second is optional. The <b>default value</b> of num is 10.</p>",
          "polygon": [
            [
              85.46484375,
              670.95703125
            ],
            [
              460.2401428222656,
              670.95703125
            ],
            [
              460.2401428222656,
              681.3258972167969
            ],
            [
              85.46484375,
              681.3258972167969
            ]
          ],
          "bbox": [
            85.46484375,
            670.95703125,
            460.2401428222656,
            681.3258972167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/147/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you only provide one argument:</p>",
          "polygon": [
            [
              85.46484375,
              690.6796875
            ],
            [
              238.763671875,
              690.6796875
            ],
            [
              238.763671875,
              700.8348999023438
            ],
            [
              85.46484375,
              700.8348999023438
            ]
          ],
          "bbox": [
            85.46484375,
            690.6796875,
            238.763671875,
            700.8348999023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/147/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/148/Page/231",
      "block_type": "Page",
      "html": "<content-ref src='/page/148/PageHeader/0'></content-ref><content-ref src='/page/148/PageHeader/20'></content-ref><content-ref src='/page/148/Code/1'></content-ref><content-ref src='/page/148/Text/2'></content-ref><content-ref src='/page/148/Code/3'></content-ref><content-ref src='/page/148/Text/4'></content-ref><content-ref src='/page/148/Text/5'></content-ref><content-ref src='/page/148/SectionHeader/6'></content-ref><content-ref src='/page/148/Text/7'></content-ref><content-ref src='/page/148/Text/8'></content-ref><content-ref src='/page/148/Code/9'></content-ref><content-ref src='/page/148/Text/10'></content-ref><content-ref src='/page/148/Code/11'></content-ref><content-ref src='/page/148/Code/12'></content-ref><content-ref src='/page/148/Text/13'></content-ref><content-ref src='/page/148/Text/14'></content-ref><content-ref src='/page/148/Code/15'></content-ref><content-ref src='/page/148/Text/16'></content-ref><content-ref src='/page/148/Code/17'></content-ref><content-ref src='/page/148/SectionHeader/18'></content-ref><content-ref src='/page/148/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/148/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.6455078125,
              61.14990234375
            ],
            [
              525.6033935546875,
              61.14990234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.6455078125,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            61.14990234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/148/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.697265625,
              60.521484375
            ],
            [
              526.236328125,
              60.521484375
            ],
            [
              526.236328125,
              70.189453125
            ],
            [
              510.697265625,
              70.189453125
            ]
          ],
          "bbox": [
            510.697265625,
            60.521484375,
            526.236328125,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/148/Code/1",
          "block_type": "Code",
          "html": "<pre>print_most_common(hist)</pre>",
          "polygon": [
            [
              129.09375,
              88.68572998046875
            ],
            [
              251.912109375,
              88.68572998046875
            ],
            [
              251.912109375,
              98.66162109375
            ],
            [
              129.09375,
              98.66162109375
            ]
          ],
          "bbox": [
            129.09375,
            88.68572998046875,
            251.912109375,
            98.66162109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">num gets the default value. If you provide two arguments:</p>",
          "polygon": [
            [
              127.30078125,
              102.7767333984375
            ],
            [
              382.8355712890625,
              102.7767333984375
            ],
            [
              382.8355712890625,
              113.115234375
            ],
            [
              127.30078125,
              113.115234375
            ]
          ],
          "bbox": [
            127.30078125,
            102.7767333984375,
            382.8355712890625,
            113.115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/148/Code/3",
          "block_type": "Code",
          "html": "<pre>print_most_common(hist, 20)</pre>",
          "polygon": [
            [
              127.7490234375,
              116.86871337890625
            ],
            [
              270.8298034667969,
              116.86871337890625
            ],
            [
              270.8298034667969,
              126.831298828125
            ],
            [
              127.7490234375,
              126.831298828125
            ]
          ],
          "bbox": [
            127.7490234375,
            116.86871337890625,
            270.8298034667969,
            126.831298828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">num gets the value of the argument instead. In other words, the optional argument <b>over</b><b>rides</b> the default value.</p>",
          "polygon": [
            [
              129.09375,
              130.0341796875
            ],
            [
              525.9375,
              130.0341796875
            ],
            [
              525.9375,
              153.26690673828125
            ],
            [
              129.09375,
              153.26690673828125
            ]
          ],
          "bbox": [
            129.09375,
            130.0341796875,
            525.9375,
            153.26690673828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If a function has both required and optional parameters, all the required parameters have to come first, followed by the optional ones.</p>",
          "polygon": [
            [
              128.6455078125,
              160.681640625
            ],
            [
              525.9375,
              160.681640625
            ],
            [
              525.9375,
              183.52386474609375
            ],
            [
              128.6455078125,
              183.52386474609375
            ]
          ],
          "bbox": [
            128.6455078125,
            160.681640625,
            525.9375,
            183.52386474609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/147/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/148/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-148-0\"></span><b>13.6 Dictionary subtraction</b></h4>",
          "polygon": [
            [
              127.82373046875,
              209.6015625
            ],
            [
              316.8609924316406,
              209.6015625
            ],
            [
              316.8609924316406,
              224.30792236328125
            ],
            [
              127.82373046875,
              224.30792236328125
            ]
          ],
          "bbox": [
            127.82373046875,
            209.6015625,
            316.8609924316406,
            224.30792236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Finding the words from the book that are not in the word list from words.txt is a problem you might recognize as set subtraction; that is, we want to find all the words from one set (the words in the book) that are not in another set (the words in the list).</p>",
          "polygon": [
            [
              128.6455078125,
              234.158203125
            ],
            [
              525.9375,
              234.158203125
            ],
            [
              525.9375,
              268.92987060546875
            ],
            [
              128.6455078125,
              268.92987060546875
            ]
          ],
          "bbox": [
            128.6455078125,
            234.158203125,
            525.9375,
            268.92987060546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">subtract takes dictionaries d1 and d2 and returns a new dictionary that contains all the keys from d1 that are not in d2. Since we don't really care about the values, we set them all to None.</p>",
          "polygon": [
            [
              129.09375,
              276.697265625
            ],
            [
              525.598876953125,
              276.697265625
            ],
            [
              525.598876953125,
              311.501953125
            ],
            [
              129.09375,
              311.501953125
            ]
          ],
          "bbox": [
            129.09375,
            276.697265625,
            525.598876953125,
            311.501953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Code/9",
          "block_type": "Code",
          "html": "<pre>def subtract(d1, d2):\n    res = dict()\n    for key in d1:\n        if key not in d2:\n            res[key] = None\n    return res</pre>",
          "polygon": [
            [
              129.60003662109375,
              315.3616943359375
            ],
            [
              273.7265625,
              315.3616943359375
            ],
            [
              273.7265625,
              386.2952880859375
            ],
            [
              129.60003662109375,
              386.2952880859375
            ]
          ],
          "bbox": [
            129.60003662109375,
            315.3616943359375,
            273.7265625,
            386.2952880859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To find the words in the book that are not in words.txt, we can use process_file to build a histogram for words.txt, and then subtract:</p>",
          "polygon": [
            [
              128.49609375,
              389.42578125
            ],
            [
              525.9375,
              389.42578125
            ],
            [
              525.9375,
              412.7308654785156
            ],
            [
              128.49609375,
              412.7308654785156
            ]
          ],
          "bbox": [
            128.49609375,
            389.42578125,
            525.9375,
            412.7308654785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Code/11",
          "block_type": "Code",
          "html": "<pre>words = process_file('words.txt')\ndiff = subtract(hist, words)</pre>",
          "polygon": [
            [
              127.599609375,
              415.72265625
            ],
            [
              325.72265625,
              415.72265625
            ],
            [
              325.72265625,
              443.56640625
            ],
            [
              127.599609375,
              443.56640625
            ]
          ],
          "bbox": [
            127.599609375,
            415.72265625,
            325.72265625,
            443.56640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Code/12",
          "block_type": "Code",
          "html": "<pre>print \"The words in the book that aren't in the word list are:\"\nfor word in diff.keys():</pre>",
          "polygon": [
            [
              128.6455078125,
              452.84765625
            ],
            [
              459.59765625,
              452.84765625
            ],
            [
              459.59765625,
              475.4503173828125
            ],
            [
              128.6455078125,
              475.4503173828125
            ]
          ],
          "bbox": [
            128.6455078125,
            452.84765625,
            459.59765625,
            475.4503173828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">print word,</p>",
          "polygon": [
            [
              148.3681640625,
              477.59765625
            ],
            [
              208.05010986328125,
              477.59765625
            ],
            [
              208.05010986328125,
              487.6443176269531
            ],
            [
              148.3681640625,
              487.6443176269531
            ]
          ],
          "bbox": [
            148.3681640625,
            477.59765625,
            208.05010986328125,
            487.6443176269531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here are some of the results from <i>Emma</i>:</p>",
          "polygon": [
            [
              127.67431640625,
              491.1328125
            ],
            [
              308.091796875,
              491.1328125
            ],
            [
              308.091796875,
              501.8858947753906
            ],
            [
              127.67431640625,
              501.8858947753906
            ]
          ],
          "bbox": [
            127.67431640625,
            491.1328125,
            308.091796875,
            501.8858947753906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Code/15",
          "block_type": "Code",
          "html": "<pre>The words in the book that aren't in the word list are:\n rencontre jane's blanche woodhouses disingenuousness\nfriend's venice apartment ...</pre>",
          "polygon": [
            [
              129.46728515625,
              505.86474609375
            ],
            [
              417.2294616699219,
              505.86474609375
            ],
            [
              417.2294616699219,
              540.2163543701172
            ],
            [
              129.46728515625,
              540.2163543701172
            ]
          ],
          "bbox": [
            129.46728515625,
            505.86474609375,
            417.2294616699219,
            540.2163543701172
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Some of these words are names and possessives. Others, like \"rencontre,\" are no longer in common use. But a few are common words that should really be in the list!</p>",
          "polygon": [
            [
              128.794921875,
              544.4943084716797
            ],
            [
              526.236328125,
              544.4943084716797
            ],
            [
              526.236328125,
              566.6519165039062
            ],
            [
              128.794921875,
              566.6519165039062
            ]
          ],
          "bbox": [
            128.794921875,
            544.4943084716797,
            526.236328125,
            566.6519165039062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/Code/17",
          "block_type": "Code",
          "html": "<pre>Exercise 13.6. Python provides a data structure called set that provides many common set opera-\ntions. Read the documentation at http: // docs. python. org/ 2/ library/ stdtypes. html#\ntypes-set and write a program that uses set subtraction to find words in the book that are not in\nthe word list. Solution: http: // thinkpython. com/ code/ analyze_ book2. py .</pre>",
          "polygon": [
            [
              129.392578125,
              568.08984375
            ],
            [
              526.833984375,
              568.08984375
            ],
            [
              526.833984375,
              615.26953125
            ],
            [
              129.392578125,
              615.26953125
            ]
          ],
          "bbox": [
            129.392578125,
            568.08984375,
            526.833984375,
            615.26953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/148/SectionHeader/18",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-148-1\"></span><b>13.7 Random words</b></h4>",
          "polygon": [
            [
              127.7490234375,
              641.8667907714844
            ],
            [
              269.3935546875,
              641.8667907714844
            ],
            [
              269.3935546875,
              656.2129821777344
            ],
            [
              127.7490234375,
              656.2129821777344
            ]
          ],
          "bbox": [
            127.7490234375,
            641.8667907714844,
            269.3935546875,
            656.2129821777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/148/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To choose a random word from the histogram, the simplest algorithm is to build a list with multiple copies of each word, according to the observed frequency, and then choose from the list:</p>",
          "polygon": [
            [
              128.0478515625,
              665.9296875
            ],
            [
              525.603515625,
              665.9296875
            ],
            [
              525.603515625,
              700.8349380493164
            ],
            [
              128.0478515625,
              700.8349380493164
            ]
          ],
          "bbox": [
            128.0478515625,
            665.9296875,
            525.603515625,
            700.8349380493164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/148/SectionHeader/18"
      },
      "images": null
    },
    {
      "id": "/page/149/Page/181",
      "block_type": "Page",
      "html": "<content-ref src='/page/149/PageHeader/0'></content-ref><content-ref src='/page/149/PageHeader/18'></content-ref><content-ref src='/page/149/Code/1'></content-ref><content-ref src='/page/149/Text/2'></content-ref><content-ref src='/page/149/Text/3'></content-ref><content-ref src='/page/149/Text/4'></content-ref><content-ref src='/page/149/Text/5'></content-ref><content-ref src='/page/149/ListGroup/179'></content-ref><content-ref src='/page/149/Text/10'></content-ref><content-ref src='/page/149/SectionHeader/11'></content-ref><content-ref src='/page/149/Text/12'></content-ref><content-ref src='/page/149/Text/13'></content-ref><content-ref src='/page/149/Text/14'></content-ref><content-ref src='/page/149/Text/15'></content-ref><content-ref src='/page/149/Text/16'></content-ref><content-ref src='/page/149/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/149/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              483.802734375,
              60.76318359375
            ],
            [
              483.802734375,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            483.802734375,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.66650390625
            ],
            [
              101.52685546875,
              60.66650390625
            ],
            [
              101.52685546875,
              69.65771484375
            ],
            [
              85.53955078125,
              69.65771484375
            ]
          ],
          "bbox": [
            85.53955078125,
            60.66650390625,
            101.52685546875,
            69.65771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/Code/1",
          "block_type": "Code",
          "html": "<pre>def random_word(h):\n    t = []\n    for word, freq in h.items():\n        t.extend([word] * freq)</pre>",
          "polygon": [
            [
              86.4000015258789,
              88.68572998046875
            ],
            [
              253.77613830566406,
              88.68572998046875
            ],
            [
              253.77613830566406,
              147.2431640625
            ],
            [
              86.4000015258789,
              147.2431640625
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.68572998046875,
            253.77613830566406,
            147.2431640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">return random.choice(t)</p>",
          "polygon": [
            [
              104.7392578125,
              149.65771484375
            ],
            [
              227.6243438720703,
              149.65771484375
            ],
            [
              227.6243438720703,
              160.5849609375
            ],
            [
              104.7392578125,
              160.5849609375
            ]
          ],
          "bbox": [
            104.7392578125,
            149.65771484375,
            227.6243438720703,
            160.5849609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The expression [word] * freq creates a list with freq copies of the string word. The extend method is similar to append except that the argument is a sequence.</p>",
          "polygon": [
            [
              85.3154296875,
              165.67474365234375
            ],
            [
              482.399169921875,
              165.67474365234375
            ],
            [
              482.399169921875,
              187.98089599609375
            ],
            [
              85.3154296875,
              187.98089599609375
            ]
          ],
          "bbox": [
            85.3154296875,
            165.67474365234375,
            482.399169921875,
            187.98089599609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-149-1\"></span><b>Exercise 13.7.</b> <i>This algorithm works, but it is not very efficient; each time you choose a random</i> <i>word, it rebuilds the list, which is as big as the original book. An obvious improvement is to build</i> <i>the list once and then make multiple selections, but the list is still big.</i></p>",
          "polygon": [
            [
              85.46484375,
              189.10546875
            ],
            [
              482.607421875,
              189.10546875
            ],
            [
              482.607421875,
              224.39117431640625
            ],
            [
              85.46484375,
              224.39117431640625
            ]
          ],
          "bbox": [
            85.46484375,
            189.10546875,
            482.607421875,
            224.39117431640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>An alternative is:</i></p>",
          "polygon": [
            [
              85.39013671875,
              233.578125
            ],
            [
              156.4365234375,
              233.578125
            ],
            [
              156.4365234375,
              244.38018798828125
            ],
            [
              85.39013671875,
              244.38018798828125
            ]
          ],
          "bbox": [
            85.39013671875,
            233.578125,
            156.4365234375,
            244.38018798828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/ListGroup/179",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/149/ListItem/6'></content-ref><content-ref src='/page/149/ListItem/7'></content-ref><content-ref src='/page/149/ListItem/8'></content-ref><content-ref src='/page/149/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              97.8662109375,
              257.748046875
            ],
            [
              482.4032287597656,
              257.748046875
            ],
            [
              482.4032287597656,
              352.6161804199219
            ],
            [
              97.8662109375,
              352.6161804199219
            ]
          ],
          "bbox": [
            97.8662109375,
            257.748046875,
            482.4032287597656,
            352.6161804199219
          ],
          "children": [
            {
              "id": "/page/149/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Use</i> keys <i>to get a list of the words in the book.</i></li>",
              "polygon": [
                [
                  98.8530044555664,
                  257.748046875
                ],
                [
                  296.76519775390625,
                  257.748046875
                ],
                [
                  296.76519775390625,
                  268.1373291015625
                ],
                [
                  98.8530044555664,
                  268.1373291015625
                ]
              ],
              "bbox": [
                98.8530044555664,
                257.748046875,
                296.76519775390625,
                268.1373291015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/148/SectionHeader/18"
              },
              "images": {}
            },
            {
              "id": "/page/149/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Build a list that contains the cumulative sum of the word frequencies (see Exercise </i><i><a href=\"#page-113-1\">10.3)</a></i><i>. The</i> <i>last item in this list is the total number of words in the book, n.</i></li>",
              "polygon": [
                [
                  97.8662109375,
                  278.05078125
                ],
                [
                  482.4032287597656,
                  278.05078125
                ],
                [
                  482.4032287597656,
                  300.34619140625
                ],
                [
                  97.8662109375,
                  300.34619140625
                ]
              ],
              "bbox": [
                97.8662109375,
                278.05078125,
                482.4032287597656,
                300.34619140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/148/SectionHeader/18"
              },
              "images": {}
            },
            {
              "id": "/page/149/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. Choose a random number from 1 to n. Use a bisection search (See Exercise </i><i><a href=\"#page-119-1\">10.11)</a></i><i> to find the</i> <i>index where the random number would be inserted in the cumulative sum.</i></li>",
              "polygon": [
                [
                  98.4638671875,
                  310.341796875
                ],
                [
                  482.4032287597656,
                  310.341796875
                ],
                [
                  482.4032287597656,
                  332.57818603515625
                ],
                [
                  98.4638671875,
                  332.57818603515625
                ]
              ],
              "bbox": [
                98.4638671875,
                310.341796875,
                482.4032287597656,
                332.57818603515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/148/SectionHeader/18"
              },
              "images": {}
            },
            {
              "id": "/page/149/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. Use the index to find the corresponding word in the word list.</i></li>",
              "polygon": [
                [
                  98.68798828125,
                  342.439453125
                ],
                [
                  357.89056396484375,
                  342.439453125
                ],
                [
                  357.89056396484375,
                  352.6161804199219
                ],
                [
                  98.68798828125,
                  352.6161804199219
                ]
              ],
              "bbox": [
                98.68798828125,
                342.439453125,
                357.89056396484375,
                352.6161804199219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/148/SectionHeader/18"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": null
        },
        {
          "id": "/page/149/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a program that uses this algorithm to choose a random word from the book. Solution:</i> <a href=\"http://thinkpython.com/code/analyze_book3.py\">http:</a> <a href=\"http://thinkpython.com/code/analyze_book3.py\">//</a> <a href=\"http://thinkpython.com/code/analyze_book3.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/analyze_book3.py\">com/</a> <a href=\"http://thinkpython.com/code/analyze_book3.py\">code/</a> <a href=\"http://thinkpython.com/code/analyze_book3.py\">analyze_</a> <a href=\"http://thinkpython.com/code/analyze_book3.py\">book3.</a> <a href=\"http://thinkpython.com/code/analyze_book3.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.3154296875,
              366.22265625
            ],
            [
              480.6768493652344,
              366.22265625
            ],
            [
              480.6768493652344,
              388.65234375
            ],
            [
              85.3154296875,
              388.65234375
            ]
          ],
          "bbox": [
            85.3154296875,
            366.22265625,
            480.6768493652344,
            388.65234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/148/SectionHeader/18"
          },
          "images": {}
        },
        {
          "id": "/page/149/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-149-0\"></span><b>13.8 Markov analysis</b></h4>",
          "polygon": [
            [
              85.46484375,
              417.85174560546875
            ],
            [
              234.6392822265625,
              417.85174560546875
            ],
            [
              234.6392822265625,
              432.1979675292969
            ],
            [
              85.46484375,
              432.1979675292969
            ]
          ],
          "bbox": [
            85.46484375,
            417.85174560546875,
            234.6392822265625,
            432.1979675292969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you choose words from the book at random, you can get a sense of the vocabulary, you probably won't get a sentence:</p>",
          "polygon": [
            [
              85.3154296875,
              444.33984375
            ],
            [
              482.4033203125,
              444.33984375
            ],
            [
              482.4033203125,
              466.5509033203125
            ],
            [
              85.3154296875,
              466.5509033203125
            ]
          ],
          "bbox": [
            85.3154296875,
            444.33984375,
            482.4033203125,
            466.5509033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">this the small regard harriet which knightley's it most things</p>",
          "polygon": [
            [
              85.166015625,
              472.4567565917969
            ],
            [
              410.888671875,
              472.4567565917969
            ],
            [
              410.888671875,
              482.625
            ],
            [
              85.166015625,
              482.625
            ]
          ],
          "bbox": [
            85.166015625,
            472.4567565917969,
            410.888671875,
            482.625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A series of random words seldom makes sense because there is no relationship between successive words. For example, in a real sentence you would expect an article like \"the\" to be followed by an adjective or a noun, and probably not a verb or adverb.</p>",
          "polygon": [
            [
              85.3154296875,
              488.0390625
            ],
            [
              482.90625,
              488.0390625
            ],
            [
              482.90625,
              522.9749145507812
            ],
            [
              85.3154296875,
              522.9749145507812
            ]
          ],
          "bbox": [
            85.3154296875,
            488.0390625,
            482.90625,
            522.9749145507812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One way to measure these kinds of relationships is Markov analysis, which characterizes, for a given sequence of words, the probability of the word that comes next. For example, the song <i>Eric, the Half a Bee</i> begins:</p>",
          "polygon": [
            [
              85.3154296875,
              532.51171875
            ],
            [
              482.4034423828125,
              532.51171875
            ],
            [
              482.4034423828125,
              567.3519134521484
            ],
            [
              85.3154296875,
              567.3519134521484
            ]
          ],
          "bbox": [
            85.3154296875,
            532.51171875,
            482.4034423828125,
            567.3519134521484
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/16",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\">Half a bee, philosophically, Must, ipso facto, half not be. But half the bee has got to be Vis a vis, its entity. D'you see?</p></blockquote>",
          "polygon": [
            [
              110.56640625,
              580.078125
            ],
            [
              243.7598114013672,
              580.078125
            ],
            [
              243.7598114013672,
              627.6689147949219
            ],
            [
              110.56640625,
              627.6689147949219
            ]
          ],
          "bbox": [
            110.56640625,
            580.078125,
            243.7598114013672,
            627.6689147949219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/149/Text/17",
          "block_type": "Text",
          "html": "<blockquote><p block-type=\"Text\">But can a bee be said to be Or not to be an entire bee When half the bee is not a bee Due to some ancient injury?</p></blockquote>",
          "polygon": [
            [
              109.96875,
              642.0953216552734
            ],
            [
              242.58421325683594,
              642.0953216552734
            ],
            [
              242.58421325683594,
              688.6409301757812
            ],
            [
              109.96875,
              688.6409301757812
            ]
          ],
          "bbox": [
            109.96875,
            642.0953216552734,
            242.58421325683594,
            688.6409301757812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/149/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/150/Page/150",
      "block_type": "Page",
      "html": "<content-ref src='/page/150/PageHeader/0'></content-ref><content-ref src='/page/150/PageHeader/17'></content-ref><content-ref src='/page/150/Text/1'></content-ref><content-ref src='/page/150/Text/2'></content-ref><content-ref src='/page/150/Text/3'></content-ref><content-ref src='/page/150/Text/4'></content-ref><content-ref src='/page/150/Text/5'></content-ref><content-ref src='/page/150/ListGroup/149'></content-ref><content-ref src='/page/150/Text/8'></content-ref><content-ref src='/page/150/Text/9'></content-ref><content-ref src='/page/150/Text/10'></content-ref><content-ref src='/page/150/ListItem/11'></content-ref><content-ref src='/page/150/Text/12'></content-ref><content-ref src='/page/150/Text/13'></content-ref><content-ref src='/page/150/SectionHeader/14'></content-ref><content-ref src='/page/150/Text/15'></content-ref><content-ref src='/page/150/ListItem/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/150/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.42138671875,
              61.0048828125
            ],
            [
              525.6033935546875,
              61.0048828125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.42138671875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.42138671875,
            61.0048828125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.521484375
            ],
            [
              526.236328125,
              60.521484375
            ],
            [
              526.236328125,
              69.802734375
            ],
            [
              510.099609375,
              69.802734375
            ]
          ],
          "bbox": [
            510.099609375,
            60.521484375,
            526.236328125,
            69.802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this text, the phrase \"half the\" is always followed by the word \"bee,\" but the phrase \"the bee\" might be followed by either \"has\" or \"is\".</p>",
          "polygon": [
            [
              127.7490234375,
              88.171875
            ],
            [
              525.6033935546875,
              88.171875
            ],
            [
              525.6033935546875,
              110.99188232421875
            ],
            [
              127.7490234375,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.7490234375,
            88.171875,
            525.6033935546875,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The result of Markov analysis is a mapping from each prefix (like \"half the\" and \"the bee\") to all possible suffixes (like \"has\" and \"is\").</p>",
          "polygon": [
            [
              128.49609375,
              120.7529296875
            ],
            [
              526.53515625,
              120.7529296875
            ],
            [
              526.53515625,
              142.99188232421875
            ],
            [
              128.49609375,
              142.99188232421875
            ]
          ],
          "bbox": [
            128.49609375,
            120.7529296875,
            526.53515625,
            142.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Given this mapping, you can generate a random text by starting with any prefix and choosing at random from the possible suffixes. Next, you can combine the end of the prefix and the new suffix to form the next prefix, and repeat.</p>",
          "polygon": [
            [
              127.8984375,
              152.6572265625
            ],
            [
              525.9375,
              152.6572265625
            ],
            [
              525.9375,
              187.18695068359375
            ],
            [
              127.8984375,
              187.18695068359375
            ]
          ],
          "bbox": [
            127.8984375,
            152.6572265625,
            525.9375,
            187.18695068359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, if you start with the prefix \"Half a,\" then the next word has to be \"bee,\" because the prefix only appears once in the text. The next prefix is \"a bee,\" so the next suffix might be \"philosophically,\" \"be\" or \"due.\"</p>",
          "polygon": [
            [
              128.49609375,
              196.3564453125
            ],
            [
              525.9375,
              196.3564453125
            ],
            [
              525.9375,
              231.38092041015625
            ],
            [
              128.49609375,
              231.38092041015625
            ]
          ],
          "bbox": [
            128.49609375,
            196.3564453125,
            525.9375,
            231.38092041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this example the length of the prefix is always two, but you can do Markov analysis with any prefix length. The length of the prefix is called the \"order\" of the analysis. <b>Exercise 13.8.</b> <i>Markov analysis:</i></p>",
          "polygon": [
            [
              128.794921875,
              241.22430419921875
            ],
            [
              525.638671875,
              241.22430419921875
            ],
            [
              525.638671875,
              275.47882080078125
            ],
            [
              128.794921875,
              275.47882080078125
            ]
          ],
          "bbox": [
            128.794921875,
            241.22430419921875,
            525.638671875,
            275.47882080078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/ListGroup/149",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/150/ListItem/6'></content-ref><content-ref src='/page/150/ListItem/7'></content-ref></ul></p>",
          "polygon": [
            [
              140.748046875,
              288.6796875
            ],
            [
              526.236328125,
              288.6796875
            ],
            [
              526.236328125,
              379.66796875
            ],
            [
              140.748046875,
              379.66796875
            ]
          ],
          "bbox": [
            140.748046875,
            288.6796875,
            526.236328125,
            379.66796875
          ],
          "children": [
            {
              "id": "/page/150/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write a program to read a text from a file and perform Markov analysis. The result should be</i> <i>a dictionary that maps from prefixes to a collection of possible suffixes. The collection might</i> <i>be a list, tuple, or dictionary; it is up to you to make an appropriate choice. You can test your</i> <i>program with prefix length two, but you should write the program in a way that makes it easy</i> <i>to try other lengths.</i></li>",
              "polygon": [
                [
                  141.345703125,
                  288.6796875
                ],
                [
                  526.236328125,
                  288.6796875
                ],
                [
                  526.236328125,
                  347.4192810058594
                ],
                [
                  141.345703125,
                  347.4192810058594
                ]
              ],
              "bbox": [
                141.345703125,
                288.6796875,
                526.236328125,
                347.4192810058594
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/149/SectionHeader/11"
              },
              "images": {}
            },
            {
              "id": "/page/150/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Add a function to the previous program to generate random text based on the Markov analysis.</i> <i>Here is an example from</i> Emma <i>with prefix length 2:</i></li>",
              "polygon": [
                [
                  140.748046875,
                  356.94140625
                ],
                [
                  525.603271484375,
                  356.94140625
                ],
                [
                  525.603271484375,
                  379.66796875
                ],
                [
                  140.748046875,
                  379.66796875
                ]
              ],
              "bbox": [
                140.748046875,
                356.94140625,
                525.603271484375,
                379.66796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/149/SectionHeader/11"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": null
        },
        {
          "id": "/page/150/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>He was very clever, be it sweetness or be angry, ashamed or only amused, at such</i> <i>a stroke. She had never thought of Hannah till you were never meant for me?\" \"I</i> <i>cannot make speeches, Emma:\" he soon cut it all himself.</i></p>",
          "polygon": [
            [
              174.9638671875,
              385.44268798828125
            ],
            [
              505.01953125,
              385.44268798828125
            ],
            [
              505.01953125,
              419.7942810058594
            ],
            [
              174.9638671875,
              419.7942810058594
            ]
          ],
          "bbox": [
            174.9638671875,
            385.44268798828125,
            505.01953125,
            419.7942810058594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>For this example, I left the punctuation attached to the words. The result is almost syntacti</i><i>cally correct, but not quite. Semantically, it almost makes sense, but not quite.</i></p>",
          "polygon": [
            [
              153.7470703125,
              425.74169921875
            ],
            [
              525.9375,
              425.74169921875
            ],
            [
              525.9375,
              447.8982849121094
            ],
            [
              153.7470703125,
              447.8982849121094
            ]
          ],
          "bbox": [
            153.7470703125,
            425.74169921875,
            525.9375,
            447.8982849121094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>What happens if you increase the prefix length? Does the random text make more sense?</i></p>",
          "polygon": [
            [
              152.8505859375,
              453.97369384765625
            ],
            [
              507.5916748046875,
              453.97369384765625
            ],
            [
              507.5916748046875,
              463.936279296875
            ],
            [
              152.8505859375,
              463.936279296875
            ]
          ],
          "bbox": [
            152.8505859375,
            453.97369384765625,
            507.5916748046875,
            463.936279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/ListItem/11",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>3. Once your program is working, you might want to try a mash-up: if you analyze text from</i> <i>two or more books, the random text you generate will blend the vocabulary and phrases from</i> <i>the sources in interesting ways.</i></li>",
          "polygon": [
            [
              141.345703125,
              473.8556823730469
            ],
            [
              525.638671875,
              473.8556823730469
            ],
            [
              525.638671875,
              508.207275390625
            ],
            [
              141.345703125,
              508.207275390625
            ]
          ],
          "bbox": [
            141.345703125,
            473.8556823730469,
            525.638671875,
            508.207275390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Credit: This case study is based on an example from Kernighan and Pike,</i> The Practice of Programming<i>, Addison-Wesley, 1999.</i></p>",
          "polygon": [
            [
              129.5419921875,
              521.296875
            ],
            [
              525.9375,
              521.296875
            ],
            [
              525.9375,
              543.81298828125
            ],
            [
              129.5419921875,
              543.81298828125
            ]
          ],
          "bbox": [
            129.5419921875,
            521.296875,
            525.9375,
            543.81298828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You should attempt this exercise before you go on; then you can can download my solution from <a href=\"http://thinkpython.com/code/markov.py\">http://thinkpython.com/code/markov.py</a>. You will also need <a href=\"http://thinkpython.com/code/emma.txt\">http://</a> <a href=\"http://thinkpython.com/code/emma.txt\">thinkpython.com/code/emma.txt</a>.</p>",
          "polygon": [
            [
              128.197265625,
              553.6563873291016
            ],
            [
              526.236328125,
              553.6563873291016
            ],
            [
              526.236328125,
              588.0069885253906
            ],
            [
              128.197265625,
              588.0069885253906
            ]
          ],
          "bbox": [
            128.197265625,
            553.6563873291016,
            526.236328125,
            588.0069885253906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/149/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/150/SectionHeader/14",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-150-0\"></span><b>13.9 Data structures</b></h4>",
          "polygon": [
            [
              128.3466796875,
              616.81640625
            ],
            [
              268.24176025390625,
              616.81640625
            ],
            [
              268.24176025390625,
              631.2310333251953
            ],
            [
              128.3466796875,
              631.2310333251953
            ]
          ],
          "bbox": [
            128.3466796875,
            616.81640625,
            268.24176025390625,
            631.2310333251953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/150/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Using Markov analysis to generate random text is fun, but there is also a point to this exercise: data structure selection. In your solution to the previous exercises, you had to choose:</p>",
          "polygon": [
            [
              128.197265625,
              643.11328125
            ],
            [
              526.236328125,
              643.11328125
            ],
            [
              526.236328125,
              677.5959854125977
            ],
            [
              128.197265625,
              677.5959854125977
            ]
          ],
          "bbox": [
            128.197265625,
            643.11328125,
            526.236328125,
            677.5959854125977
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/150/ListItem/16",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"> How to represent the prefixes.</li>",
          "polygon": [
            [
              142.01806640625,
              690.29296875
            ],
            [
              287.2683410644531,
              690.29296875
            ],
            [
              287.2683410644531,
              700.8349838256836
            ],
            [
              142.01806640625,
              700.8349838256836
            ]
          ],
          "bbox": [
            142.01806640625,
            690.29296875,
            287.2683410644531,
            700.8349838256836
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/150/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/151/Page/175",
      "block_type": "Page",
      "html": "<content-ref src='/page/151/PageHeader/0'></content-ref><content-ref src='/page/151/PageHeader/15'></content-ref><content-ref src='/page/151/ListGroup/175'></content-ref><content-ref src='/page/151/Text/3'></content-ref><content-ref src='/page/151/Text/4'></content-ref><content-ref src='/page/151/Text/5'></content-ref><content-ref src='/page/151/Text/6'></content-ref><content-ref src='/page/151/Code/7'></content-ref><content-ref src='/page/151/Text/8'></content-ref><content-ref src='/page/151/Text/9'></content-ref><content-ref src='/page/151/Text/10'></content-ref><content-ref src='/page/151/Text/11'></content-ref><content-ref src='/page/151/Text/12'></content-ref><content-ref src='/page/151/Text/13'></content-ref><content-ref src='/page/151/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/151/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.908203125
            ],
            [
              484.1015625,
              60.908203125
            ],
            [
              484.1015625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.908203125,
            484.1015625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              60.85986328125
            ],
            [
              102.42333984375,
              60.85986328125
            ],
            [
              102.42333984375,
              70.33447265625
            ],
            [
              85.68896484375,
              70.33447265625
            ]
          ],
          "bbox": [
            85.68896484375,
            60.85986328125,
            102.42333984375,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/ListGroup/175",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/151/ListItem/1'></content-ref><content-ref src='/page/151/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              99.0615234375,
              87.4951171875
            ],
            [
              481.7559509277344,
              87.4951171875
            ],
            [
              481.7559509277344,
              117.69293212890625
            ],
            [
              99.0615234375,
              117.69293212890625
            ]
          ],
          "bbox": [
            99.0615234375,
            87.4951171875,
            481.7559509277344,
            117.69293212890625
          ],
          "children": [
            {
              "id": "/page/151/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> How to represent the collection of possible suffixes.</li>",
              "polygon": [
                [
                  99.9580078125,
                  87.4951171875
                ],
                [
                  339.46875,
                  87.4951171875
                ],
                [
                  339.46875,
                  98.79791259765625
                ],
                [
                  99.9580078125,
                  98.79791259765625
                ]
              ],
              "bbox": [
                99.9580078125,
                87.4951171875,
                339.46875,
                98.79791259765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/150/SectionHeader/14"
              },
              "images": {}
            },
            {
              "id": "/page/151/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> How to represent the mapping from each prefix to the collection of possible suffixes.</li>",
              "polygon": [
                [
                  99.0615234375,
                  106.541015625
                ],
                [
                  481.7559509277344,
                  106.541015625
                ],
                [
                  481.7559509277344,
                  117.69293212890625
                ],
                [
                  99.0615234375,
                  117.69293212890625
                ]
              ],
              "bbox": [
                99.0615234375,
                106.541015625,
                481.7559509277344,
                117.69293212890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/150/SectionHeader/14"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": null
        },
        {
          "id": "/page/151/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Ok, the last one is easy; the only mapping type we have seen is a dictionary, so it is the natural choice.</p>",
          "polygon": [
            [
              85.6142578125,
              127.23046875
            ],
            [
              482.90625,
              127.23046875
            ],
            [
              482.90625,
              149.99798583984375
            ],
            [
              85.6142578125,
              149.99798583984375
            ]
          ],
          "bbox": [
            85.6142578125,
            127.23046875,
            482.90625,
            149.99798583984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For the prefixes, the most obvious options are string, list of strings, or tuple of strings. For the suffixes, one option is a list; another is a histogram (dictionary).</p>",
          "polygon": [
            [
              85.6142578125,
              157.587890625
            ],
            [
              482.4033508300781,
              157.587890625
            ],
            [
              482.4033508300781,
              180.84197998046875
            ],
            [
              85.6142578125,
              180.84197998046875
            ]
          ],
          "bbox": [
            85.6142578125,
            157.587890625,
            482.4033508300781,
            180.84197998046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">How should you choose? The first step is to think about the operations you will need to implement for each data structure. For the prefixes, we need to be able to remove words from the beginning and add to the end. For example, if the current prefix is \"Half a,\" and the next word is \"bee,\" you need to be able to form the next prefix, \"a bee.\"</p>",
          "polygon": [
            [
              85.9130859375,
              188.71875
            ],
            [
              482.90625,
              188.71875
            ],
            [
              482.90625,
              236.07391357421875
            ],
            [
              85.9130859375,
              236.07391357421875
            ]
          ],
          "bbox": [
            85.9130859375,
            188.71875,
            482.90625,
            236.07391357421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Your first choice might be a list, since it is easy to add and remove elements, but we also need to be able to use the prefixes as keys in a dictionary, so that rules out lists. With tuples, you can't append or remove, but you can use the addition operator to form a new tuple:</p>",
          "polygon": [
            [
              85.763671875,
              244.212890625
            ],
            [
              482.4033203125,
              244.212890625
            ],
            [
              482.4033203125,
              279.1129150390625
            ],
            [
              85.763671875,
              279.1129150390625
            ]
          ],
          "bbox": [
            85.763671875,
            244.212890625,
            482.4033203125,
            279.1129150390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Code/7",
          "block_type": "Code",
          "html": "<pre>def shift(prefix, word):\n    return prefix[1:] + (word,)</pre>",
          "polygon": [
            [
              86.4000015258789,
              283.6787414550781
            ],
            [
              248.54579162597656,
              283.6787414550781
            ],
            [
              248.54579162597656,
              305.8353271484375
            ],
            [
              86.4000015258789,
              305.8353271484375
            ]
          ],
          "bbox": [
            86.4000015258789,
            283.6787414550781,
            248.54579162597656,
            305.8353271484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">shift takes a tuple of words, prefix, and a string, word, and forms a new tuple that has all the words in prefix except the first, and word added to the end.</p>",
          "polygon": [
            [
              86.0625,
              310.1484375
            ],
            [
              482.90625,
              310.1484375
            ],
            [
              482.90625,
              332.8569030761719
            ],
            [
              86.0625,
              332.8569030761719
            ]
          ],
          "bbox": [
            86.0625,
            310.1484375,
            482.90625,
            332.8569030761719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For the collection of suffixes, the operations we need to perform include adding a new suffix (or increasing the frequency of an existing one), and choosing a random suffix.</p>",
          "polygon": [
            [
              85.763671875,
              341.0859375
            ],
            [
              482.4032287597656,
              341.0859375
            ],
            [
              482.4032287597656,
              363.7008972167969
            ],
            [
              85.763671875,
              363.7008972167969
            ]
          ],
          "bbox": [
            85.763671875,
            341.0859375,
            482.4032287597656,
            363.7008972167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Adding a new suffix is equally easy for the list implementation or the histogram. Choosing a random element from a list is easy; choosing from a histogram is harder to do efficiently (see Exercise <a href=\"#page-149-1\">13.7)</a>.</p>",
          "polygon": [
            [
              85.763671875,
              371.63671875
            ],
            [
              482.90625,
              371.63671875
            ],
            [
              482.90625,
              406.7388916015625
            ],
            [
              85.763671875,
              406.7388916015625
            ]
          ],
          "bbox": [
            85.763671875,
            371.63671875,
            482.90625,
            406.7388916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So far we have been talking mostly about ease of implementation, but there are other factors to consider in choosing data structures. One is run time. Sometimes there is a theoretical reason to expect one data structure to be faster than other; for example, I mentioned that the in operator is faster for dictionaries than for lists, at least when the number of elements is large.</p>",
          "polygon": [
            [
              85.9130859375,
              414.5625
            ],
            [
              482.4034118652344,
              414.5625
            ],
            [
              482.4034118652344,
              474.1658935546875
            ],
            [
              85.9130859375,
              474.1658935546875
            ]
          ],
          "bbox": [
            85.9130859375,
            414.5625,
            482.4034118652344,
            474.1658935546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But often you don't know ahead of time which implementation will be faster. One option is to implement both of them and see which is better. This approach is called <b>benchmarking</b>. A practical alternative is to choose the data structure that is easiest to implement, and then see if it is fast enough for the intended application. If so, there is no need to go on. If not, there are tools, like the profile module, that can identify the places in a program that take the most time.</p>",
          "polygon": [
            [
              86.2119140625,
              482.625
            ],
            [
              482.4033203125,
              482.625
            ],
            [
              482.4033203125,
              553.7868957519531
            ],
            [
              86.2119140625,
              553.7868957519531
            ]
          ],
          "bbox": [
            86.2119140625,
            482.625,
            482.4033203125,
            553.7868957519531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The other factor to consider is storage space. For example, using a histogram for the collection of suffixes might take less space because you only have to store each word once, no matter how many times it appears in the text. In some cases, saving space can also make your program run faster, and in the extreme, your program might not run at all if you run out of memory. But for many applications, space is a secondary consideration after run time.</p>",
          "polygon": [
            [
              85.9130859375,
              561.90234375
            ],
            [
              482.90625,
              561.90234375
            ],
            [
              482.90625,
              633.4089050292969
            ],
            [
              85.9130859375,
              633.4089050292969
            ]
          ],
          "bbox": [
            85.9130859375,
            561.90234375,
            482.90625,
            633.4089050292969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/151/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One final thought: in this discussion, I have implied that we should use one data structure for both analysis and generation. But since these are separate phases, it would also be possible to use one structure for analysis and then convert to another structure for generation. This would be a net win if the time saved during generation exceeded the time spent in conversion.</p>",
          "polygon": [
            [
              85.763671875,
              641.953125
            ],
            [
              482.90625,
              641.953125
            ],
            [
              482.90625,
              700.8349151611328
            ],
            [
              85.763671875,
              700.8349151611328
            ]
          ],
          "bbox": [
            85.763671875,
            641.953125,
            482.90625,
            700.8349151611328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/150/SectionHeader/14"
      },
      "images": null
    },
    {
      "id": "/page/152/Page/148",
      "block_type": "Page",
      "html": "<content-ref src='/page/152/PageHeader/0'></content-ref><content-ref src='/page/152/PageHeader/15'></content-ref><content-ref src='/page/152/SectionHeader/1'></content-ref><content-ref src='/page/152/Text/2'></content-ref><content-ref src='/page/152/ListGroup/147'></content-ref><content-ref src='/page/152/Text/7'></content-ref><content-ref src='/page/152/Text/8'></content-ref><content-ref src='/page/152/Text/9'></content-ref><content-ref src='/page/152/Text/10'></content-ref><content-ref src='/page/152/Text/11'></content-ref><content-ref src='/page/152/Text/12'></content-ref><content-ref src='/page/152/Text/13'></content-ref><content-ref src='/page/152/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/152/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.2431640625,
              60.85986328125
            ],
            [
              525.6033935546875,
              60.85986328125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.2431640625,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.2431640625,
            60.85986328125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/152/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.501953125,
              60.66650390625
            ],
            [
              526.236328125,
              60.66650390625
            ],
            [
              526.236328125,
              70.52783203125
            ],
            [
              509.501953125,
              70.52783203125
            ]
          ],
          "bbox": [
            509.501953125,
            60.66650390625,
            526.236328125,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/150/SectionHeader/14"
          },
          "images": {}
        },
        {
          "id": "/page/152/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-152-0\"></span><b>13.10 Debugging</b></h4>",
          "polygon": [
            [
              129.60000610351562,
              85.95379638671875
            ],
            [
              250.35195922851562,
              85.95379638671875
            ],
            [
              250.35195922851562,
              100.29998779296875
            ],
            [
              129.60000610351562,
              100.29998779296875
            ]
          ],
          "bbox": [
            129.60000610351562,
            85.95379638671875,
            250.35195922851562,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you are debugging a program, and especially if you are working on a hard bug, there are four things to try:</p>",
          "polygon": [
            [
              128.9443359375,
              112.1484375
            ],
            [
              525.6033325195312,
              112.1484375
            ],
            [
              525.6033325195312,
              134.75592041015625
            ],
            [
              128.9443359375,
              134.75592041015625
            ]
          ],
          "bbox": [
            128.9443359375,
            112.1484375,
            525.6033325195312,
            134.75592041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/ListGroup/147",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/152/ListItem/3'></content-ref><content-ref src='/page/152/ListItem/4'></content-ref><content-ref src='/page/152/ListItem/5'></content-ref><content-ref src='/page/152/ListItem/6'></content-ref></ul></p>",
          "polygon": [
            [
              128.6455078125,
              148.5966796875
            ],
            [
              525.9375,
              148.5966796875
            ],
            [
              525.9375,
              316.6939697265625
            ],
            [
              128.6455078125,
              316.6939697265625
            ]
          ],
          "bbox": [
            128.6455078125,
            148.5966796875,
            525.9375,
            316.6939697265625
          ],
          "children": [
            {
              "id": "/page/152/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>reading:</b> Examine your code, read it back to yourself, and check that it says what you meant to say.</li>",
              "polygon": [
                [
                  129.2431640625,
                  148.5966796875
                ],
                [
                  525.9375,
                  148.5966796875
                ],
                [
                  525.9375,
                  170.95989990234375
                ],
                [
                  129.2431640625,
                  170.95989990234375
                ]
              ],
              "bbox": [
                129.2431640625,
                148.5966796875,
                525.9375,
                170.95989990234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/152/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/152/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>running:</b> Experiment by making changes and running different versions. Often if you display the right thing at the right place in the program, the problem becomes obvious, but sometimes you have to spend some time to build scaffolding.</li>",
              "polygon": [
                [
                  128.6455078125,
                  180.1142578125
                ],
                [
                  525.9375,
                  180.1142578125
                ],
                [
                  525.9375,
                  215.47296142578125
                ],
                [
                  128.6455078125,
                  215.47296142578125
                ]
              ],
              "bbox": [
                128.6455078125,
                180.1142578125,
                525.9375,
                215.47296142578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/152/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/152/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>ruminating:</b> Take some time to think! What kind of error is it: syntax, runtime, semantic? What information can you get from the error messages, or from the output of the program? What kind of error could cause the problem you're seeing? What did you change last, before the problem appeared?</li>",
              "polygon": [
                [
                  128.9443359375,
                  224.876953125
                ],
                [
                  525.9375,
                  224.876953125
                ],
                [
                  525.9375,
                  272.17999267578125
                ],
                [
                  128.9443359375,
                  272.17999267578125
                ]
              ],
              "bbox": [
                128.9443359375,
                224.876953125,
                525.9375,
                272.17999267578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/152/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/152/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>retreating:</b> At some point, the best thing to do is back off, undoing recent changes, until you get back to a program that works and that you understand. Then you can start rebuilding.</li>",
              "polygon": [
                [
                  128.9443359375,
                  282.2452392578125
                ],
                [
                  525.9375,
                  282.2452392578125
                ],
                [
                  525.9375,
                  316.6939697265625
                ],
                [
                  128.9443359375,
                  316.6939697265625
                ]
              ],
              "bbox": [
                128.9443359375,
                282.2452392578125,
                525.9375,
                316.6939697265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/152/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/152/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Beginning programmers sometimes get stuck on one of these activities and forget the others. Each activity comes with its own failure mode.</p>",
          "polygon": [
            [
              128.6455078125,
              330.7403869628906
            ],
            [
              525.9375,
              330.7403869628906
            ],
            [
              525.9375,
              352.89697265625
            ],
            [
              128.6455078125,
              352.89697265625
            ]
          ],
          "bbox": [
            128.6455078125,
            330.7403869628906,
            525.9375,
            352.89697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, reading your code might help if the problem is a typographical error, but not if the problem is a conceptual misunderstanding. If you don't understand what your program does, you can read it 100 times and never see the error, because the error is in your head.</p>",
          "polygon": [
            [
              128.6455078125,
              362.935546875
            ],
            [
              526.53515625,
              362.935546875
            ],
            [
              526.53515625,
              409.57098388671875
            ],
            [
              128.6455078125,
              409.57098388671875
            ]
          ],
          "bbox": [
            128.6455078125,
            362.935546875,
            526.53515625,
            409.57098388671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Running experiments can help, especially if you run small, simple tests. But if you run experiments without thinking or reading your code, you might fall into a pattern I call \"random walk programming,\" which is the process of making random changes until the program does the right thing. Needless to say, random walk programming can take a long time.</p>",
          "polygon": [
            [
              128.9443359375,
              419.203125
            ],
            [
              526.53515625,
              419.203125
            ],
            [
              526.53515625,
              478.4389953613281
            ],
            [
              128.9443359375,
              478.4389953613281
            ]
          ],
          "bbox": [
            128.9443359375,
            419.203125,
            526.53515625,
            478.4389953613281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You have to take time to think. Debugging is like an experimental science. You should have at least one hypothesis about what the problem is. If there are two or more possibilities, try to think of a test that would eliminate one of them.</p>",
          "polygon": [
            [
              128.9443359375,
              488.42578125
            ],
            [
              526.53515625,
              488.42578125
            ],
            [
              526.53515625,
              522.9179992675781
            ],
            [
              128.9443359375,
              522.9179992675781
            ]
          ],
          "bbox": [
            128.9443359375,
            488.42578125,
            526.53515625,
            522.9179992675781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Taking a break helps with the thinking. So does talking. If you explain the problem to someone else (or even yourself), you will sometimes find the answer before you finish asking the question.</p>",
          "polygon": [
            [
              128.794921875,
              532.51171875
            ],
            [
              526.236328125,
              532.51171875
            ],
            [
              526.236328125,
              567.3970031738281
            ],
            [
              128.794921875,
              567.3970031738281
            ]
          ],
          "bbox": [
            128.794921875,
            532.51171875,
            526.236328125,
            567.3970031738281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But even the best debugging techniques will fail if there are too many errors, or if the code you are trying to fix is too big and complicated. Sometimes the best option is to retreat, simplifying the program until you get to something that works and that you understand.</p>",
          "polygon": [
            [
              128.197265625,
              577.5254058837891
            ],
            [
              526.236328125,
              577.5254058837891
            ],
            [
              526.236328125,
              611.8770141601562
            ],
            [
              128.197265625,
              611.8770141601562
            ]
          ],
          "bbox": [
            128.197265625,
            577.5254058837891,
            526.236328125,
            611.8770141601562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Beginning programmers are often reluctant to retreat because they can't stand to delete a line of code (even if it's wrong). If it makes you feel better, copy your program into another file before you start stripping it down. Then you can paste the pieces back in a little bit at a time.</p>",
          "polygon": [
            [
              128.3466796875,
              622.0044097900391
            ],
            [
              525.9375,
              622.0044097900391
            ],
            [
              525.9375,
              668.5500259399414
            ],
            [
              128.3466796875,
              668.5500259399414
            ]
          ],
          "bbox": [
            128.3466796875,
            622.0044097900391,
            525.9375,
            668.5500259399414
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/152/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Finding a hard bug requires reading, running, ruminating, and sometimes retreating. If you get stuck on one of these activities, try the others.</p>",
          "polygon": [
            [
              127.8984375,
              678.3046875
            ],
            [
              526.53515625,
              678.3046875
            ],
            [
              526.53515625,
              700.8350296020508
            ],
            [
              127.8984375,
              700.8350296020508
            ]
          ],
          "bbox": [
            127.8984375,
            678.3046875,
            526.53515625,
            700.8350296020508
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/152/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/153/Page/180",
      "block_type": "Page",
      "html": "<content-ref src='/page/153/PageHeader/0'></content-ref><content-ref src='/page/153/PageHeader/16'></content-ref><content-ref src='/page/153/SectionHeader/1'></content-ref><content-ref src='/page/153/ListGroup/177'></content-ref><content-ref src='/page/153/Text/4'></content-ref><content-ref src='/page/153/Text/5'></content-ref><content-ref src='/page/153/ListItem/6'></content-ref><content-ref src='/page/153/SectionHeader/7'></content-ref><content-ref src='/page/153/Text/8'></content-ref><content-ref src='/page/153/Text/9'></content-ref><content-ref src='/page/153/TextInlineMath/10'></content-ref><content-ref src='/page/153/Text/11'></content-ref><content-ref src='/page/153/Equation/12'></content-ref><content-ref src='/page/153/Text/13'></content-ref><content-ref src='/page/153/Text/14'></content-ref><content-ref src='/page/153/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/153/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.0048828125
            ],
            [
              483.50390625,
              61.0048828125
            ],
            [
              483.50390625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.0048828125,
            483.50390625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/153/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              61.53662109375
            ],
            [
              102.3486328125,
              61.53662109375
            ],
            [
              102.3486328125,
              70.91455078125
            ],
            [
              85.763671875,
              70.91455078125
            ]
          ],
          "bbox": [
            85.763671875,
            61.53662109375,
            102.3486328125,
            70.91455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/152/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/153/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-153-0\"></span><b>13.11 Glossary</b></h4>",
          "polygon": [
            [
              85.6142578125,
              85.95379638671875
            ],
            [
              191.3994140625,
              85.95379638671875
            ],
            [
              191.3994140625,
              100.29998779296875
            ],
            [
              85.6142578125,
              100.29998779296875
            ]
          ],
          "bbox": [
            85.6142578125,
            85.95379638671875,
            191.3994140625,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/153/ListGroup/177",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/153/ListItem/2'></content-ref><content-ref src='/page/153/ListItem/3'></content-ref></ul></p>",
          "polygon": [
            [
              85.6142578125,
              108.5712890625
            ],
            [
              483.50390625,
              108.5712890625
            ],
            [
              483.50390625,
              163.89093017578125
            ],
            [
              85.6142578125,
              163.89093017578125
            ]
          ],
          "bbox": [
            85.6142578125,
            108.5712890625,
            483.50390625,
            163.89093017578125
          ],
          "children": [
            {
              "id": "/page/153/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>deterministic:</b> Pertaining to a program that does the same thing each time it runs, given the same inputs.</li>",
              "polygon": [
                [
                  85.6142578125,
                  108.5712890625
                ],
                [
                  483.50390625,
                  108.5712890625
                ],
                [
                  483.50390625,
                  131.53192138671875
                ],
                [
                  85.6142578125,
                  131.53192138671875
                ]
              ],
              "bbox": [
                85.6142578125,
                108.5712890625,
                483.50390625,
                131.53192138671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/153/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/153/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>pseudorandom:</b> Pertaining to a sequence of numbers that appear to be random, but are generated by a deterministic program.</li>",
              "polygon": [
                [
                  85.763671875,
                  141.15234375
                ],
                [
                  482.4030456542969,
                  141.15234375
                ],
                [
                  482.4030456542969,
                  163.89093017578125
                ],
                [
                  85.763671875,
                  163.89093017578125
                ]
              ],
              "bbox": [
                85.763671875,
                141.15234375,
                482.4030456542969,
                163.89093017578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/144/SectionHeader/1",
                "3": "/page/144/SectionHeader/2",
                "4": "/page/153/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/153/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>default value:</b> The value given to an optional parameter if no argument is provided.</p>",
          "polygon": [
            [
              85.9130859375,
              173.63671875
            ],
            [
              459.11029052734375,
              173.63671875
            ],
            [
              459.11029052734375,
              184.054931640625
            ],
            [
              85.9130859375,
              184.054931640625
            ]
          ],
          "bbox": [
            85.9130859375,
            173.63671875,
            459.11029052734375,
            184.054931640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/153/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>override:</b> To replace a default value with an argument.</p>",
          "polygon": [
            [
              85.68896484375,
              194.1328125
            ],
            [
              328.72967529296875,
              194.1328125
            ],
            [
              328.72967529296875,
              204.21990966796875
            ],
            [
              85.68896484375,
              204.21990966796875
            ]
          ],
          "bbox": [
            85.68896484375,
            194.1328125,
            328.72967529296875,
            204.21990966796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/153/ListItem/6",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>benchmarking:</b> The process of choosing between data structures by implementing alternatives and testing them on a sample of the possible inputs.</li>",
          "polygon": [
            [
              85.6142578125,
              213.46875
            ],
            [
              482.4027404785156,
              213.46875
            ],
            [
              482.4027404785156,
              236.57794189453125
            ],
            [
              85.6142578125,
              236.57794189453125
            ]
          ],
          "bbox": [
            85.6142578125,
            213.46875,
            482.4027404785156,
            236.57794189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/153/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-153-1\"></span><b>13.12 Exercises</b></h4>",
          "polygon": [
            [
              85.53955078125,
              265.482421875
            ],
            [
              192.77706909179688,
              265.482421875
            ],
            [
              192.77706909179688,
              280.2669677734375
            ],
            [
              85.53955078125,
              280.2669677734375
            ]
          ],
          "bbox": [
            85.53955078125,
            265.482421875,
            192.77706909179688,
            280.2669677734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 13.9.</b> <i>The \"rank\" of a word is its position in a list of words sorted by frequency: the most</i> <i>common word has rank 1, the second most common has rank 2, etc.</i></p>",
          "polygon": [
            [
              85.46484375,
              292.166015625
            ],
            [
              483.205078125,
              292.166015625
            ],
            [
              483.205078125,
              314.59619140625
            ],
            [
              85.46484375,
              314.59619140625
            ]
          ],
          "bbox": [
            85.46484375,
            292.166015625,
            483.205078125,
            314.59619140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Zipf's law describes a relationship between the ranks and frequencies of words in natural languages</i> <i>(</i><a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">//</a> <a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">Zipf's_</a> <a href=\"http://en.wikipedia.org/wiki/Zipf\" s_law'=\"\">law</a> <i>). Specifically, it predicts that the frequency,</i> <i>f , of the word with rank r is:</i></p>",
          "polygon": [
            [
              85.3154296875,
              324.7705993652344
            ],
            [
              483.50390625,
              324.7705993652344
            ],
            [
              483.50390625,
              359.1221923828125
            ],
            [
              85.3154296875,
              359.1221923828125
            ]
          ],
          "bbox": [
            85.3154296875,
            324.7705993652344,
            483.50390625,
            359.1221923828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/TextInlineMath/10",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\"><math display=\"inline\">f = cr^{-s} </math></p>",
          "polygon": [
            [
              265.8076171875,
              378.42578125
            ],
            [
              304.3564453125,
              378.42578125
            ],
            [
              304.3564453125,
              391.4541931152344
            ],
            [
              265.8076171875,
              391.4541931152344
            ]
          ],
          "bbox": [
            265.8076171875,
            378.42578125,
            304.3564453125,
            391.4541931152344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>where s and c are parameters that depend on the language and the text. If you take the logarithm of</i> <i>both sides of this equation, you get:</i></p>",
          "polygon": [
            [
              84.8671875,
              399.48046875
            ],
            [
              483.205078125,
              399.48046875
            ],
            [
              483.205078125,
              421.9402160644531
            ],
            [
              84.8671875,
              421.9402160644531
            ]
          ],
          "bbox": [
            84.8671875,
            399.48046875,
            483.205078125,
            421.9402160644531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/Equation/12",
          "block_type": "Equation",
          "html": "<p block-type=\"Equation\"><math display=\"block\">\\log f = \\log c - s \\log r</math></p>",
          "polygon": [
            [
              237.7177734375,
              443.3782958984375
            ],
            [
              331.1015625,
              443.3782958984375
            ],
            [
              331.1015625,
              454.44390869140625
            ],
            [
              237.7177734375,
              454.44390869140625
            ]
          ],
          "bbox": [
            237.7177734375,
            443.3782958984375,
            331.1015625,
            454.44390869140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>So if you plot log f versus log r, you should get a straight line with slope</i> −<i>s and intercept log c.</i></p>",
          "polygon": [
            [
              85.9130859375,
              461.6702880859375
            ],
            [
              471.8552551269531,
              461.6702880859375
            ],
            [
              471.8552551269531,
              472.5703125
            ],
            [
              85.9130859375,
              472.5703125
            ]
          ],
          "bbox": [
            85.9130859375,
            461.6702880859375,
            471.8552551269531,
            472.5703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a program that reads a text from a file, counts word frequencies, and prints one line for each</i> <i>word, in descending order of frequency, with log f and log r. Use the graphing program of your</i> <i>choice to plot the results and check whether they form a straight line. Can you estimate the value of</i> <i>s?</i></p>",
          "polygon": [
            [
              85.6142578125,
              481.8515625
            ],
            [
              482.90625,
              481.8515625
            ],
            [
              482.90625,
              529.283203125
            ],
            [
              85.6142578125,
              529.283203125
            ]
          ],
          "bbox": [
            85.6142578125,
            481.8515625,
            482.90625,
            529.283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/153/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/zipf.py\">http:</a> <a href=\"http://thinkpython.com/code/zipf.py\">//</a> <a href=\"http://thinkpython.com/code/zipf.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/zipf.py\">com/</a> <a href=\"http://thinkpython.com/code/zipf.py\">code/</a> <a href=\"http://thinkpython.com/code/zipf.py\">zipf.</a> <a href=\"http://thinkpython.com/code/zipf.py\">py</a> <i>. To make the plots, you might have to</i> <i>install matplotlib (see</i> <a href=\"http://matplotlib.sourceforge.net/\">http:</a> <a href=\"http://matplotlib.sourceforge.net/\">//</a> <a href=\"http://matplotlib.sourceforge.net/\">matplotlib.</a> <a href=\"http://matplotlib.sourceforge.net/\">sourceforge.</a> <a href=\"http://matplotlib.sourceforge.net/\">net/</a> <i>).</i></p>",
          "polygon": [
            [
              85.46484375,
              539.3779144287109
            ],
            [
              482.4043273925781,
              539.3779144287109
            ],
            [
              482.4043273925781,
              561.6152038574219
            ],
            [
              85.46484375,
              561.6152038574219
            ]
          ],
          "bbox": [
            85.46484375,
            539.3779144287109,
            482.4043273925781,
            561.6152038574219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "3": "/page/144/SectionHeader/2",
            "4": "/page/153/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/144/SectionHeader/1",
        "3": "/page/144/SectionHeader/2",
        "4": "/page/153/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/154/Page/119",
      "block_type": "Page",
      "html": "<content-ref src='/page/154/SectionHeader/0'></content-ref><content-ref src='/page/154/SectionHeader/1'></content-ref><content-ref src='/page/154/SectionHeader/2'></content-ref><content-ref src='/page/154/Text/3'></content-ref><content-ref src='/page/154/Text/4'></content-ref><content-ref src='/page/154/Text/5'></content-ref><content-ref src='/page/154/Text/6'></content-ref><content-ref src='/page/154/Text/7'></content-ref><content-ref src='/page/154/SectionHeader/8'></content-ref><content-ref src='/page/154/Text/9'></content-ref><content-ref src='/page/154/Text/10'></content-ref><content-ref src='/page/154/Code/11'></content-ref><content-ref src='/page/154/Text/12'></content-ref><content-ref src='/page/154/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/154/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-154-0\"></span><b>Chapter 14</b></h2>",
          "polygon": [
            [
              128.794921875,
              162.615234375
            ],
            [
              232.787109375,
              162.615234375
            ],
            [
              232.787109375,
              184.32196044921875
            ],
            [
              128.794921875,
              184.32196044921875
            ]
          ],
          "bbox": [
            128.794921875,
            162.615234375,
            232.787109375,
            184.32196044921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/144/SectionHeader/1",
            "2": "/page/154/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/154/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Files</b></h1>",
          "polygon": [
            [
              127.8984375,
              217.916015625
            ],
            [
              184.974609375,
              217.916015625
            ],
            [
              184.974609375,
              243.34136962890625
            ],
            [
              127.8984375,
              243.34136962890625
            ]
          ],
          "bbox": [
            127.8984375,
            217.916015625,
            184.974609375,
            243.34136962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/154/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-154-1\"></span><b>14.1 Persistence</b></h4>",
          "polygon": [
            [
              128.6455078125,
              291.7667541503906
            ],
            [
              242.4990234375,
              291.7667541503906
            ],
            [
              242.4990234375,
              306.11297607421875
            ],
            [
              128.6455078125,
              306.11297607421875
            ]
          ],
          "bbox": [
            128.6455078125,
            291.7667541503906,
            242.4990234375,
            306.11297607421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most of the programs we have seen so far are transient in the sense that they run for a short time and produce some output, but when they end, their data disappears. If you run the program again, it starts with a clean slate.</p>",
          "polygon": [
            [
              128.3466796875,
              317.996337890625
            ],
            [
              526.53515625,
              317.996337890625
            ],
            [
              526.53515625,
              352.3479309082031
            ],
            [
              128.3466796875,
              352.3479309082031
            ]
          ],
          "bbox": [
            128.3466796875,
            317.996337890625,
            526.53515625,
            352.3479309082031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Other programs are <b>persistent</b>: they run for a long time (or all the time); they keep at least some of their data in permanent storage (a hard drive, for example); and if they shut down and restart, they pick up where they left off.</p>",
          "polygon": [
            [
              128.49609375,
              361.58203125
            ],
            [
              525.9375,
              361.58203125
            ],
            [
              525.9375,
              396.41192626953125
            ],
            [
              128.49609375,
              396.41192626953125
            ]
          ],
          "bbox": [
            128.49609375,
            361.58203125,
            525.9375,
            396.41192626953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Examples of persistent programs are operating systems, which run pretty much whenever a computer is on, and web servers, which run all the time, waiting for requests to come in on the network.</p>",
          "polygon": [
            [
              129.09375,
              405.28125
            ],
            [
              525.9375,
              405.28125
            ],
            [
              525.9375,
              440.4769287109375
            ],
            [
              129.09375,
              440.4769287109375
            ]
          ],
          "bbox": [
            129.09375,
            405.28125,
            525.9375,
            440.4769287109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the simplest ways for programs to maintain their data is by reading and writing text files. We have already seen programs that read text files; in this chapter we will see programs that write them.</p>",
          "polygon": [
            [
              128.3466796875,
              449.75390625
            ],
            [
              526.53515625,
              449.75390625
            ],
            [
              526.53515625,
              484.5409240722656
            ],
            [
              128.3466796875,
              484.5409240722656
            ]
          ],
          "bbox": [
            128.3466796875,
            449.75390625,
            526.53515625,
            484.5409240722656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An alternative is to store the state of the program in a database. In this chapter I will present a simple database and a module, pickle, that makes it easy to store program data.</p>",
          "polygon": [
            [
              128.3466796875,
              493.83984375
            ],
            [
              525.9375,
              493.83984375
            ],
            [
              525.9375,
              516.4109191894531
            ],
            [
              128.3466796875,
              516.4109191894531
            ]
          ],
          "bbox": [
            128.3466796875,
            493.83984375,
            525.9375,
            516.4109191894531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/154/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-154-2\"></span><b>14.2 Reading and writing</b></h4>",
          "polygon": [
            [
              127.8984375,
              544.88671875
            ],
            [
              305.701171875,
              544.88671875
            ],
            [
              305.701171875,
              559.58203125
            ],
            [
              127.8984375,
              559.58203125
            ]
          ],
          "bbox": [
            127.8984375,
            544.88671875,
            305.701171875,
            559.58203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A text file is a sequence of characters stored on a permanent medium like a hard drive, flash memory, or CD-ROM. We saw how to open and read a file in Section <a href=\"#page-102-1\">9.1.</a></p>",
          "polygon": [
            [
              128.49609375,
              571.18359375
            ],
            [
              525.9375,
              571.18359375
            ],
            [
              525.9375,
              593.61328125
            ],
            [
              128.49609375,
              593.61328125
            ]
          ],
          "bbox": [
            128.49609375,
            571.18359375,
            525.9375,
            593.61328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To write a file, you have to open it with mode 'w' as a second parameter:</p>",
          "polygon": [
            [
              128.197265625,
              602.5078125
            ],
            [
              451.828125,
              602.5078125
            ],
            [
              451.828125,
              613.1689300537109
            ],
            [
              128.197265625,
              613.1689300537109
            ]
          ],
          "bbox": [
            128.197265625,
            602.5078125,
            451.828125,
            613.1689300537109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/154/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fout = open('output.txt', 'w')\n&gt;&gt;&gt; print fout\n&lt;open file 'output.txt', mode 'w' at 0xb7eb2410&gt;</pre>",
          "polygon": [
            [
              129.60000610351562,
              617.9765625
            ],
            [
              380.61517333984375,
              617.9765625
            ],
            [
              380.61517333984375,
              658.1953125
            ],
            [
              129.60000610351562,
              658.1953125
            ]
          ],
          "bbox": [
            129.60000610351562,
            617.9765625,
            380.61517333984375,
            658.1953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the file already exists, opening it in write mode clears out the old data and starts fresh, so be careful! If the file doesn't exist, a new one is created.</p>",
          "polygon": [
            [
              129.2431640625,
              658.96875
            ],
            [
              526.53515625,
              658.96875
            ],
            [
              526.53515625,
              681.1599349975586
            ],
            [
              129.2431640625,
              681.1599349975586
            ]
          ],
          "bbox": [
            129.2431640625,
            658.96875,
            526.53515625,
            681.1599349975586
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/154/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The write method puts data into the file.</p>",
          "polygon": [
            [
              128.49609375,
              690.29296875
            ],
            [
              310.78125,
              690.29296875
            ],
            [
              310.78125,
              700.8349380493164
            ],
            [
              128.49609375,
              700.8349380493164
            ]
          ],
          "bbox": [
            128.49609375,
            690.29296875,
            310.78125,
            700.8349380493164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "4": "/page/154/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/155/Page/224",
      "block_type": "Page",
      "html": "<content-ref src='/page/155/PageHeader/0'></content-ref><content-ref src='/page/155/PageHeader/21'></content-ref><content-ref src='/page/155/TextInlineMath/1'></content-ref><content-ref src='/page/155/Text/2'></content-ref><content-ref src='/page/155/Text/3'></content-ref><content-ref src='/page/155/Text/4'></content-ref><content-ref src='/page/155/Text/5'></content-ref><content-ref src='/page/155/SectionHeader/6'></content-ref><content-ref src='/page/155/Text/7'></content-ref><content-ref src='/page/155/Code/8'></content-ref><content-ref src='/page/155/Text/9'></content-ref><content-ref src='/page/155/Text/10'></content-ref><content-ref src='/page/155/Text/11'></content-ref><content-ref src='/page/155/Code/12'></content-ref><content-ref src='/page/155/Text/13'></content-ref><content-ref src='/page/155/Text/14'></content-ref><content-ref src='/page/155/Code/15'></content-ref><content-ref src='/page/155/Text/16'></content-ref><content-ref src='/page/155/Text/17'></content-ref><content-ref src='/page/155/Code/18'></content-ref><content-ref src='/page/155/Text/19'></content-ref><content-ref src='/page/155/Code/20'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/155/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.4034118652344,
              60.71484375
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/155/PageHeader/21",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.46484375,
              61.1015625
            ],
            [
              101.6015625,
              61.1015625
            ],
            [
              101.6015625,
              70.3828125
            ],
            [
              85.46484375,
              70.3828125
            ]
          ],
          "bbox": [
            85.46484375,
            61.1015625,
            101.6015625,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/155/TextInlineMath/1",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; line1 = \"This here's the wattle,\\n\" &gt;&gt;&gt; fout.write(line1)</p>",
          "polygon": [
            [
              86.4000015258789,
              88.0751953125
            ],
            [
              290.3558654785156,
              88.0751953125
            ],
            [
              290.3558654785156,
              110.84228515625
            ],
            [
              86.4000015258789,
              110.84228515625
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.0751953125,
            290.3558654785156,
            110.84228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Again, the file object keeps track of where it is, so if you call write again, it adds the new data to the end.</p>",
          "polygon": [
            [
              85.6142578125,
              116.4990234375
            ],
            [
              482.4018859863281,
              116.4990234375
            ],
            [
              482.4018859863281,
              139.60589599609375
            ],
            [
              85.6142578125,
              139.60589599609375
            ]
          ],
          "bbox": [
            85.6142578125,
            116.4990234375,
            482.4018859863281,
            139.60589599609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; line2 = \"the emblem of our land.\\n\" &gt;&gt;&gt; fout.write(line2)</p>",
          "polygon": [
            [
              85.53955078125,
              145.9127197265625
            ],
            [
              290.4609375,
              145.9127197265625
            ],
            [
              290.4609375,
              168.0693359375
            ],
            [
              85.53955078125,
              168.0693359375
            ]
          ],
          "bbox": [
            85.53955078125,
            145.9127197265625,
            290.4609375,
            168.0693359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you are done writing, you have to close the file.</p>",
          "polygon": [
            [
              85.98779296875,
              174.1201171875
            ],
            [
              323.96807861328125,
              174.1201171875
            ],
            [
              323.96807861328125,
              184.637939453125
            ],
            [
              85.98779296875,
              184.637939453125
            ]
          ],
          "bbox": [
            85.98779296875,
            174.1201171875,
            323.96807861328125,
            184.637939453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; fout.close()</p>",
          "polygon": [
            [
              85.68896484375,
              190.94573974609375
            ],
            [
              172.423828125,
              190.94573974609375
            ],
            [
              172.423828125,
              200.9083251953125
            ],
            [
              85.68896484375,
              200.9083251953125
            ]
          ],
          "bbox": [
            85.68896484375,
            190.94573974609375,
            172.423828125,
            200.9083251953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/154/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/155/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-155-0\"></span><b>14.3 Format operator</b></h4>",
          "polygon": [
            [
              85.83837890625,
              227.187744140625
            ],
            [
              232.189453125,
              227.187744140625
            ],
            [
              232.189453125,
              241.533935546875
            ],
            [
              85.83837890625,
              241.533935546875
            ]
          ],
          "bbox": [
            85.83837890625,
            227.187744140625,
            232.189453125,
            241.533935546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The argument of write has to be a string, so if we want to put other values in a file, we have to convert them to strings. The easiest way to do that is with str:</p>",
          "polygon": [
            [
              85.6142578125,
              254.07421875
            ],
            [
              482.40325927734375,
              254.07421875
            ],
            [
              482.40325927734375,
              276.39093017578125
            ],
            [
              85.6142578125,
              276.39093017578125
            ]
          ],
          "bbox": [
            85.6142578125,
            254.07421875,
            482.40325927734375,
            276.39093017578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; x = 52\n&gt;&gt;&gt; fout.write(str(x))</pre>",
          "polygon": [
            [
              85.9130859375,
              282.69775390625
            ],
            [
              201.47799682617188,
              282.69775390625
            ],
            [
              201.47799682617188,
              304.8543395996094
            ],
            [
              85.9130859375,
              304.8543395996094
            ]
          ],
          "bbox": [
            85.9130859375,
            282.69775390625,
            201.47799682617188,
            304.8543395996094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An alternative is to use the <b>format operator</b>, %. When applied to integers, % is the modulus operator. But when the first operand is a string, % is the format operator.</p>",
          "polygon": [
            [
              86.0625,
              311.311767578125
            ],
            [
              482.39886474609375,
              311.311767578125
            ],
            [
              482.39886474609375,
              333.617919921875
            ],
            [
              86.0625,
              333.617919921875
            ]
          ],
          "bbox": [
            86.0625,
            311.311767578125,
            482.39886474609375,
            333.617919921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first operand is the <b>format string</b>, which contains one or more <b>format sequences</b>, which specify how the second operand is formatted. The result is a string.</p>",
          "polygon": [
            [
              85.763671875,
              343.79296875
            ],
            [
              482.3996887207031,
              343.79296875
            ],
            [
              482.3996887207031,
              366.2029113769531
            ],
            [
              85.763671875,
              366.2029113769531
            ]
          ],
          "bbox": [
            85.763671875,
            343.79296875,
            482.3996887207031,
            366.2029113769531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, the format sequence '%d' means that the second operand should be formatted as an integer (d stands for \"decimal\"):</p>",
          "polygon": [
            [
              85.6142578125,
              376.470703125
            ],
            [
              482.40252685546875,
              376.470703125
            ],
            [
              482.40252685546875,
              398.78790283203125
            ],
            [
              85.6142578125,
              398.78790283203125
            ]
          ],
          "bbox": [
            85.6142578125,
            376.470703125,
            482.40252685546875,
            398.78790283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; camels = 42\n&gt;&gt;&gt; '%d' % camels\n'42'</pre>",
          "polygon": [
            [
              85.09130859375,
              404.89453125
            ],
            [
              176.90625,
              404.89453125
            ],
            [
              176.90625,
              439.44635009765625
            ],
            [
              85.09130859375,
              439.44635009765625
            ]
          ],
          "bbox": [
            85.09130859375,
            404.89453125,
            176.90625,
            439.44635009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The result is the string '42', which is not to be confused with the integer value 42.</p>",
          "polygon": [
            [
              85.46484375,
              445.5
            ],
            [
              447.9716796875,
              445.5
            ],
            [
              447.9716796875,
              456.0149230957031
            ],
            [
              85.46484375,
              456.0149230957031
            ]
          ],
          "bbox": [
            85.46484375,
            445.5,
            447.9716796875,
            456.0149230957031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A format sequence can appear anywhere in the string, so you can embed a value in a sentence:</p>",
          "polygon": [
            [
              85.46484375,
              465.99609375
            ],
            [
              482.4034118652344,
              465.99609375
            ],
            [
              482.4034118652344,
              488.59991455078125
            ],
            [
              85.46484375,
              488.59991455078125
            ]
          ],
          "bbox": [
            85.46484375,
            465.99609375,
            482.4034118652344,
            488.59991455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Code/15",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; camels = 42\n&gt;&gt;&gt; 'I have spotted %d camels.' % camels\n'I have spotted 42 camels.'</pre>",
          "polygon": [
            [
              85.46484375,
              494.9067687988281
            ],
            [
              295.573974609375,
              494.9067687988281
            ],
            [
              295.573974609375,
              529.2583618164062
            ],
            [
              85.46484375,
              529.2583618164062
            ]
          ],
          "bbox": [
            85.46484375,
            494.9067687988281,
            295.573974609375,
            529.2583618164062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If there is more than one format sequence in the string, the second argument has to be a tuple. Each format sequence is matched with an element of the tuple, in order.</p>",
          "polygon": [
            [
              85.6142578125,
              535.60546875
            ],
            [
              482.90625,
              535.60546875
            ],
            [
              482.90625,
              558.0209350585938
            ],
            [
              85.6142578125,
              558.0209350585938
            ]
          ],
          "bbox": [
            85.6142578125,
            535.60546875,
            482.90625,
            558.0209350585938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following example uses '%d' to format an integer, '%g' to format a floating-point number (don't ask why), and '%s' to format a string:</p>",
          "polygon": [
            [
              85.6142578125,
              567.703125
            ],
            [
              482.90625,
              567.703125
            ],
            [
              482.90625,
              590.6059265136719
            ],
            [
              85.6142578125,
              590.6059265136719
            ]
          ],
          "bbox": [
            85.6142578125,
            567.703125,
            482.90625,
            590.6059265136719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Code/18",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; 'In %d years I have spotted %g %s.' % (3, 0.1, 'camels')\n'In 3 years I have spotted 0.1 camels.'</pre>",
          "polygon": [
            [
              85.3154296875,
              596.9127807617188
            ],
            [
              400.1474304199219,
              596.9127807617188
            ],
            [
              400.1474304199219,
              619.0703887939453
            ],
            [
              85.3154296875,
              619.0703887939453
            ]
          ],
          "bbox": [
            85.3154296875,
            596.9127807617188,
            400.1474304199219,
            619.0703887939453
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The number of elements in the tuple has to match the number of format sequences in the string. Also, the types of the elements have to match the format sequences:</p>",
          "polygon": [
            [
              85.3154296875,
              625.6763458251953
            ],
            [
              482.4034118652344,
              625.6763458251953
            ],
            [
              482.4034118652344,
              647.8329467773438
            ],
            [
              85.3154296875,
              647.8329467773438
            ]
          ],
          "bbox": [
            85.3154296875,
            625.6763458251953,
            482.4034118652344,
            647.8329467773438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/155/Code/20",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; '%d %d %d' % (1, 2)\nTypeError: not enough arguments for format string\n&gt;&gt;&gt; '%d' % 'dollars'\nTypeError: illegal argument type for built-in operation</pre>",
          "polygon": [
            [
              85.3154296875,
              653.5546875
            ],
            [
              376.5234375,
              653.5546875
            ],
            [
              376.5234375,
              700.6853942871094
            ],
            [
              85.3154296875,
              700.6853942871094
            ]
          ],
          "bbox": [
            85.3154296875,
            653.5546875,
            376.5234375,
            700.6853942871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "4": "/page/155/SectionHeader/6"
      },
      "images": null
    },
    {
      "id": "/page/156/Page/198",
      "block_type": "Page",
      "html": "<content-ref src='/page/156/PageHeader/0'></content-ref><content-ref src='/page/156/PageHeader/21'></content-ref><content-ref src='/page/156/Text/1'></content-ref><content-ref src='/page/156/Text/2'></content-ref><content-ref src='/page/156/SectionHeader/3'></content-ref><content-ref src='/page/156/Text/4'></content-ref><content-ref src='/page/156/Text/5'></content-ref><content-ref src='/page/156/Code/6'></content-ref><content-ref src='/page/156/Text/7'></content-ref><content-ref src='/page/156/Text/8'></content-ref><content-ref src='/page/156/Text/9'></content-ref><content-ref src='/page/156/Code/10'></content-ref><content-ref src='/page/156/Text/11'></content-ref><content-ref src='/page/156/Code/12'></content-ref><content-ref src='/page/156/Text/13'></content-ref><content-ref src='/page/156/Text/14'></content-ref><content-ref src='/page/156/Code/15'></content-ref><content-ref src='/page/156/Text/16'></content-ref><content-ref src='/page/156/Text/17'></content-ref><content-ref src='/page/156/Code/18'></content-ref><content-ref src='/page/156/Text/19'></content-ref><content-ref src='/page/156/Code/20'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/156/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.0478515625,
              60.8115234375
            ],
            [
              525.6033935546875,
              60.8115234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.0478515625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.0478515625,
            60.8115234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/156/PageHeader/21",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.203125,
              60.56982421875
            ],
            [
              525.9375,
              60.56982421875
            ],
            [
              525.9375,
              69.94775390625
            ],
            [
              509.203125,
              69.94775390625
            ]
          ],
          "bbox": [
            509.203125,
            60.56982421875,
            525.9375,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the first example, there aren't enough elements; in the second, the element is the wrong type.</p>",
          "polygon": [
            [
              127.1513671875,
              88.70361328125
            ],
            [
              525.6033935546875,
              88.70361328125
            ],
            [
              525.6033935546875,
              110.99188232421875
            ],
            [
              127.1513671875,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.1513671875,
            88.70361328125,
            525.6033935546875,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The format operator is powerful, but it can be difficult to use. You can read more about it at <a href=\"http://docs.python.org/2/library/stdtypes.html#string-formatting\">http://docs.python.org/2/library/stdtypes.html#string-formatting</a>.</p>",
          "polygon": [
            [
              128.3466796875,
              120.65625
            ],
            [
              526.53515625,
              120.65625
            ],
            [
              526.53515625,
              143.39483642578125
            ],
            [
              128.3466796875,
              143.39483642578125
            ]
          ],
          "bbox": [
            128.3466796875,
            120.65625,
            526.53515625,
            143.39483642578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/155/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/156/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-156-0\"></span><b>14.4 Filenames and paths</b></h4>",
          "polygon": [
            [
              127.82373046875,
              172.94970703125
            ],
            [
              303.7198791503906,
              172.94970703125
            ],
            [
              303.7198791503906,
              187.2958984375
            ],
            [
              127.82373046875,
              187.2958984375
            ]
          ],
          "bbox": [
            127.82373046875,
            172.94970703125,
            303.7198791503906,
            187.2958984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Files are organized into <b>directories</b> (also called \"folders\"). Every running program has a \"current directory,\" which is the default directory for most operations. For example, when you open a file for reading, Python looks for it in the current directory.</p>",
          "polygon": [
            [
              129.392578125,
              199.353515625
            ],
            [
              525.6033935546875,
              199.353515625
            ],
            [
              525.6033935546875,
              234.09185791015625
            ],
            [
              129.392578125,
              234.09185791015625
            ]
          ],
          "bbox": [
            129.392578125,
            199.353515625,
            525.6033935546875,
            234.09185791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The os module provides functions for working with files and directories (\"os\" stands for \"operating system\"). os.getcwd returns the name of the current directory:</p>",
          "polygon": [
            [
              129.2431640625,
              243.6328125
            ],
            [
              525.6028442382812,
              243.6328125
            ],
            [
              525.6028442382812,
              266.49481201171875
            ],
            [
              129.2431640625,
              266.49481201171875
            ]
          ],
          "bbox": [
            129.2431640625,
            243.6328125,
            525.6028442382812,
            266.49481201171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; import os\n&gt;&gt;&gt; cwd = os.getcwd()\n&gt;&gt;&gt; print cwd\n/home/dinsdale</pre>",
          "polygon": [
            [
              128.72021484375,
              272.61962890625
            ],
            [
              239.43768310546875,
              272.61962890625
            ],
            [
              239.43768310546875,
              320.009765625
            ],
            [
              128.72021484375,
              320.009765625
            ]
          ],
          "bbox": [
            128.72021484375,
            272.61962890625,
            239.43768310546875,
            320.009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">cwd stands for \"current working directory.\" The result in this example is /home/dinsdale, which is the home directory of a user named dinsdale.</p>",
          "polygon": [
            [
              129.60000610351562,
              325.43963623046875
            ],
            [
              525.5996704101562,
              325.43963623046875
            ],
            [
              525.5996704101562,
              347.74578857421875
            ],
            [
              129.60000610351562,
              347.74578857421875
            ]
          ],
          "bbox": [
            129.60000610351562,
            325.43963623046875,
            525.5996704101562,
            347.74578857421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A string like cwd that identifies a file is called a <b>path</b>. A <b>relative path</b> starts from the current directory; an <b>absolute path</b> starts from the topmost directory in the file system.</p>",
          "polygon": [
            [
              128.6455078125,
              357.71484375
            ],
            [
              525.6044311523438,
              357.71484375
            ],
            [
              525.6044311523438,
              380.1488037109375
            ],
            [
              128.6455078125,
              380.1488037109375
            ]
          ],
          "bbox": [
            128.6455078125,
            357.71484375,
            525.6044311523438,
            380.1488037109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The paths we have seen so far are simple filenames, so they are relative to the current directory. To find the absolute path to a file, you can use os.path.abspath:</p>",
          "polygon": [
            [
              128.3466796875,
              389.619140625
            ],
            [
              525.603515625,
              389.619140625
            ],
            [
              525.603515625,
              412.55181884765625
            ],
            [
              128.3466796875,
              412.55181884765625
            ]
          ],
          "bbox": [
            128.3466796875,
            389.619140625,
            525.603515625,
            412.55181884765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; os.path.abspath('memo.txt')\n'/home/dinsdale/memo.txt'</pre>",
          "polygon": [
            [
              129.2431640625,
              418.6766662597656
            ],
            [
              291.7033996582031,
              418.6766662597656
            ],
            [
              291.7033996582031,
              440.833251953125
            ],
            [
              129.2431640625,
              440.833251953125
            ]
          ],
          "bbox": [
            129.2431640625,
            418.6766662597656,
            291.7033996582031,
            440.833251953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">os.path.exists checks whether a file or directory exists:</p>",
          "polygon": [
            [
              128.794921875,
              447.046875
            ],
            [
              381.2076110839844,
              447.046875
            ],
            [
              381.2076110839844,
              457.2198181152344
            ],
            [
              128.794921875,
              457.2198181152344
            ]
          ],
          "bbox": [
            128.794921875,
            447.046875,
            381.2076110839844,
            457.2198181152344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; os.path.exists('memo.txt')</pre>",
          "polygon": [
            [
              128.794921875,
              463.2890625
            ],
            [
              286.875,
              463.2890625
            ],
            [
              286.875,
              477.984375
            ],
            [
              128.794921875,
              477.984375
            ]
          ],
          "bbox": [
            128.794921875,
            463.2890625,
            286.875,
            477.984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">True</p>",
          "polygon": [
            [
              128.6455078125,
              475.5386657714844
            ],
            [
              152.103515625,
              475.5386657714844
            ],
            [
              152.103515625,
              486.4921875
            ],
            [
              128.6455078125,
              486.4921875
            ]
          ],
          "bbox": [
            128.6455078125,
            475.5386657714844,
            152.103515625,
            486.4921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If it exists, os.path.isdir checks whether it's a directory:</p>",
          "polygon": [
            [
              127.30078125,
              491.51953125
            ],
            [
              384.890625,
              491.51953125
            ],
            [
              384.890625,
              501.8878173828125
            ],
            [
              127.30078125,
              501.8878173828125
            ]
          ],
          "bbox": [
            127.30078125,
            491.51953125,
            384.890625,
            501.8878173828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Code/15",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; os.path.isdir('memo.txt')\nFalse\n&gt;&gt;&gt; os.path.isdir('music')\nTrue</pre>",
          "polygon": [
            [
              128.197265625,
              507.76171875
            ],
            [
              281.24542236328125,
              507.76171875
            ],
            [
              281.24542236328125,
              556.48828125
            ],
            [
              128.197265625,
              556.48828125
            ]
          ],
          "bbox": [
            128.197265625,
            507.76171875,
            281.24542236328125,
            556.48828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Similarly, os.path.isfile checks whether it's a file.</p>",
          "polygon": [
            [
              129.16845703125,
              560.8326721191406
            ],
            [
              359.490234375,
              560.8326721191406
            ],
            [
              359.490234375,
              570.94482421875
            ],
            [
              129.16845703125,
              570.94482421875
            ]
          ],
          "bbox": [
            129.16845703125,
            560.8326721191406,
            359.490234375,
            570.94482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">os.listdir returns a list of the files (and other directories) in the given directory:</p>",
          "polygon": [
            [
              128.3466796875,
              580.46484375
            ],
            [
              487.653564453125,
              580.46484375
            ],
            [
              487.653564453125,
              591.15283203125
            ],
            [
              128.3466796875,
              591.15283203125
            ]
          ],
          "bbox": [
            128.3466796875,
            580.46484375,
            487.653564453125,
            591.15283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Code/18",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; os.listdir(cwd)\n['music', 'photos', 'memo.txt']</pre>",
          "polygon": [
            [
              127.8984375,
              597.2776794433594
            ],
            [
              291.7034606933594,
              597.2776794433594
            ],
            [
              291.7034606933594,
              619.4342803955078
            ],
            [
              127.8984375,
              619.4342803955078
            ]
          ],
          "bbox": [
            127.8984375,
            597.2776794433594,
            291.7034606933594,
            619.4342803955078
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To demonstrate these functions, the following example \"walks\" through a directory, prints the names of all the files, and calls itself recursively on all the directories.</p>",
          "polygon": [
            [
              128.794921875,
              624.9375
            ],
            [
              525.638671875,
              624.9375
            ],
            [
              525.638671875,
              648.0158386230469
            ],
            [
              128.794921875,
              648.0158386230469
            ]
          ],
          "bbox": [
            128.794921875,
            624.9375,
            525.638671875,
            648.0158386230469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/156/Code/20",
          "block_type": "Code",
          "html": "<pre>def walk(dirname):\n    for name in os.listdir(dirname):\n        path = os.path.join(dirname, name)</pre>",
          "polygon": [
            [
              127.97314453125,
              653.94140625
            ],
            [
              349.2754211425781,
              653.94140625
            ],
            [
              349.2754211425781,
              688.4912872314453
            ],
            [
              127.97314453125,
              688.4912872314453
            ]
          ],
          "bbox": [
            127.97314453125,
            653.94140625,
            349.2754211425781,
            688.4912872314453
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "4": "/page/156/SectionHeader/3"
      },
      "images": null
    },
    {
      "id": "/page/157/Page/235",
      "block_type": "Page",
      "html": "<content-ref src='/page/157/PageHeader/0'></content-ref><content-ref src='/page/157/PageHeader/16'></content-ref><content-ref src='/page/157/Code/1'></content-ref><content-ref src='/page/157/Text/2'></content-ref><content-ref src='/page/157/Text/3'></content-ref><content-ref src='/page/157/SectionHeader/4'></content-ref><content-ref src='/page/157/Text/5'></content-ref><content-ref src='/page/157/Code/6'></content-ref><content-ref src='/page/157/Text/7'></content-ref><content-ref src='/page/157/Text/8'></content-ref><content-ref src='/page/157/Text/9'></content-ref><content-ref src='/page/157/Text/10'></content-ref><content-ref src='/page/157/Text/11'></content-ref><content-ref src='/page/157/Code/12'></content-ref><content-ref src='/page/157/Text/13'></content-ref><content-ref src='/page/157/Text/14'></content-ref><content-ref src='/page/157/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/157/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.2314453125
            ],
            [
              482.4034118652344,
              60.2314453125
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.2314453125,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/157/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.166015625,
              60.18310546875
            ],
            [
              102.6474609375,
              60.18310546875
            ],
            [
              102.6474609375,
              70.52783203125
            ],
            [
              85.166015625,
              70.52783203125
            ]
          ],
          "bbox": [
            85.166015625,
            60.18310546875,
            102.6474609375,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/157/Code/1",
          "block_type": "Code",
          "html": "<pre>if os.path.isfile(path):\n    print path\nelse:\n    walk(path)</pre>",
          "polygon": [
            [
              123.416015625,
              87.8818359375
            ],
            [
              253.77169799804688,
              87.8818359375
            ],
            [
              253.77169799804688,
              135.2313232421875
            ],
            [
              123.416015625,
              135.2313232421875
            ]
          ],
          "bbox": [
            123.416015625,
            87.8818359375,
            253.77169799804688,
            135.2313232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">os.path.join takes a directory and a file name and joins them into a complete path. <b>Exercise 14.1.</b> <i>The</i> os <i>module provides a function called</i> walk <i>that is similar to this one but more</i> <i>versatile. Read the documentation and use it to print the names of the files in a given directory and</i> <i>its subdirectories.</i></p>",
          "polygon": [
            [
              85.763671875,
              139.60546875
            ],
            [
              483.50390625,
              139.60546875
            ],
            [
              483.50390625,
              187.172119140625
            ],
            [
              85.763671875,
              187.172119140625
            ]
          ],
          "bbox": [
            85.763671875,
            139.60546875,
            483.50390625,
            187.172119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/walk.py\">http:</a> <a href=\"http://thinkpython.com/code/walk.py\">//</a> <a href=\"http://thinkpython.com/code/walk.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/walk.py\">com/</a> <a href=\"http://thinkpython.com/code/walk.py\">code/</a> <a href=\"http://thinkpython.com/code/walk.py\">walk.</a> <a href=\"http://thinkpython.com/code/walk.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.46484375,
              195.6796875
            ],
            [
              323.9296875,
              195.6796875
            ],
            [
              323.9296875,
              206.52410888671875
            ],
            [
              85.46484375,
              206.52410888671875
            ]
          ],
          "bbox": [
            85.46484375,
            195.6796875,
            323.9296875,
            206.52410888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "4": "/page/156/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/157/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-157-0\"></span><b>14.5 Catching exceptions</b></h2>",
          "polygon": [
            [
              85.39013671875,
              233.384765625
            ],
            [
              258.1875,
              233.384765625
            ],
            [
              258.1875,
              249.285888671875
            ],
            [
              85.39013671875,
              249.285888671875
            ]
          ],
          "bbox": [
            85.39013671875,
            233.384765625,
            258.1875,
            249.285888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A lot of things can go wrong when you try to read and write files. If you try to open a file that doesn't exist, you get an IOError:</p>",
          "polygon": [
            [
              85.763671875,
              258.328125
            ],
            [
              483.205078125,
              258.328125
            ],
            [
              483.205078125,
              283.0028076171875
            ],
            [
              85.763671875,
              283.0028076171875
            ]
          ],
          "bbox": [
            85.763671875,
            258.328125,
            483.205078125,
            283.0028076171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; fin = open('bad_file')\nIOError: [Errno 2] No such file or directory: 'bad_file'</pre>",
          "polygon": [
            [
              85.763671875,
              286.171875
            ],
            [
              379.2314147949219,
              286.171875
            ],
            [
              379.2314147949219,
              310.4282531738281
            ],
            [
              85.763671875,
              310.4282531738281
            ]
          ],
          "bbox": [
            85.763671875,
            286.171875,
            379.2314147949219,
            310.4282531738281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you don't have permission to access a file:</p>",
          "polygon": [
            [
              86.2119140625,
              313.435546875
            ],
            [
              284.3349609375,
              313.435546875
            ],
            [
              284.3349609375,
              325.9588317871094
            ],
            [
              86.2119140625,
              325.9588317871094
            ]
          ],
          "bbox": [
            86.2119140625,
            313.435546875,
            284.3349609375,
            325.9588317871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; fout = open('/etc/passwd', 'w') IOError: [Errno 13] Permission denied: '/etc/passwd' And if you try to open a directory for reading, you get</p>",
          "polygon": [
            [
              86.0625,
              328.130859375
            ],
            [
              358.3153991699219,
              328.130859375
            ],
            [
              358.3153991699219,
              368.91485595703125
            ],
            [
              86.0625,
              368.91485595703125
            ]
          ],
          "bbox": [
            86.0625,
            328.130859375,
            358.3153991699219,
            368.91485595703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; fin = open('/home') IOError: [Errno 21] Is a directory</p>",
          "polygon": [
            [
              85.46484375,
              370.08984375
            ],
            [
              264.2424011230469,
              370.08984375
            ],
            [
              264.2424011230469,
              396.3403015136719
            ],
            [
              85.46484375,
              396.3403015136719
            ]
          ],
          "bbox": [
            85.46484375,
            370.08984375,
            264.2424011230469,
            396.3403015136719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To avoid these errors, you could use functions like os.path.exists and os.path.isfile, but it would take a lot of time and code to check all the possibilities (if \"Errno 21\" is any indication, there are at least 21 things that can go wrong).</p>",
          "polygon": [
            [
              85.763671875,
              398.70703125
            ],
            [
              482.607421875,
              398.70703125
            ],
            [
              482.607421875,
              436.2598876953125
            ],
            [
              85.763671875,
              436.2598876953125
            ]
          ],
          "bbox": [
            85.763671875,
            398.70703125,
            482.607421875,
            436.2598876953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is better to go ahead and try—and deal with problems if they happen—which is exactly what the try statement does. The syntax is similar to an if statement:</p>",
          "polygon": [
            [
              85.6142578125,
              443.953125
            ],
            [
              482.40338134765625,
              443.953125
            ],
            [
              482.40338134765625,
              467.9296875
            ],
            [
              85.6142578125,
              467.9296875
            ]
          ],
          "bbox": [
            85.6142578125,
            443.953125,
            482.40338134765625,
            467.9296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Code/12",
          "block_type": "Code",
          "html": "<pre>try:\n    fin = open('bad_file')\n    for line in fin:\n        print line\n    fin.close()\nexcept:\n    print 'Something went wrong.'</pre>",
          "polygon": [
            [
              86.39998626708984,
              473.0747375488281
            ],
            [
              258.96136474609375,
              473.0747375488281
            ],
            [
              258.96136474609375,
              556.2033538818359
            ],
            [
              86.39998626708984,
              556.2033538818359
            ]
          ],
          "bbox": [
            86.39998626708984,
            473.0747375488281,
            258.96136474609375,
            556.2033538818359
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python starts by executing the try clause. If all goes well, it skips the except clause and proceeds. If an exception occurs, it jumps out of the try clause and executes the except clause.</p>",
          "polygon": [
            [
              85.9130859375,
              559.96875
            ],
            [
              482.90625,
              559.96875
            ],
            [
              482.90625,
              596.3203125
            ],
            [
              85.9130859375,
              596.3203125
            ]
          ],
          "bbox": [
            85.9130859375,
            559.96875,
            482.90625,
            596.3203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Handling an exception with a try statement is called <b>catching</b> an exception. In this example, the except clause prints an error message that is not very helpful. In general, catching an exception gives you a chance to fix the problem, or try again, or at least end the program gracefully.</p>",
          "polygon": [
            [
              85.9130859375,
              603.66796875
            ],
            [
              482.90625,
              603.66796875
            ],
            [
              482.90625,
              652.0579223632812
            ],
            [
              85.9130859375,
              652.0579223632812
            ]
          ],
          "bbox": [
            85.9130859375,
            603.66796875,
            482.90625,
            652.0579223632812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/157/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 14.2.</b> <i>Write a function called</i> sed <i>that takes as arguments a pattern string, a replacement</i> <i>string, and two filenames; it should read the first file and write the contents into the second file</i> <i>(creating it if necessary). If the pattern string appears anywhere in the file, it should be replaced</i> <i>with the replacement string.</i></p>",
          "polygon": [
            [
              85.763671875,
              652.39453125
            ],
            [
              482.607421875,
              652.39453125
            ],
            [
              482.607421875,
              700.6622314453125
            ],
            [
              85.763671875,
              700.6622314453125
            ]
          ],
          "bbox": [
            85.763671875,
            652.39453125,
            482.607421875,
            700.6622314453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "2": "/page/157/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/158/Page/203",
      "block_type": "Page",
      "html": "<content-ref src='/page/158/PageHeader/0'></content-ref><content-ref src='/page/158/PageHeader/21'></content-ref><content-ref src='/page/158/Text/1'></content-ref><content-ref src='/page/158/SectionHeader/2'></content-ref><content-ref src='/page/158/Text/3'></content-ref><content-ref src='/page/158/Text/4'></content-ref><content-ref src='/page/158/Text/5'></content-ref><content-ref src='/page/158/Code/6'></content-ref><content-ref src='/page/158/Text/7'></content-ref><content-ref src='/page/158/TextInlineMath/8'></content-ref><content-ref src='/page/158/Text/9'></content-ref><content-ref src='/page/158/Code/10'></content-ref><content-ref src='/page/158/Text/11'></content-ref><content-ref src='/page/158/Code/12'></content-ref><content-ref src='/page/158/Text/13'></content-ref><content-ref src='/page/158/Text/14'></content-ref><content-ref src='/page/158/Text/15'></content-ref><content-ref src='/page/158/Code/200'></content-ref><content-ref src='/page/158/SectionHeader/17'></content-ref><content-ref src='/page/158/Text/18'></content-ref><content-ref src='/page/158/Text/19'></content-ref><content-ref src='/page/158/Text/20'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/158/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.12255859375,
              61.05322265625
            ],
            [
              525.6033935546875,
              61.05322265625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.12255859375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.12255859375,
            61.05322265625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/158/PageHeader/21",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.76318359375
            ],
            [
              525.33984375,
              60.76318359375
            ],
            [
              525.33984375,
              70.43115234375
            ],
            [
              509.80078125,
              70.43115234375
            ]
          ],
          "bbox": [
            509.80078125,
            60.76318359375,
            525.33984375,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If an error occurs while opening, reading, writing or closing files, your program should catch the</i> <i>exception, print an error message, and exit. Solution:</i> <a href=\"http://thinkpython.com/code/sed.py\">http:</a> <a href=\"http://thinkpython.com/code/sed.py\">//</a> <a href=\"http://thinkpython.com/code/sed.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/sed.py\">com/</a> <a href=\"http://thinkpython.com/code/sed.py\">code/</a> <a href=\"http://thinkpython.com/code/sed.py\">sed.</a> <a href=\"http://thinkpython.com/code/sed.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              127.7490234375,
              88.51025390625
            ],
            [
              525.6034545898438,
              88.51025390625
            ],
            [
              525.6034545898438,
              123.01416015625
            ],
            [
              127.7490234375,
              123.01416015625
            ]
          ],
          "bbox": [
            127.7490234375,
            88.51025390625,
            525.6034545898438,
            123.01416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/158/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-158-0\"></span><b>14.6 Databases</b></h4>",
          "polygon": [
            [
              128.27197265625,
              155.07421875
            ],
            [
              235.97708129882812,
              155.07421875
            ],
            [
              235.97708129882812,
              169.46295166015625
            ],
            [
              128.27197265625,
              169.46295166015625
            ]
          ],
          "bbox": [
            128.27197265625,
            155.07421875,
            235.97708129882812,
            169.46295166015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>database</b> is a file that is organized for storing data. Most databases are organized like a dictionary in the sense that they map from keys to values. The biggest difference is that the database is on disk (or other permanent storage), so it persists after the program ends.</p>",
          "polygon": [
            [
              128.6455078125,
              182.6279296875
            ],
            [
              525.9375,
              182.6279296875
            ],
            [
              525.9375,
              217.36688232421875
            ],
            [
              128.6455078125,
              217.36688232421875
            ]
          ],
          "bbox": [
            128.6455078125,
            182.6279296875,
            525.9375,
            217.36688232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The module anydbm provides an interface for creating and updating database files. As an example, I'll create a database that contains captions for image files.</p>",
          "polygon": [
            [
              128.794921875,
              227.77734375
            ],
            [
              525.604736328125,
              227.77734375
            ],
            [
              525.604736328125,
              250.56182861328125
            ],
            [
              128.794921875,
              250.56182861328125
            ]
          ],
          "bbox": [
            128.794921875,
            227.77734375,
            525.604736328125,
            250.56182861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Opening a database is similar to opening other files:</p>",
          "polygon": [
            [
              127.8984375,
              260.6484375
            ],
            [
              358.2017822265625,
              260.6484375
            ],
            [
              358.2017822265625,
              271.56182861328125
            ],
            [
              127.8984375,
              271.56182861328125
            ]
          ],
          "bbox": [
            127.8984375,
            260.6484375,
            358.2017822265625,
            271.56182861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; import anydbm\n&gt;&gt;&gt; db = anydbm.open('captions.db', 'c')</pre>",
          "polygon": [
            [
              129.5419921875,
              278.4786376953125
            ],
            [
              339.46875,
              278.4786376953125
            ],
            [
              339.46875,
              300.6352233886719
            ],
            [
              129.5419921875,
              300.6352233886719
            ]
          ],
          "bbox": [
            129.5419921875,
            278.4786376953125,
            339.46875,
            300.6352233886719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The mode 'c' means that the database should be created if it doesn't already exist. The result is a database object that can be used (for most operations) like a dictionary. If you create a new item, anydbm updates the database file.</p>",
          "polygon": [
            [
              129.392578125,
              307.0546875
            ],
            [
              525.638671875,
              307.0546875
            ],
            [
              525.638671875,
              342.2017822265625
            ],
            [
              129.392578125,
              342.2017822265625
            ]
          ],
          "bbox": [
            129.392578125,
            307.0546875,
            525.638671875,
            342.2017822265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">&gt;&gt;&gt; db['cleese.png'] = 'Photo of John Cleese.'</p>",
          "polygon": [
            [
              128.86962890625,
              348.8203125
            ],
            [
              370.14044189453125,
              348.8203125
            ],
            [
              370.14044189453125,
              359.0812072753906
            ],
            [
              128.86962890625,
              359.0812072753906
            ]
          ],
          "bbox": [
            128.86962890625,
            348.8203125,
            370.14044189453125,
            359.0812072753906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you access one of the items, anydbm reads the file:</p>",
          "polygon": [
            [
              128.27197265625,
              366.029296875
            ],
            [
              376.224609375,
              366.029296875
            ],
            [
              376.224609375,
              376.259765625
            ],
            [
              128.27197265625,
              376.259765625
            ]
          ],
          "bbox": [
            128.27197265625,
            366.029296875,
            376.224609375,
            376.259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print db['cleese.png']\nPhoto of John Cleese.</pre>",
          "polygon": [
            [
              127.599609375,
              383.17559814453125
            ],
            [
              265.5584411621094,
              383.17559814453125
            ],
            [
              265.5584411621094,
              405.3321838378906
            ],
            [
              127.599609375,
              405.3321838378906
            ]
          ],
          "bbox": [
            127.599609375,
            383.17559814453125,
            265.5584411621094,
            405.3321838378906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you make another assignment to an existing key, anydbm replaces the old value:</p>",
          "polygon": [
            [
              128.49609375,
              412.3985900878906
            ],
            [
              487.41802978515625,
              412.3985900878906
            ],
            [
              487.41802978515625,
              422.5107421875
            ],
            [
              128.49609375,
              422.5107421875
            ]
          ],
          "bbox": [
            128.49609375,
            412.3985900878906,
            487.41802978515625,
            422.5107421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; db['cleese.png'] = 'Photo of John Cleese doing a silly walk.'\n&gt;&gt;&gt; print db['cleese.png']\nPhoto of John Cleese doing a silly walk.</pre>",
          "polygon": [
            [
              129.60009765625,
              428.484375
            ],
            [
              469.4934997558594,
              428.484375
            ],
            [
              469.4934997558594,
              464.0625
            ],
            [
              129.60009765625,
              464.0625
            ]
          ],
          "bbox": [
            129.60009765625,
            428.484375,
            469.4934997558594,
            464.0625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Many dictionary methods, like keys and items, also work with database objects. So does iteration with a for statement.</p>",
          "polygon": [
            [
              128.49609375,
              470.8445739746094
            ],
            [
              525.599853515625,
              470.8445739746094
            ],
            [
              525.599853515625,
              493.1507263183594
            ],
            [
              128.49609375,
              493.1507263183594
            ]
          ],
          "bbox": [
            128.49609375,
            470.8445739746094,
            525.599853515625,
            493.1507263183594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">for key in db: print key</p>",
          "polygon": [
            [
              127.30078125,
              500.06756591796875
            ],
            [
              202.82525634765625,
              500.06756591796875
            ],
            [
              202.82525634765625,
              522.2241516113281
            ],
            [
              127.30078125,
              522.2241516113281
            ]
          ],
          "bbox": [
            127.30078125,
            500.06756591796875,
            202.82525634765625,
            522.2241516113281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As with other files, you should close the database when you are done:</p>",
          "polygon": [
            [
              129.2431640625,
              529.03125
            ],
            [
              437.484375,
              529.03125
            ],
            [
              437.484375,
              539.4027252197266
            ],
            [
              129.2431640625,
              539.4027252197266
            ]
          ],
          "bbox": [
            129.2431640625,
            529.03125,
            437.484375,
            539.4027252197266
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/Code/200",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; db.close()</pre>",
          "polygon": [
            [
              129.6001434326172,
              546.3185729980469
            ],
            [
              202.82525634765625,
              546.3185729980469
            ],
            [
              202.82525634765625,
              556.2811737060547
            ],
            [
              129.6001434326172,
              556.2811737060547
            ]
          ],
          "bbox": [
            129.6001434326172,
            546.3185729980469,
            202.82525634765625,
            556.2811737060547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/158/SectionHeader/17",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-158-1\"></span><b>14.7 Pickling</b></h4>",
          "polygon": [
            [
              127.8984375,
              584.33203125
            ],
            [
              224.02682495117188,
              584.33203125
            ],
            [
              224.02682495117188,
              598.7357788085938
            ],
            [
              127.8984375,
              598.7357788085938
            ]
          ],
          "bbox": [
            127.8984375,
            584.33203125,
            224.02682495117188,
            598.7357788085938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A limitation of anydbm is that the keys and values have to be strings. If you try to use any other type, you get an error.</p>",
          "polygon": [
            [
              128.197265625,
              612.1395721435547
            ],
            [
              525.638671875,
              612.1395721435547
            ],
            [
              525.638671875,
              634.4457244873047
            ],
            [
              128.197265625,
              634.4457244873047
            ]
          ],
          "bbox": [
            128.197265625,
            612.1395721435547,
            525.638671875,
            634.4457244873047
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The pickle module can help. It translates almost any type of object into a string suitable for storage in a database, and then translates strings back into objects.</p>",
          "polygon": [
            [
              128.49609375,
              645.3345642089844
            ],
            [
              525.9375,
              645.3345642089844
            ],
            [
              525.9375,
              667.6407241821289
            ],
            [
              128.49609375,
              667.6407241821289
            ]
          ],
          "bbox": [
            128.49609375,
            645.3345642089844,
            525.9375,
            667.6407241821289
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/158/Text/20",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">pickle.dumps takes an object as a parameter and returns a string representation (dumps is short for \"dump string\"):</p>",
          "polygon": [
            [
              128.0478515625,
              678.528564453125
            ],
            [
              525.600341796875,
              678.528564453125
            ],
            [
              525.600341796875,
              700.8347244262695
            ],
            [
              128.0478515625,
              700.8347244262695
            ]
          ],
          "bbox": [
            128.0478515625,
            678.528564453125,
            525.600341796875,
            700.8347244262695
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "2": "/page/157/SectionHeader/4",
        "4": "/page/158/SectionHeader/17"
      },
      "images": null
    },
    {
      "id": "/page/159/Page/266",
      "block_type": "Page",
      "html": "<content-ref src='/page/159/PageHeader/0'></content-ref><content-ref src='/page/159/PageHeader/17'></content-ref><content-ref src='/page/159/Code/1'></content-ref><content-ref src='/page/159/Text/2'></content-ref><content-ref src='/page/159/Code/3'></content-ref><content-ref src='/page/159/Text/4'></content-ref><content-ref src='/page/159/Code/5'></content-ref><content-ref src='/page/159/Text/6'></content-ref><content-ref src='/page/159/Text/7'></content-ref><content-ref src='/page/159/Text/8'></content-ref><content-ref src='/page/159/Text/9'></content-ref><content-ref src='/page/159/SectionHeader/10'></content-ref><content-ref src='/page/159/Text/11'></content-ref><content-ref src='/page/159/Text/12'></content-ref><content-ref src='/page/159/Text/13'></content-ref><content-ref src='/page/159/Code/14'></content-ref><content-ref src='/page/159/Text/15'></content-ref><content-ref src='/page/159/Footnote/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/159/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.18310546875
            ],
            [
              482.4034118652344,
              60.18310546875
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.18310546875,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.08642578125
            ],
            [
              102.19921875,
              60.08642578125
            ],
            [
              102.19921875,
              69.94775390625
            ],
            [
              85.763671875,
              69.94775390625
            ]
          ],
          "bbox": [
            85.763671875,
            60.08642578125,
            102.19921875,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; import pickle\n&gt;&gt;&gt; t = [1, 2, 3]\n&gt;&gt;&gt; pickle.dumps(t)\n'(lp0\\nI1\\naI2\\naI3\\na.'</pre>",
          "polygon": [
            [
              86.13720703125,
              88.68572998046875
            ],
            [
              211.90036010742188,
              88.68572998046875
            ],
            [
              211.90036010742188,
              135.2313232421875
            ],
            [
              86.13720703125,
              135.2313232421875
            ]
          ],
          "bbox": [
            86.13720703125,
            88.68572998046875,
            211.90036010742188,
            135.2313232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The format isn't obvious to human readers; it is meant to be easy for pickle to interpret. pickle.loads (\"load string\") reconstitutes the object:</p>",
          "polygon": [
            [
              85.6142578125,
              139.025390625
            ],
            [
              482.3997497558594,
              139.025390625
            ],
            [
              482.3997497558594,
              162.866943359375
            ],
            [
              85.6142578125,
              162.866943359375
            ]
          ],
          "bbox": [
            85.6142578125,
            139.025390625,
            482.3997497558594,
            162.866943359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t1 = [1, 2, 3]\n&gt;&gt;&gt; s = pickle.dumps(t1)\n&gt;&gt;&gt; t2 = pickle.loads(s)\n&gt;&gt;&gt; print t2\n[1, 2, 3]</pre>",
          "polygon": [
            [
              85.3154296875,
              167.7392578125
            ],
            [
              211.93870544433594,
              167.7392578125
            ],
            [
              211.93870544433594,
              227.390625
            ],
            [
              85.3154296875,
              227.390625
            ]
          ],
          "bbox": [
            85.3154296875,
            167.7392578125,
            211.93870544433594,
            227.390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although the new object has the same value as the old, it is not (in general) the same object:</p>",
          "polygon": [
            [
              86.2119140625,
              231.451171875
            ],
            [
              482.4033203125,
              231.451171875
            ],
            [
              482.4033203125,
              242.2269287109375
            ],
            [
              86.2119140625,
              242.2269287109375
            ]
          ],
          "bbox": [
            86.2119140625,
            231.451171875,
            482.4033203125,
            242.2269287109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t1 == t2\nTrue\n&gt;&gt;&gt; t1 is t2\nFalse</pre>",
          "polygon": [
            [
              84.94189453125,
              247.306640625
            ],
            [
              152.77587890625,
              247.306640625
            ],
            [
              152.77587890625,
              293.95233154296875
            ],
            [
              84.94189453125,
              293.95233154296875
            ]
          ],
          "bbox": [
            84.94189453125,
            247.306640625,
            152.77587890625,
            293.95233154296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In other words, pickling and then unpickling has the same effect as copying the object.</p>",
          "polygon": [
            [
              86.0625,
              298.546875
            ],
            [
              466.3138122558594,
              298.546875
            ],
            [
              466.3138122558594,
              309.3929138183594
            ],
            [
              86.0625,
              309.3929138183594
            ]
          ],
          "bbox": [
            86.0625,
            298.546875,
            466.3138122558594,
            309.3929138183594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can use pickle to store non-strings in a database. In fact, this combination is so common that it has been encapsulated in a module called shelve.</p>",
          "polygon": [
            [
              85.46484375,
              317.49609375
            ],
            [
              482.4024658203125,
              317.49609375
            ],
            [
              482.4024658203125,
              340.84991455078125
            ],
            [
              85.46484375,
              340.84991455078125
            ]
          ],
          "bbox": [
            85.46484375,
            317.49609375,
            482.4024658203125,
            340.84991455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 14.3.</b> <i>If you download my solution to Exercise </i><i><a href=\"#page-142-2\">12.4</a></i><i> from</i> <a href=\"http://thinkpython.com/code/anagram_sets.py\">http:</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">//</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">com/</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">code/</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">anagram_</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">sets.</a> <a href=\"http://thinkpython.com/code/anagram_sets.py\">py</a> <i>, you'll see that it creates a dictionary that maps from a sorted string of</i> <i>letters to the list of words that can be spelled with those letters. For example,</i> 'opst' <i>maps to the</i> <i>list</i> ['opts', 'post', 'pots', 'spot', 'stop', 'tops']<i>.</i></p>",
          "polygon": [
            [
              85.9130859375,
              342.82891845703125
            ],
            [
              482.90625,
              342.82891845703125
            ],
            [
              482.90625,
              389.4783630371094
            ],
            [
              85.9130859375,
              389.4783630371094
            ]
          ],
          "bbox": [
            85.9130859375,
            342.82891845703125,
            482.90625,
            389.4783630371094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a module that imports</i> anagram_sets <i>and provides two new functions:</i> store_anagrams <i>should store the anagram dictionary in a \"shelf;\"</i> read_anagrams <i>should look up a word and return</i> <i>a list of its anagrams. Solution:</i> <a href=\"http://thinkpython.com/code/anagram_db.py\">http:</a> <a href=\"http://thinkpython.com/code/anagram_db.py\">//</a> <a href=\"http://thinkpython.com/code/anagram_db.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/anagram_db.py\">com/</a> <a href=\"http://thinkpython.com/code/anagram_db.py\">code/</a> <a href=\"http://thinkpython.com/code/anagram_db.py\">anagram_</a> <a href=\"http://thinkpython.com/code/anagram_db.py\">db.</a> <a href=\"http://thinkpython.com/code/anagram_db.py\">py</a></p>",
          "polygon": [
            [
              85.6142578125,
              398.3203125
            ],
            [
              482.4270324707031,
              398.3203125
            ],
            [
              482.4270324707031,
              433.125
            ],
            [
              85.6142578125,
              433.125
            ]
          ],
          "bbox": [
            85.6142578125,
            398.3203125,
            482.4270324707031,
            433.125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "4": "/page/158/SectionHeader/17"
          },
          "images": {}
        },
        {
          "id": "/page/159/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-159-0\"></span><b>14.8 Pipes</b></h3>",
          "polygon": [
            [
              85.68896484375,
              460.1953125
            ],
            [
              162.5625,
              460.1953125
            ],
            [
              162.5625,
              475.7430114746094
            ],
            [
              85.68896484375,
              475.7430114746094
            ]
          ],
          "bbox": [
            85.68896484375,
            460.1953125,
            162.5625,
            475.7430114746094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most operating systems provide a command-line interface, also known as a <b>shell</b>. Shells usually provide commands to navigate the file system and launch applications. For example, in Unix you can change directories with cd, display the contents of a directory with ls, and launch a web browser by typing (for example) firefox.</p>",
          "polygon": [
            [
              85.763671875,
              486.4921875
            ],
            [
              482.4032287597656,
              486.4921875
            ],
            [
              482.4032287597656,
              533.7599487304688
            ],
            [
              85.763671875,
              533.7599487304688
            ]
          ],
          "bbox": [
            85.763671875,
            486.4921875,
            482.4032287597656,
            533.7599487304688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Any program that you can launch from the shell can also be launched from Python using a <b>pipe</b>. A pipe is an object that represents a running program.</p>",
          "polygon": [
            [
              85.6142578125,
              542.1796875
            ],
            [
              482.4032897949219,
              542.1796875
            ],
            [
              482.4032897949219,
              565.3828125
            ],
            [
              85.6142578125,
              565.3828125
            ]
          ],
          "bbox": [
            85.6142578125,
            542.1796875,
            482.4032897949219,
            565.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, the Unix command ls -l normally displays the contents of the current directory (in long format). You can launch ls with os.popen<a href=\"#page-159-1\">1</a> :</p>",
          "polygon": [
            [
              85.763671875,
              573.50390625
            ],
            [
              482.90625,
              573.50390625
            ],
            [
              482.90625,
              596.6749572753906
            ],
            [
              85.763671875,
              596.6749572753906
            ]
          ],
          "bbox": [
            85.763671875,
            573.50390625,
            482.90625,
            596.6749572753906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/159/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; cmd = 'ls -l'\n&gt;&gt;&gt; fp = os.popen(cmd)</pre>",
          "polygon": [
            [
              86.13720703125,
              600.9609375
            ],
            [
              201.4779510498047,
              600.9609375
            ],
            [
              201.4779510498047,
              624.0114135742188
            ],
            [
              86.13720703125,
              624.0114135742188
            ]
          ],
          "bbox": [
            86.13720703125,
            600.9609375,
            201.4779510498047,
            624.0114135742188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/159/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The argument is a string that contains a shell command. The return value is an object that behaves just like an open file. You can read the output from the ls process one line at a time with readline or get the whole thing at once with read:</p>",
          "polygon": [
            [
              86.0625,
              628.41796875
            ],
            [
              482.90625,
              628.41796875
            ],
            [
              482.90625,
              663.8409729003906
            ],
            [
              86.0625,
              663.8409729003906
            ]
          ],
          "bbox": [
            86.0625,
            628.41796875,
            482.90625,
            663.8409729003906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/159/Footnote/16",
          "block_type": "Footnote",
          "html": "<p><span id=\"page-159-1\"></span><sup>1</sup>popen is deprecated now, which means we are supposed to stop using it and start using the subprocess module. But for simple cases, I find subprocess more complicated than necessary. So I am going to keep using popen until they take it away.</p>",
          "polygon": [
            [
              86.361328125,
              671.9081573486328
            ],
            [
              482.607421875,
              671.9081573486328
            ],
            [
              482.607421875,
              700.734375
            ],
            [
              86.361328125,
              700.734375
            ]
          ],
          "bbox": [
            86.361328125,
            671.9081573486328,
            482.607421875,
            700.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "2": "/page/157/SectionHeader/4",
        "3": "/page/159/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/160/Page/210",
      "block_type": "Page",
      "html": "<content-ref src='/page/160/PageHeader/0'></content-ref><content-ref src='/page/160/PageHeader/17'></content-ref><content-ref src='/page/160/Text/1'></content-ref><content-ref src='/page/160/Text/2'></content-ref><content-ref src='/page/160/Code/3'></content-ref><content-ref src='/page/160/Text/4'></content-ref><content-ref src='/page/160/Text/5'></content-ref><content-ref src='/page/160/Text/6'></content-ref><content-ref src='/page/160/Code/7'></content-ref><content-ref src='/page/160/Text/8'></content-ref><content-ref src='/page/160/ListGroup/208'></content-ref><content-ref src='/page/160/Text/12'></content-ref><content-ref src='/page/160/SectionHeader/13'></content-ref><content-ref src='/page/160/Text/14'></content-ref><content-ref src='/page/160/Code/15'></content-ref><content-ref src='/page/160/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/160/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.01904296875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.01904296875,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.01904296875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              61.1015625
            ],
            [
              525.9375,
              61.1015625
            ],
            [
              525.9375,
              70.3828125
            ],
            [
              509.80078125,
              70.3828125
            ]
          ],
          "bbox": [
            509.80078125,
            61.1015625,
            525.9375,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; res = fp.read()</p>",
          "polygon": [
            [
              127.7490234375,
              88.68572998046875
            ],
            [
              249.9697265625,
              88.68572998046875
            ],
            [
              249.9697265625,
              100.2568359375
            ],
            [
              127.7490234375,
              100.2568359375
            ]
          ],
          "bbox": [
            127.7490234375,
            88.68572998046875,
            249.9697265625,
            100.2568359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you are done, you close the pipe like a file:</p>",
          "polygon": [
            [
              127.7490234375,
              103.833984375
            ],
            [
              345.4097900390625,
              103.833984375
            ],
            [
              345.4097900390625,
              114.04888916015625
            ],
            [
              127.7490234375,
              114.04888916015625
            ]
          ],
          "bbox": [
            127.7490234375,
            103.833984375,
            345.4097900390625,
            114.04888916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; stat = fp.close()\n&gt;&gt;&gt; print stat\nNone</pre>",
          "polygon": [
            [
              128.197265625,
              119.188720703125
            ],
            [
              239.43765258789062,
              119.188720703125
            ],
            [
              239.43765258789062,
              156.041015625
            ],
            [
              128.197265625,
              156.041015625
            ]
          ],
          "bbox": [
            128.197265625,
            119.188720703125,
            239.43765258789062,
            156.041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value is the final status of the ls process; None means that it ended normally (with no errors).</p>",
          "polygon": [
            [
              129.09375,
              158.8287353515625
            ],
            [
              525.595947265625,
              158.8287353515625
            ],
            [
              525.595947265625,
              181.13494873046875
            ],
            [
              129.09375,
              181.13494873046875
            ]
          ],
          "bbox": [
            129.09375,
            158.8287353515625,
            525.595947265625,
            181.13494873046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, most Unix systems provide a command called md5sum that reads the contents of a file and computes a \"checksum.\" You can read about MD5 at <a href=\"http://en.wikipedia.org/wiki/Md5\">http://en.wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Md5\">org/wiki/Md5</a>. This command provides an efficient way to check whether two files have the same contents. The probability that different contents yield the same checksum is very small (that is, unlikely to happen before the universe collapses).</p>",
          "polygon": [
            [
              128.794921875,
              189.9755859375
            ],
            [
              525.638671875,
              189.9755859375
            ],
            [
              525.638671875,
              249.13494873046875
            ],
            [
              128.794921875,
              249.13494873046875
            ]
          ],
          "bbox": [
            128.794921875,
            189.9755859375,
            525.638671875,
            249.13494873046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can use a pipe to run md5sum from Python and get the result:</p>",
          "polygon": [
            [
              128.794921875,
              258.24578857421875
            ],
            [
              414.5018005371094,
              258.24578857421875
            ],
            [
              414.5018005371094,
              268.35797119140625
            ],
            [
              128.794921875,
              268.35797119140625
            ]
          ],
          "bbox": [
            128.794921875,
            258.24578857421875,
            414.5018005371094,
            268.35797119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; filename = 'book.tex'\n&gt;&gt;&gt; cmd = 'md5sum ' + filename\n&gt;&gt;&gt; fp = os.popen(cmd)\n&gt;&gt;&gt; res = fp.read()\n&gt;&gt;&gt; stat = fp.close()\n&gt;&gt;&gt; print res\n1e0033f0ed0656636de0d75144ba32e0 book.tex\n&gt;&gt;&gt; print stat\nNone</pre>",
          "polygon": [
            [
              128.72021484375,
              273.497802734375
            ],
            [
              350.82421875,
              273.497802734375
            ],
            [
              350.82421875,
              382.658203125
            ],
            [
              128.72021484375,
              382.658203125
            ]
          ],
          "bbox": [
            128.72021484375,
            273.497802734375,
            350.82421875,
            382.658203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-160-0\"></span><b>Exercise 14.4.</b> <i>In a large collection of MP3 files, there may be more than one copy of the same song,</i> <i>stored in different directories or with different file names. The goal of this exercise is to search for</i> <i>duplicates.</i></p>",
          "polygon": [
            [
              128.49609375,
              383.22369384765625
            ],
            [
              525.6034545898438,
              383.22369384765625
            ],
            [
              525.6034545898438,
              417.57427978515625
            ],
            [
              128.49609375,
              417.57427978515625
            ]
          ],
          "bbox": [
            128.49609375,
            383.22369384765625,
            525.6034545898438,
            417.57427978515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/ListGroup/208",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/160/ListItem/9'></content-ref><content-ref src='/page/160/ListItem/10'></content-ref><content-ref src='/page/160/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              140.0009765625,
              428.87109375
            ],
            [
              525.603271484375,
              428.87109375
            ],
            [
              525.603271484375,
              514.6114196777344
            ],
            [
              140.0009765625,
              514.6114196777344
            ]
          ],
          "bbox": [
            140.0009765625,
            428.87109375,
            525.603271484375,
            514.6114196777344
          ],
          "children": [
            {
              "id": "/page/160/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write a program that searches a directory and all of its subdirectories, recursively, and returns</i> <i>a list of complete paths for all files with a given suffix (like</i> .mp3<i>). Hint:</i> os.path <i>provides</i> <i>several useful functions for manipulating file and path names.</i></li>",
              "polygon": [
                [
                  140.0009765625,
                  428.87109375
                ],
                [
                  525.603271484375,
                  428.87109375
                ],
                [
                  525.603271484375,
                  463.624267578125
                ],
                [
                  140.0009765625,
                  463.624267578125
                ]
              ],
              "bbox": [
                140.0009765625,
                428.87109375,
                525.603271484375,
                463.624267578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/159/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/160/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. To recognize duplicates, you can use</i> md5sum <i>to compute a \"checksum\" for each files. If two</i> <i>files have the same checksum, they probably have the same contents.</i></li>",
              "polygon": [
                [
                  140.748046875,
                  472.18359375
                ],
                [
                  525.5972290039062,
                  472.18359375
                ],
                [
                  525.5972290039062,
                  495.2032775878906
                ],
                [
                  140.748046875,
                  495.2032775878906
                ]
              ],
              "bbox": [
                140.748046875,
                472.18359375,
                525.5972290039062,
                495.2032775878906
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/159/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/160/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. To double-check, you can use the Unix command</i> diff<i>.</i></li>",
              "polygon": [
                [
                  140.5986328125,
                  504.28125
                ],
                [
                  375.03265380859375,
                  504.28125
                ],
                [
                  375.03265380859375,
                  514.6114196777344
                ],
                [
                  140.5986328125,
                  514.6114196777344
                ]
              ],
              "bbox": [
                140.5986328125,
                504.28125,
                375.03265380859375,
                514.6114196777344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/159/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": null
        },
        {
          "id": "/page/160/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/find_duplicates.py\">http:</a> <a href=\"http://thinkpython.com/code/find_duplicates.py\">//</a> <a href=\"http://thinkpython.com/code/find_duplicates.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/find_duplicates.py\">com/</a> <a href=\"http://thinkpython.com/code/find_duplicates.py\">code/</a> <a href=\"http://thinkpython.com/code/find_duplicates.py\">find_</a> <a href=\"http://thinkpython.com/code/find_duplicates.py\">duplicates.</a> <a href=\"http://thinkpython.com/code/find_duplicates.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              127.4501953125,
              526.2059936523438
            ],
            [
              426.3626708984375,
              526.2059936523438
            ],
            [
              426.3626708984375,
              536.2492980957031
            ],
            [
              127.4501953125,
              536.2492980957031
            ]
          ],
          "bbox": [
            127.4501953125,
            526.2059936523438,
            426.3626708984375,
            536.2492980957031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/160/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-160-1\"></span><b>14.9 Writing modules</b></h4>",
          "polygon": [
            [
              127.1513671875,
              564.4838562011719
            ],
            [
              279.5537109375,
              564.4838562011719
            ],
            [
              279.5537109375,
              578.8300476074219
            ],
            [
              127.1513671875,
              578.8300476074219
            ]
          ],
          "bbox": [
            127.1513671875,
            564.4838562011719,
            279.5537109375,
            578.8300476074219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Any file that contains Python code can be imported as a module. For example, suppose you have a file named wc.py with the following code:</p>",
          "polygon": [
            [
              127.599609375,
              590.1328125
            ],
            [
              525.638671875,
              590.1328125
            ],
            [
              525.638671875,
              612.5625
            ],
            [
              127.599609375,
              612.5625
            ]
          ],
          "bbox": [
            127.599609375,
            590.1328125,
            525.638671875,
            612.5625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/160/Code/15",
          "block_type": "Code",
          "html": "<pre>def linecount(filename):\n    count = 0\n    for line in open(filename):\n        count += 1\n    return count</pre>",
          "polygon": [
            [
              129.5999298095703,
              617.5568542480469
            ],
            [
              291.7457275390625,
              617.5568542480469
            ],
            [
              291.7457275390625,
              687.19921875
            ],
            [
              129.5999298095703,
              687.19921875
            ]
          ],
          "bbox": [
            129.5999298095703,
            617.5568542480469,
            291.7457275390625,
            687.19921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/160/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">print linecount('wc.py')</p>",
          "polygon": [
            [
              128.12255859375,
              690.7228546142578
            ],
            [
              255.1002960205078,
              690.7228546142578
            ],
            [
              255.1002960205078,
              701.5078125
            ],
            [
              128.12255859375,
              701.5078125
            ]
          ],
          "bbox": [
            128.12255859375,
            690.7228546142578,
            255.1002960205078,
            701.5078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "2": "/page/157/SectionHeader/4",
        "3": "/page/159/SectionHeader/10",
        "4": "/page/160/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/161/Page/184",
      "block_type": "Page",
      "html": "<content-ref src='/page/161/PageHeader/0'></content-ref><content-ref src='/page/161/PageHeader/20'></content-ref><content-ref src='/page/161/Text/1'></content-ref><content-ref src='/page/161/Code/2'></content-ref><content-ref src='/page/161/Text/3'></content-ref><content-ref src='/page/161/Code/4'></content-ref><content-ref src='/page/161/Text/5'></content-ref><content-ref src='/page/161/Code/6'></content-ref><content-ref src='/page/161/Text/7'></content-ref><content-ref src='/page/161/Text/8'></content-ref><content-ref src='/page/161/Text/9'></content-ref><content-ref src='/page/161/Code/10'></content-ref><content-ref src='/page/161/Text/11'></content-ref><content-ref src='/page/161/Text/12'></content-ref><content-ref src='/page/161/Text/13'></content-ref><content-ref src='/page/161/Text/14'></content-ref><content-ref src='/page/161/SectionHeader/15'></content-ref><content-ref src='/page/161/Text/16'></content-ref><content-ref src='/page/161/Code/17'></content-ref><content-ref src='/page/161/Text/18'></content-ref><content-ref src='/page/161/Code/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/161/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.47314453125
            ],
            [
              482.4034118652344,
              60.47314453125
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.47314453125,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.328125
            ],
            [
              102.796875,
              60.328125
            ],
            [
              102.796875,
              70.189453125
            ],
            [
              85.763671875,
              70.189453125
            ]
          ],
          "bbox": [
            85.763671875,
            60.328125,
            102.796875,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you run this program, it reads itself and prints the number of lines in the file, which is 7. You can also import it like this:</p>",
          "polygon": [
            [
              85.763671875,
              87.93017578125
            ],
            [
              482.90625,
              87.93017578125
            ],
            [
              482.90625,
              110.99188232421875
            ],
            [
              85.763671875,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.763671875,
            87.93017578125,
            482.90625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Code/2",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; import wc\n7</pre>",
          "polygon": [
            [
              85.46484375,
              115.62890625
            ],
            [
              187.8134765625,
              115.62890625
            ],
            [
              187.8134765625,
              143.279296875
            ],
            [
              85.46484375,
              143.279296875
            ]
          ],
          "bbox": [
            85.46484375,
            115.62890625,
            187.8134765625,
            143.279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now you have a module object wc:</p>",
          "polygon": [
            [
              85.6142578125,
              147.6317138671875
            ],
            [
              239.8095703125,
              147.6317138671875
            ],
            [
              239.8095703125,
              158.4580078125
            ],
            [
              85.6142578125,
              158.4580078125
            ]
          ],
          "bbox": [
            85.6142578125,
            147.6317138671875,
            239.8095703125,
            158.4580078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print wc\n&lt;module 'wc' from 'wc.py'&gt;</pre>",
          "polygon": [
            [
              85.39013671875,
              164.90972900390625
            ],
            [
              227.70703125,
              164.90972900390625
            ],
            [
              227.70703125,
              187.06732177734375
            ],
            [
              85.39013671875,
              187.06732177734375
            ]
          ],
          "bbox": [
            85.39013671875,
            164.90972900390625,
            227.70703125,
            187.06732177734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">That provides a function called linecount:</p>",
          "polygon": [
            [
              85.98779296875,
              193.8427734375
            ],
            [
              277.3125,
              193.8427734375
            ],
            [
              277.3125,
              204.49493408203125
            ],
            [
              85.98779296875,
              204.49493408203125
            ]
          ],
          "bbox": [
            85.98779296875,
            193.8427734375,
            277.3125,
            204.49493408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; wc.linecount('wc.py')\n7</pre>",
          "polygon": [
            [
              85.166015625,
              211.53515625
            ],
            [
              217.12937927246094,
              211.53515625
            ],
            [
              217.12937927246094,
              233.818359375
            ],
            [
              85.166015625,
              233.818359375
            ]
          ],
          "bbox": [
            85.166015625,
            211.53515625,
            217.12937927246094,
            233.818359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So that's how you write modules in Python.</p>",
          "polygon": [
            [
              86.0625,
              240.15234375
            ],
            [
              280.30078125,
              240.15234375
            ],
            [
              280.30078125,
              251.2469482421875
            ],
            [
              86.0625,
              251.2469482421875
            ]
          ],
          "bbox": [
            86.0625,
            240.15234375,
            280.30078125,
            251.2469482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The only problem with this example is that when you import the module it executes the test code at the bottom. Normally when you import a module, it defines new functions but it doesn't execute them.</p>",
          "polygon": [
            [
              85.9130859375,
              261.615234375
            ],
            [
              482.90625,
              261.615234375
            ],
            [
              482.90625,
              296.8849182128906
            ],
            [
              85.9130859375,
              296.8849182128906
            ]
          ],
          "bbox": [
            85.9130859375,
            261.615234375,
            482.90625,
            296.8849182128906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Programs that will be imported as modules often use the following idiom:</p>",
          "polygon": [
            [
              85.9130859375,
              307.0546875
            ],
            [
              412.3828125,
              307.0546875
            ],
            [
              412.3828125,
              318.1349182128906
            ],
            [
              85.9130859375,
              318.1349182128906
            ]
          ],
          "bbox": [
            85.9130859375,
            307.0546875,
            412.3828125,
            318.1349182128906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Code/10",
          "block_type": "Code",
          "html": "<pre>if __name__ == '__main__':\n    print linecount('wc.py')</pre>",
          "polygon": [
            [
              85.9130859375,
              325.23046875
            ],
            [
              232.9365234375,
              325.23046875
            ],
            [
              232.9365234375,
              347.66015625
            ],
            [
              85.9130859375,
              347.66015625
            ]
          ],
          "bbox": [
            85.9130859375,
            325.23046875,
            232.9365234375,
            347.66015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">__name__ is a built-in variable that is set when the program starts. If the program is running as a script, __name__ has the value __main__; in that case, the test code is executed. Otherwise, if the module is being imported, the test code is skipped.</p>",
          "polygon": [
            [
              85.763671875,
              354.62109375
            ],
            [
              482.39801025390625,
              354.62109375
            ],
            [
              482.39801025390625,
              389.2759094238281
            ],
            [
              85.763671875,
              389.2759094238281
            ]
          ],
          "bbox": [
            85.763671875,
            354.62109375,
            482.39801025390625,
            389.2759094238281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 14.5.</b> <i>Type this example into a file named</i> wc.py <i>and run it as a script. Then run the</i> <i>Python interpreter and</i> import wc<i>. What is the value of</i> __name__ <i>when the module is being</i> <i>imported?</i></p>",
          "polygon": [
            [
              85.6142578125,
              390.97265625
            ],
            [
              482.3984069824219,
              390.97265625
            ],
            [
              482.3984069824219,
              425.68621826171875
            ],
            [
              85.6142578125,
              425.68621826171875
            ]
          ],
          "bbox": [
            85.6142578125,
            390.97265625,
            482.3984069824219,
            425.68621826171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Warning: If you import a module that has already been imported, Python does nothing. It does not</i> <i>re-read the file, even if it has changed.</i></p>",
          "polygon": [
            [
              85.763671875,
              435.4453125
            ],
            [
              482.607421875,
              435.4453125
            ],
            [
              482.607421875,
              459.1302185058594
            ],
            [
              85.763671875,
              459.1302185058594
            ]
          ],
          "bbox": [
            85.763671875,
            435.4453125,
            482.607421875,
            459.1302185058594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If you want to reload a module, you can use the built-in function</i> reload<i>, but it can be tricky, so</i> <i>the safest thing to do is restart the interpreter and then import the module again.</i></p>",
          "polygon": [
            [
              85.6142578125,
              469.86328125
            ],
            [
              482.4019775390625,
              469.86328125
            ],
            [
              482.4019775390625,
              492.57421875
            ],
            [
              85.6142578125,
              492.57421875
            ]
          ],
          "bbox": [
            85.6142578125,
            469.86328125,
            482.4019775390625,
            492.57421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/159/SectionHeader/10",
            "4": "/page/160/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/161/SectionHeader/15",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-161-0\"></span><b>14.10 Debugging</b></h3>",
          "polygon": [
            [
              85.6142578125,
              524.77734375
            ],
            [
              207.1519775390625,
              524.77734375
            ],
            [
              207.1519775390625,
              539.7729644775391
            ],
            [
              85.6142578125,
              539.7729644775391
            ]
          ],
          "bbox": [
            85.6142578125,
            524.77734375,
            207.1519775390625,
            539.7729644775391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you are reading and writing files, you might run into problems with whitespace. These errors can be hard to debug because spaces, tabs and newlines are normally invisible:</p>",
          "polygon": [
            [
              86.0625,
              553.0078125
            ],
            [
              482.607421875,
              553.0078125
            ],
            [
              482.607421875,
              575.8339233398438
            ],
            [
              86.0625,
              575.8339233398438
            ]
          ],
          "bbox": [
            86.0625,
            553.0078125,
            482.607421875,
            575.8339233398438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/161/Code/17",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; s = '1 2\\t 3\\n 4'\n&gt;&gt;&gt; print s\n1 2 3\n 4</pre>",
          "polygon": [
            [
              85.9130859375,
              582.78515625
            ],
            [
              196.21238708496094,
              582.78515625
            ],
            [
              196.21238708496094,
              629.5453796386719
            ],
            [
              85.9130859375,
              629.5453796386719
            ]
          ],
          "bbox": [
            85.9130859375,
            582.78515625,
            196.21238708496094,
            629.5453796386719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/161/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The built-in function repr can help. It takes any object as an argument and returns a string representation of the object. For strings, it represents whitespace characters with backslash sequences:</p>",
          "polygon": [
            [
              86.2119140625,
              636.15234375
            ],
            [
              482.90625,
              636.15234375
            ],
            [
              482.90625,
              671.361946105957
            ],
            [
              86.2119140625,
              671.361946105957
            ]
          ],
          "bbox": [
            86.2119140625,
            636.15234375,
            482.90625,
            671.361946105957
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/161/Code/19",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print repr(s)\n'1 2\\t 3\\n 4'</pre>",
          "polygon": [
            [
              86.0625,
              678.3046875
            ],
            [
              175.3162078857422,
              678.3046875
            ],
            [
              175.3162078857422,
              700.734375
            ],
            [
              86.0625,
              700.734375
            ]
          ],
          "bbox": [
            86.0625,
            678.3046875,
            175.3162078857422,
            700.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "2": "/page/157/SectionHeader/4",
        "3": "/page/161/SectionHeader/15"
      },
      "images": null
    },
    {
      "id": "/page/162/Page/202",
      "block_type": "Page",
      "html": "<content-ref src='/page/162/PageHeader/0'></content-ref><content-ref src='/page/162/PageHeader/21'></content-ref><content-ref src='/page/162/Text/1'></content-ref><content-ref src='/page/162/Text/2'></content-ref><content-ref src='/page/162/Text/3'></content-ref><content-ref src='/page/162/SectionHeader/4'></content-ref><content-ref src='/page/162/ListGroup/199'></content-ref><content-ref src='/page/162/SectionHeader/16'></content-ref><content-ref src='/page/162/Text/17'></content-ref><content-ref src='/page/162/Code/18'></content-ref><content-ref src='/page/162/Code/19'></content-ref><content-ref src='/page/162/Text/20'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/162/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.2431640625,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.2431640625,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.2431640625,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/162/PageHeader/21",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.3984375,
              60.8115234375
            ],
            [
              525.9375,
              60.8115234375
            ],
            [
              525.9375,
              69.8994140625
            ],
            [
              510.3984375,
              69.8994140625
            ]
          ],
          "bbox": [
            510.3984375,
            60.8115234375,
            525.9375,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/162/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This can be helpful for debugging.</p>",
          "polygon": [
            [
              129.09375,
              88.70361328125
            ],
            [
              281.1211853027344,
              88.70361328125
            ],
            [
              281.1211853027344,
              98.79791259765625
            ],
            [
              129.09375,
              98.79791259765625
            ]
          ],
          "bbox": [
            129.09375,
            88.70361328125,
            281.1211853027344,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/162/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One other problem you might run into is that different systems use different characters to indicate the end of a line. Some systems use a newline, represented \\n. Others use a return character, represented \\r. Some use both. If you move files between different systems, these inconsistencies might cause problems.</p>",
          "polygon": [
            [
              128.6455078125,
              107.12109375
            ],
            [
              526.53515625,
              107.12109375
            ],
            [
              526.53515625,
              154.21087646484375
            ],
            [
              128.6455078125,
              154.21087646484375
            ]
          ],
          "bbox": [
            128.6455078125,
            107.12109375,
            526.53515625,
            154.21087646484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/162/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For most systems, there are applications to convert from one format to another. You can find them (and read more about this issue) at <a href=\"http://en.wikipedia.org/wiki/Newline\">http://en.wikipedia.org/wiki/Newline</a>. Or, of course, you could write one yourself.</p>",
          "polygon": [
            [
              129.392578125,
              162.7119140625
            ],
            [
              526.236328125,
              162.7119140625
            ],
            [
              526.236328125,
              197.430908203125
            ],
            [
              129.392578125,
              197.430908203125
            ]
          ],
          "bbox": [
            129.392578125,
            162.7119140625,
            526.236328125,
            197.430908203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15"
          },
          "images": {}
        },
        {
          "id": "/page/162/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-162-0\"></span><b>14.11 Glossary</b></h4>",
          "polygon": [
            [
              128.86962890625,
              224.9427490234375
            ],
            [
              235.177734375,
              224.9427490234375
            ],
            [
              235.177734375,
              239.2889404296875
            ],
            [
              128.86962890625,
              239.2889404296875
            ]
          ],
          "bbox": [
            128.86962890625,
            224.9427490234375,
            235.177734375,
            239.2889404296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/162/ListGroup/199",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/162/ListItem/5'></content-ref><content-ref src='/page/162/ListItem/6'></content-ref><content-ref src='/page/162/ListItem/7'></content-ref><content-ref src='/page/162/ListItem/8'></content-ref><content-ref src='/page/162/ListItem/9'></content-ref><content-ref src='/page/162/ListItem/10'></content-ref><content-ref src='/page/162/ListItem/11'></content-ref><content-ref src='/page/162/ListItem/12'></content-ref><content-ref src='/page/162/ListItem/13'></content-ref><content-ref src='/page/162/ListItem/14'></content-ref><content-ref src='/page/162/ListItem/15'></content-ref></ul></p>",
          "polygon": [
            [
              127.8984375,
              246.7265625
            ],
            [
              526.236328125,
              246.7265625
            ],
            [
              526.236328125,
              520.6838073730469
            ],
            [
              127.8984375,
              520.6838073730469
            ]
          ],
          "bbox": [
            127.8984375,
            246.7265625,
            526.236328125,
            520.6838073730469
          ],
          "children": [
            {
              "id": "/page/162/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>persistent:</b> Pertaining to a program that runs indefinitely and keeps at least some of its data in permanent storage.</li>",
              "polygon": [
                [
                  129.2431640625,
                  246.7265625
                ],
                [
                  525.9375,
                  246.7265625
                ],
                [
                  525.9375,
                  269.21392822265625
                ],
                [
                  129.2431640625,
                  269.21392822265625
                ]
              ],
              "bbox": [
                129.2431640625,
                246.7265625,
                525.9375,
                269.21392822265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>format operator:</b> An operator, %, that takes a format string and a tuple and generates a string that includes the elements of the tuple formatted as specified by the format string.</li>",
              "polygon": [
                [
                  129.392578125,
                  278.1517333984375
                ],
                [
                  526.236328125,
                  278.1517333984375
                ],
                [
                  526.236328125,
                  312.6518859863281
                ],
                [
                  129.392578125,
                  312.6518859863281
                ]
              ],
              "bbox": [
                129.392578125,
                278.1517333984375,
                526.236328125,
                312.6518859863281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>format string:</b> A string, used with the format operator, that contains format sequences.</li>",
              "polygon": [
                [
                  129.60000610351562,
                  321.64215087890625
                ],
                [
                  512.6015625,
                  321.64215087890625
                ],
                [
                  512.6015625,
                  331.7018737792969
                ],
                [
                  129.60000610351562,
                  331.7018737792969
                ]
              ],
              "bbox": [
                129.60000610351562,
                321.64215087890625,
                512.6015625,
                331.7018737792969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>format sequence:</b> A sequence of characters in a format string, like %d, that specifies how a value should be formatted.</li>",
              "polygon": [
                [
                  129.2431640625,
                  340.63970947265625
                ],
                [
                  525.6023559570312,
                  340.63970947265625
                ],
                [
                  525.6023559570312,
                  362.94586181640625
                ],
                [
                  129.2431640625,
                  362.94586181640625
                ]
              ],
              "bbox": [
                129.2431640625,
                340.63970947265625,
                525.6023559570312,
                362.94586181640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>text file:</b> A sequence of characters stored in permanent storage like a hard drive.</li>",
              "polygon": [
                [
                  128.197265625,
                  371.9361267089844
                ],
                [
                  483.5011291503906,
                  371.9361267089844
                ],
                [
                  483.5011291503906,
                  381.995849609375
                ],
                [
                  128.197265625,
                  381.995849609375
                ]
              ],
              "bbox": [
                128.197265625,
                371.9361267089844,
                483.5011291503906,
                381.995849609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>directory:</b> A named collection of files, also called a folder.</li>",
              "polygon": [
                [
                  128.42138671875,
                  390.9861145019531
                ],
                [
                  385.189453125,
                  390.9861145019531
                ],
                [
                  385.189453125,
                  401.04583740234375
                ],
                [
                  128.42138671875,
                  401.04583740234375
                ]
              ],
              "bbox": [
                128.42138671875,
                390.9861145019531,
                385.189453125,
                401.04583740234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>path:</b> A string that identifies a file.</li>",
              "polygon": [
                [
                  128.49609375,
                  410.0361022949219
                ],
                [
                  282.565673828125,
                  410.0361022949219
                ],
                [
                  282.565673828125,
                  420.0958251953125
                ],
                [
                  128.49609375,
                  420.0958251953125
                ]
              ],
              "bbox": [
                128.49609375,
                410.0361022949219,
                282.565673828125,
                420.0958251953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>relative path:</b> A path that starts from the current directory.</li>",
              "polygon": [
                [
                  128.197265625,
                  429.0860900878906
                ],
                [
                  389.2353515625,
                  429.0860900878906
                ],
                [
                  389.2353515625,
                  439.14581298828125
                ],
                [
                  128.197265625,
                  439.14581298828125
                ]
              ],
              "bbox": [
                128.197265625,
                429.0860900878906,
                389.2353515625,
                439.14581298828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>absolute path:</b> A path that starts from the topmost directory in the file system.</li>",
              "polygon": [
                [
                  128.3466796875,
                  448.1360778808594
                ],
                [
                  476.33203125,
                  448.1360778808594
                ],
                [
                  476.33203125,
                  458.19580078125
                ],
                [
                  128.3466796875,
                  458.19580078125
                ]
              ],
              "bbox": [
                128.3466796875,
                448.1360778808594,
                476.33203125,
                458.19580078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>catch:</b> To prevent an exception from terminating a program using the try and except statements.</li>",
              "polygon": [
                [
                  128.197265625,
                  467.1326599121094
                ],
                [
                  525.6006469726562,
                  467.1326599121094
                ],
                [
                  525.6006469726562,
                  489.4398193359375
                ],
                [
                  128.197265625,
                  489.4398193359375
                ]
              ],
              "bbox": [
                128.197265625,
                467.1326599121094,
                525.6006469726562,
                489.4398193359375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/162/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>database:</b> A file whose contents are organized like a dictionary with keys that correspond to values.</li>",
              "polygon": [
                [
                  127.8984375,
                  498.4300842285156
                ],
                [
                  525.6029052734375,
                  498.4300842285156
                ],
                [
                  525.6029052734375,
                  520.6838073730469
                ],
                [
                  127.8984375,
                  520.6838073730469
                ]
              ],
              "bbox": [
                127.8984375,
                498.4300842285156,
                525.6029052734375,
                520.6838073730469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/154/SectionHeader/1",
                "2": "/page/157/SectionHeader/4",
                "3": "/page/161/SectionHeader/15",
                "4": "/page/162/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/162/SectionHeader/16",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-162-1\"></span><b>14.12 Exercises</b></h4>",
          "polygon": [
            [
              128.3466796875,
              548.1956634521484
            ],
            [
              235.97705078125,
              548.1956634521484
            ],
            [
              235.97705078125,
              562.5418548583984
            ],
            [
              128.3466796875,
              562.5418548583984
            ]
          ],
          "bbox": [
            128.3466796875,
            548.1956634521484,
            235.97705078125,
            562.5418548583984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/162/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-162-2\"></span><b>Exercise 14.6.</b> <i>The</i> urllib <i>module provides methods for manipulating URLs and downloading</i> <i>information from the web. The following example downloads and prints a secret message from</i> thinkpython.com<i>:</i></p>",
          "polygon": [
            [
              128.6455078125,
              573.4085083007812
            ],
            [
              525.9375,
              573.4085083007812
            ],
            [
              525.9375,
              608.30859375
            ],
            [
              128.6455078125,
              608.30859375
            ]
          ],
          "bbox": [
            128.6455078125,
            573.4085083007812,
            525.9375,
            608.30859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/162/Code/18",
          "block_type": "Code",
          "html": "<pre>import urllib</pre>",
          "polygon": [
            [
              128.3466796875,
              612.6786499023438
            ],
            [
              197.6748046875,
              612.6786499023438
            ],
            [
              197.6748046875,
              623.390625
            ],
            [
              128.3466796875,
              623.390625
            ]
          ],
          "bbox": [
            128.3466796875,
            612.6786499023438,
            197.6748046875,
            623.390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/162/Code/19",
          "block_type": "Code",
          "html": "<pre>conn = urllib.urlopen('http://thinkpython.com/secret.html')\nfor line in conn:\n    print line.strip()</pre>",
          "polygon": [
            [
              129.09375,
              637.0676574707031
            ],
            [
              439.27734375,
              637.0676574707031
            ],
            [
              439.27734375,
              672.890625
            ],
            [
              129.09375,
              672.890625
            ]
          ],
          "bbox": [
            129.09375,
            637.0676574707031,
            439.27734375,
            672.890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/162/Text/20",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Run this code and follow the instructions you see there. Solution:</i> <a href=\"http://thinkpython.com/code/zip_code.py\">http:</a> <a href=\"http://thinkpython.com/code/zip_code.py\">//</a> <a href=\"http://thinkpython.com/code/zip_code.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/zip_code.py\">com/</a> <a href=\"http://thinkpython.com/code/zip_code.py\">code/</a> <a href=\"http://thinkpython.com/code/zip_code.py\">zip_</a> <a href=\"http://thinkpython.com/code/zip_code.py\">code.</a> <a href=\"http://thinkpython.com/code/zip_code.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              129.392578125,
              676.2118225097656
            ],
            [
              525.638671875,
              676.2118225097656
            ],
            [
              525.638671875,
              698.80078125
            ],
            [
              129.392578125,
              698.80078125
            ]
          ],
          "bbox": [
            129.392578125,
            676.2118225097656,
            525.638671875,
            698.80078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/16"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "2": "/page/157/SectionHeader/4",
        "3": "/page/161/SectionHeader/15",
        "4": "/page/162/SectionHeader/16"
      },
      "images": null
    },
    {
      "id": "/page/163/Page/3",
      "block_type": "Page",
      "html": "<content-ref src='/page/163/PageHeader/0'></content-ref><content-ref src='/page/163/PageHeader/1'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/163/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.79638671875
            ],
            [
              482.4034118652344,
              59.79638671875
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.79638671875,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/163/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.8671875,
              60.37646484375
            ],
            [
              100.705078125,
              60.37646484375
            ],
            [
              100.705078125,
              70.62451171875
            ],
            [
              84.8671875,
              70.62451171875
            ]
          ],
          "bbox": [
            84.8671875,
            60.37646484375,
            100.705078125,
            70.62451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/157/SectionHeader/4",
            "3": "/page/161/SectionHeader/15",
            "4": "/page/162/SectionHeader/16"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/154/SectionHeader/1",
        "2": "/page/157/SectionHeader/4",
        "3": "/page/161/SectionHeader/15",
        "4": "/page/162/SectionHeader/16"
      },
      "images": null
    },
    {
      "id": "/page/164/Page/145",
      "block_type": "Page",
      "html": "<content-ref src='/page/164/SectionHeader/0'></content-ref><content-ref src='/page/164/SectionHeader/1'></content-ref><content-ref src='/page/164/Text/2'></content-ref><content-ref src='/page/164/SectionHeader/3'></content-ref><content-ref src='/page/164/Text/4'></content-ref><content-ref src='/page/164/Text/5'></content-ref><content-ref src='/page/164/Text/6'></content-ref><content-ref src='/page/164/ListGroup/143'></content-ref><content-ref src='/page/164/Text/10'></content-ref><content-ref src='/page/164/Text/11'></content-ref><content-ref src='/page/164/Code/12'></content-ref><content-ref src='/page/164/Text/13'></content-ref><content-ref src='/page/164/Text/14'></content-ref><content-ref src='/page/164/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/164/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-164-0\"></span><b>Chapter 15</b></h2>",
          "polygon": [
            [
              128.6455078125,
              163.001953125
            ],
            [
              232.6376953125,
              163.001953125
            ],
            [
              232.6376953125,
              184.200927734375
            ],
            [
              128.6455078125,
              184.200927734375
            ]
          ],
          "bbox": [
            128.6455078125,
            163.001953125,
            232.6376953125,
            184.200927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/154/SectionHeader/1",
            "2": "/page/164/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/164/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Classes and objects</b></h1>",
          "polygon": [
            [
              128.49609375,
              218.302734375
            ],
            [
              348.4700927734375,
              218.302734375
            ],
            [
              348.4700927734375,
              243.09832763671875
            ],
            [
              128.49609375,
              243.09832763671875
            ]
          ],
          "bbox": [
            128.49609375,
            218.302734375,
            348.4700927734375,
            243.09832763671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Code examples from this chapter are available from <a href=\"http://thinkpython.com/code/Point1.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/Point1.py\">Point1.py</a>; solutions to the exercises are available from <a href=\"http://thinkpython.com/code/Point1_soln.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/Point1_soln.py\">Point1_soln.py</a>.</p>",
          "polygon": [
            [
              128.197265625,
              290.619140625
            ],
            [
              526.236328125,
              290.619140625
            ],
            [
              526.236328125,
              325.2958984375
            ],
            [
              128.197265625,
              325.2958984375
            ]
          ],
          "bbox": [
            128.197265625,
            290.619140625,
            526.236328125,
            325.2958984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/164/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-164-1\"></span><b>15.1 User-defined types</b></h4>",
          "polygon": [
            [
              128.3466796875,
              353.8217468261719
            ],
            [
              292.1044921875,
              353.8217468261719
            ],
            [
              292.1044921875,
              368.16796875
            ],
            [
              128.3466796875,
              368.16796875
            ]
          ],
          "bbox": [
            128.3466796875,
            353.8217468261719,
            292.1044921875,
            368.16796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We have used many of Python's built-in types; now we are going to define a new type. As an example, we will create a type called Point that represents a point in two-dimensional space.</p>",
          "polygon": [
            [
              128.3466796875,
              379.37109375
            ],
            [
              526.53515625,
              379.37109375
            ],
            [
              526.53515625,
              414.2809143066406
            ],
            [
              128.3466796875,
              414.2809143066406
            ]
          ],
          "bbox": [
            128.3466796875,
            379.37109375,
            526.53515625,
            414.2809143066406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In mathematical notation, points are often written in parentheses with a comma separating the coordinates. For example, (0, 0) represents the origin, and (<i>x</i>, <i>y</i>) represents the point <i>x</i> units to the right and <i>y</i> units up from the origin.</p>",
          "polygon": [
            [
              128.49609375,
              423.84375
            ],
            [
              527.1328125,
              423.84375
            ],
            [
              527.1328125,
              458.2239074707031
            ],
            [
              128.49609375,
              458.2239074707031
            ]
          ],
          "bbox": [
            128.49609375,
            423.84375,
            527.1328125,
            458.2239074707031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are several ways we might represent points in Python:</p>",
          "polygon": [
            [
              129.392578125,
              467.15625
            ],
            [
              397.142578125,
              467.15625
            ],
            [
              397.142578125,
              477.7789001464844
            ],
            [
              129.392578125,
              477.7789001464844
            ]
          ],
          "bbox": [
            129.392578125,
            467.15625,
            397.142578125,
            477.7789001464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/ListGroup/143",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/164/ListItem/7'></content-ref><content-ref src='/page/164/ListItem/8'></content-ref><content-ref src='/page/164/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              140.5986328125,
              489.5859375
            ],
            [
              450.0726013183594,
              489.5859375
            ],
            [
              450.0726013183594,
              539.6708679199219
            ],
            [
              140.5986328125,
              539.6708679199219
            ]
          ],
          "bbox": [
            140.5986328125,
            489.5859375,
            450.0726013183594,
            539.6708679199219
          ],
          "children": [
            {
              "id": "/page/164/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> We could store the coordinates separately in two variables, x and y.</li>",
              "polygon": [
                [
                  140.5986328125,
                  489.5859375
                ],
                [
                  450.0726013183594,
                  489.5859375
                ],
                [
                  450.0726013183594,
                  500.3368835449219
                ],
                [
                  140.5986328125,
                  500.3368835449219
                ]
              ],
              "bbox": [
                140.5986328125,
                489.5859375,
                450.0726013183594,
                500.3368835449219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "4": "/page/164/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/164/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> We could store the coordinates as elements in a list or tuple.</li>",
              "polygon": [
                [
                  143.48794555664062,
                  509.6953125
                ],
                [
                  418.060546875,
                  509.6953125
                ],
                [
                  418.060546875,
                  520.0038757324219
                ],
                [
                  143.48794555664062,
                  520.0038757324219
                ]
              ],
              "bbox": [
                143.48794555664062,
                509.6953125,
                418.060546875,
                520.0038757324219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "4": "/page/164/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/164/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> We could create a new type to represent points as objects.</li>",
              "polygon": [
                [
                  143.48794555664062,
                  529.03125
                ],
                [
                  406.4606628417969,
                  529.03125
                ],
                [
                  406.4606628417969,
                  539.6708679199219
                ],
                [
                  143.48794555664062,
                  539.6708679199219
                ]
              ],
              "bbox": [
                143.48794555664062,
                529.03125,
                406.4606628417969,
                539.6708679199219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "4": "/page/164/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/164/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Creating a new type is (a little) more complicated than the other options, but it has advantages that will be apparent soon.</p>",
          "polygon": [
            [
              128.6455078125,
              551.84765625
            ],
            [
              525.6033325195312,
              551.84765625
            ],
            [
              525.6033325195312,
              574.4238739013672
            ],
            [
              128.6455078125,
              574.4238739013672
            ]
          ],
          "bbox": [
            128.6455078125,
            551.84765625,
            525.6033325195312,
            574.4238739013672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A user-defined type is also called a <b>class</b>. A class definition looks like this:</p>",
          "polygon": [
            [
              129.09375,
              583.171875
            ],
            [
              455.115234375,
              583.171875
            ],
            [
              455.115234375,
              593.9778747558594
            ],
            [
              129.09375,
              593.9778747558594
            ]
          ],
          "bbox": [
            129.09375,
            583.171875,
            455.115234375,
            593.9778747558594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Code/12",
          "block_type": "Code",
          "html": "<pre>class Point(object):\n    \"\"\"Represents a point in 2-D space.\"\"\"</pre>",
          "polygon": [
            [
              129.09375,
              597.8671875
            ],
            [
              349.2797546386719,
              597.8671875
            ],
            [
              349.2797546386719,
              621.6053314208984
            ],
            [
              129.09375,
              621.6053314208984
            ]
          ],
          "bbox": [
            129.09375,
            597.8671875,
            349.2797546386719,
            621.6053314208984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This header indicates that the new class is a Point, which is a kind of object, which is a built-in type.</p>",
          "polygon": [
            [
              128.794921875,
              627.2257385253906
            ],
            [
              525.638671875,
              627.2257385253906
            ],
            [
              525.638671875,
              649.5318908691406
            ],
            [
              128.794921875,
              649.5318908691406
            ]
          ],
          "bbox": [
            128.794921875,
            627.2257385253906,
            525.638671875,
            649.5318908691406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The body is a docstring that explains what the class is for. You can define variables and functions inside a class definition, but we will get back to that later.</p>",
          "polygon": [
            [
              128.3466796875,
              658.1953125
            ],
            [
              525.9375,
              658.1953125
            ],
            [
              525.9375,
              681.2808990478516
            ],
            [
              128.3466796875,
              681.2808990478516
            ]
          ],
          "bbox": [
            128.3466796875,
            658.1953125,
            525.9375,
            681.2808990478516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/164/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Defining a class named Point creates a class object.</p>",
          "polygon": [
            [
              128.9443359375,
              690.6796875
            ],
            [
              355.60546875,
              690.6796875
            ],
            [
              355.60546875,
              700.8348999023438
            ],
            [
              128.9443359375,
              700.8348999023438
            ]
          ],
          "bbox": [
            128.9443359375,
            690.6796875,
            355.60546875,
            700.8348999023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "4": "/page/164/SectionHeader/3"
      },
      "images": null
    },
    {
      "id": "/page/165/Page/214",
      "block_type": "Page",
      "html": "<content-ref src='/page/165/PageHeader/0'></content-ref><content-ref src='/page/165/PageHeader/20'></content-ref><content-ref src='/page/165/Code/1'></content-ref><content-ref src='/page/165/Caption/2'></content-ref><content-ref src='/page/165/Code/3'></content-ref><content-ref src='/page/165/Text/4'></content-ref><content-ref src='/page/165/Text/5'></content-ref><content-ref src='/page/165/Code/6'></content-ref><content-ref src='/page/165/Text/7'></content-ref><content-ref src='/page/165/Text/8'></content-ref><content-ref src='/page/165/SectionHeader/9'></content-ref><content-ref src='/page/165/Text/10'></content-ref><content-ref src='/page/165/Code/11'></content-ref><content-ref src='/page/165/Text/12'></content-ref><content-ref src='/page/165/Text/13'></content-ref><content-ref src='/page/165/Text/14'></content-ref><content-ref src='/page/165/Text/15'></content-ref><content-ref src='/page/165/Text/16'></content-ref><content-ref src='/page/165/Code/17'></content-ref><content-ref src='/page/165/Text/18'></content-ref><content-ref src='/page/165/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/165/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.27978515625
            ],
            [
              482.4034118652344,
              60.27978515625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.27978515625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.49365234375,
              59.94140625
            ],
            [
              101.52685546875,
              59.94140625
            ],
            [
              101.52685546875,
              70.0927734375
            ],
            [
              84.49365234375,
              70.0927734375
            ]
          ],
          "bbox": [
            84.49365234375,
            59.94140625,
            101.52685546875,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Code/1",
          "block_type": "Code",
          "html": "<pre>x\n              y\n                       3.0\n                       4.0\nblank\n            Point</pre>",
          "polygon": [
            [
              236.64968872070312,
              85.31982421875
            ],
            [
              336.48046875,
              85.31982421875
            ],
            [
              336.48046875,
              129.55078125
            ],
            [
              236.64968872070312,
              129.55078125
            ]
          ],
          "bbox": [
            236.64968872070312,
            85.31982421875,
            336.48046875,
            129.55078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Caption/2",
          "block_type": "Caption",
          "html": "<p><span id=\"page-165-1\"></span>Figure 15.1: Object diagram.</p>",
          "polygon": [
            [
              222.1787109375,
              143.9560546875
            ],
            [
              346.5672607421875,
              143.9560546875
            ],
            [
              346.5672607421875,
              154.7529296875
            ],
            [
              222.1787109375,
              154.7529296875
            ]
          ],
          "bbox": [
            222.1787109375,
            143.9560546875,
            346.5672607421875,
            154.7529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print Point\n&lt;class '__main__.Point'&gt;</pre>",
          "polygon": [
            [
              85.46484375,
              174.603515625
            ],
            [
              215.9033203125,
              174.603515625
            ],
            [
              215.9033203125,
              198.0
            ],
            [
              85.46484375,
              198.0
            ]
          ],
          "bbox": [
            85.46484375,
            174.603515625,
            215.9033203125,
            198.0
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Because Point is defined at the top level, its \"full name\" is __main__.Point.</p>",
          "polygon": [
            [
              85.46484375,
              201.09375
            ],
            [
              421.17767333984375,
              201.09375
            ],
            [
              421.17767333984375,
              211.889892578125
            ],
            [
              85.46484375,
              211.889892578125
            ]
          ],
          "bbox": [
            85.46484375,
            201.09375,
            421.17767333984375,
            211.889892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The class object is like a factory for creating objects. To create a Point, you call Point as if it were a function.</p>",
          "polygon": [
            [
              85.6142578125,
              219.462890625
            ],
            [
              482.40020751953125,
              219.462890625
            ],
            [
              482.40020751953125,
              242.77288818359375
            ],
            [
              85.6142578125,
              242.77288818359375
            ]
          ],
          "bbox": [
            85.6142578125,
            219.462890625,
            482.40020751953125,
            242.77288818359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; blank = Point()\n&gt;&gt;&gt; print blank\n&lt;__main__.Point instance at 0xb7e9d3ac&gt;</pre>",
          "polygon": [
            [
              84.8671875,
              247.377685546875
            ],
            [
              290.3941345214844,
              247.377685546875
            ],
            [
              290.3941345214844,
              281.91796875
            ],
            [
              84.8671875,
              281.91796875
            ]
          ],
          "bbox": [
            84.8671875,
            247.377685546875,
            290.3941345214844,
            281.91796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value is a reference to a Point object, which we assign to blank. Creating a new object is called <b>instantiation</b>, and the object is an <b>instance</b> of the class.</p>",
          "polygon": [
            [
              85.9130859375,
              286.171875
            ],
            [
              482.4039611816406,
              286.171875
            ],
            [
              482.4039611816406,
              308.7898254394531
            ],
            [
              85.9130859375,
              308.7898254394531
            ]
          ],
          "bbox": [
            85.9130859375,
            286.171875,
            482.4039611816406,
            308.7898254394531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you print an instance, Python tells you what class it belongs to and where it is stored in memory (the prefix 0x means that the following number is in hexadecimal).</p>",
          "polygon": [
            [
              85.46484375,
              316.72265625
            ],
            [
              482.607421875,
              316.72265625
            ],
            [
              482.607421875,
              339.6728210449219
            ],
            [
              85.46484375,
              339.6728210449219
            ]
          ],
          "bbox": [
            85.46484375,
            316.72265625,
            482.607421875,
            339.6728210449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "4": "/page/164/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/165/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-165-0\"></span><b>15.2 Attributes</b></h3>",
          "polygon": [
            [
              85.68896484375,
              366.22265625
            ],
            [
              192.77703857421875,
              366.22265625
            ],
            [
              192.77703857421875,
              381.3328857421875
            ],
            [
              85.68896484375,
              381.3328857421875
            ]
          ],
          "bbox": [
            85.68896484375,
            366.22265625,
            192.77703857421875,
            381.3328857421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can assign values to an instance using dot notation:</p>",
          "polygon": [
            [
              85.763671875,
              391.166015625
            ],
            [
              331.69921875,
              391.166015625
            ],
            [
              331.69921875,
              402.1918029785156
            ],
            [
              85.763671875,
              402.1918029785156
            ]
          ],
          "bbox": [
            85.763671875,
            391.166015625,
            331.69921875,
            402.1918029785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Code/11",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; blank.x = 3.0\n&gt;&gt;&gt; blank.y = 4.0</pre>",
          "polygon": [
            [
              85.3154296875,
              406.0546875
            ],
            [
              175.8603515625,
              406.0546875
            ],
            [
              175.8603515625,
              429.2578125
            ],
            [
              85.3154296875,
              429.2578125
            ]
          ],
          "bbox": [
            85.3154296875,
            406.0546875,
            175.8603515625,
            429.2578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This syntax is similar to the syntax for selecting a variable from a module, such as math.pi or string.whitespace. In this case, though, we are assigning values to named elements of an object. These elements are called <b>attributes</b>.</p>",
          "polygon": [
            [
              85.6142578125,
              433.51171875
            ],
            [
              482.4085388183594,
              433.51171875
            ],
            [
              482.4085388183594,
              468.2088317871094
            ],
            [
              85.6142578125,
              468.2088317871094
            ]
          ],
          "bbox": [
            85.6142578125,
            433.51171875,
            482.4085388183594,
            468.2088317871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As a noun, \"AT-trib-ute\" is pronounced with emphasis on the first syllable, as opposed to \"a-TRIB-ute,\" which is a verb.</p>",
          "polygon": [
            [
              85.6142578125,
              475.27734375
            ],
            [
              482.4033203125,
              475.27734375
            ],
            [
              482.4033203125,
              499.0918273925781
            ],
            [
              85.6142578125,
              499.0918273925781
            ]
          ],
          "bbox": [
            85.6142578125,
            475.27734375,
            482.4033203125,
            499.0918273925781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following diagram shows the result of these assignments. A state diagram that shows an object and its attributes is called an <b>object diagram</b>; see Figure <a href=\"#page-165-1\">15.1.</a></p>",
          "polygon": [
            [
              85.46484375,
              506.6015625
            ],
            [
              482.40325927734375,
              506.6015625
            ],
            [
              482.40325927734375,
              529.9748229980469
            ],
            [
              85.46484375,
              529.9748229980469
            ]
          ],
          "bbox": [
            85.46484375,
            506.6015625,
            482.40325927734375,
            529.9748229980469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The variable blank refers to a Point object, which contains two attributes. Each attribute refers to a floating-point number.</p>",
          "polygon": [
            [
              85.46484375,
              537.5390625
            ],
            [
              482.90625,
              537.5390625
            ],
            [
              482.90625,
              560.8578186035156
            ],
            [
              85.46484375,
              560.8578186035156
            ]
          ],
          "bbox": [
            85.46484375,
            537.5390625,
            482.90625,
            560.8578186035156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can read the value of an attribute using the same syntax:</p>",
          "polygon": [
            [
              85.53955078125,
              569.25
            ],
            [
              353.74627685546875,
              569.25
            ],
            [
              353.74627685546875,
              579.5468139648438
            ],
            [
              85.53955078125,
              579.5468139648438
            ]
          ],
          "bbox": [
            85.53955078125,
            569.25,
            353.74627685546875,
            579.5468139648438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Code/17",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print blank.y\n4.0\n&gt;&gt;&gt; x = blank.x\n&gt;&gt;&gt; print x\n3.0</pre>",
          "polygon": [
            [
              84.8671875,
              584.1516571044922
            ],
            [
              175.31614685058594,
              584.1516571044922
            ],
            [
              175.31614685058594,
              642.8912658691406
            ],
            [
              84.8671875,
              642.8912658691406
            ]
          ],
          "bbox": [
            84.8671875,
            584.1516571044922,
            175.31614685058594,
            642.8912658691406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The expression blank.x means, \"Go to the object blank refers to and get the value of x.\" In this case, we assign that value to a variable named x. There is no conflict between the variable x and the attribute x.</p>",
          "polygon": [
            [
              86.0625,
              646.98046875
            ],
            [
              482.4050598144531,
              646.98046875
            ],
            [
              482.4050598144531,
              682.1468200683594
            ],
            [
              86.0625,
              682.1468200683594
            ]
          ],
          "bbox": [
            86.0625,
            646.98046875,
            482.4050598144531,
            682.1468200683594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/165/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can use dot notation as part of any expression. For example:</p>",
          "polygon": [
            [
              86.39995574951172,
              690.29296875
            ],
            [
              370.248046875,
              690.29296875
            ],
            [
              370.248046875,
              700.8348159790039
            ],
            [
              86.39995574951172,
              700.8348159790039
            ]
          ],
          "bbox": [
            86.39995574951172,
            690.29296875,
            370.248046875,
            700.8348159790039
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "3": "/page/165/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/166/Page/185",
      "block_type": "Page",
      "html": "<content-ref src='/page/166/PageHeader/0'></content-ref><content-ref src='/page/166/PageHeader/18'></content-ref><content-ref src='/page/166/Code/1'></content-ref><content-ref src='/page/166/Text/2'></content-ref><content-ref src='/page/166/TextInlineMath/3'></content-ref><content-ref src='/page/166/Text/4'></content-ref><content-ref src='/page/166/Text/5'></content-ref><content-ref src='/page/166/Text/6'></content-ref><content-ref src='/page/166/SectionHeader/7'></content-ref><content-ref src='/page/166/Text/8'></content-ref><content-ref src='/page/166/Text/9'></content-ref><content-ref src='/page/166/ListGroup/179'></content-ref><content-ref src='/page/166/Text/12'></content-ref><content-ref src='/page/166/Text/13'></content-ref><content-ref src='/page/166/Code/14'></content-ref><content-ref src='/page/166/Text/15'></content-ref><content-ref src='/page/166/Text/16'></content-ref><content-ref src='/page/166/TextInlineMath/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/166/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.6455078125,
              61.1015625
            ],
            [
              525.6033935546875,
              61.1015625
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.6455078125,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            61.1015625,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.3984375,
              60.908203125
            ],
            [
              525.9375,
              60.908203125
            ],
            [
              525.9375,
              70.2861328125
            ],
            [
              510.3984375,
              70.2861328125
            ]
          ],
          "bbox": [
            510.3984375,
            60.908203125,
            525.9375,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/Code/1",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print '(%g, %g)' % (blank.x, blank.y)\n(3.0, 4.0)\n&gt;&gt;&gt; distance = math.sqrt(blank.x**2 + blank.y**2)\n&gt;&gt;&gt; print distance\n5.0</pre>",
          "polygon": [
            [
              128.6455078125,
              88.31689453125
            ],
            [
              385.9077453613281,
              88.31689453125
            ],
            [
              385.9077453613281,
              147.42529296875
            ],
            [
              128.6455078125,
              147.42529296875
            ]
          ],
          "bbox": [
            128.6455078125,
            88.31689453125,
            385.9077453613281,
            147.42529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can pass an instance as an argument in the usual way. For example:</p>",
          "polygon": [
            [
              128.794921875,
              152.8505859375
            ],
            [
              445.8515625,
              152.8505859375
            ],
            [
              445.8515625,
              163.60888671875
            ],
            [
              128.794921875,
              163.60888671875
            ]
          ],
          "bbox": [
            128.794921875,
            152.8505859375,
            445.8515625,
            163.60888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/TextInlineMath/3",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">def print_point(p): print '(%g, %g)' % (p.x, p.y)</p>",
          "polygon": [
            [
              128.57080078125,
              169.52972412109375
            ],
            [
              302.1754150390625,
              169.52972412109375
            ],
            [
              302.1754150390625,
              191.686279296875
            ],
            [
              128.57080078125,
              191.686279296875
            ]
          ],
          "bbox": [
            128.57080078125,
            169.52972412109375,
            302.1754150390625,
            191.686279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">print_point takes a point as an argument and displays it in mathematical notation. To invoke it, you can pass blank as an argument:</p>",
          "polygon": [
            [
              128.197265625,
              196.83984375
            ],
            [
              525.638671875,
              196.83984375
            ],
            [
              525.638671875,
              220.06390380859375
            ],
            [
              128.197265625,
              220.06390380859375
            ]
          ],
          "bbox": [
            128.197265625,
            196.83984375,
            525.638671875,
            220.06390380859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; print_point(blank) (3.0, 4.0)</p>",
          "polygon": [
            [
              128.197265625,
              225.84375
            ],
            [
              244.67799377441406,
              225.84375
            ],
            [
              244.67799377441406,
              248.142333984375
            ],
            [
              128.197265625,
              248.142333984375
            ]
          ],
          "bbox": [
            128.197265625,
            225.84375,
            244.67799377441406,
            248.142333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Inside the function, p is an alias for blank, so if the function modifies p, blank changes. <b>Exercise 15.1.</b> <i>Write a function called</i> distance_between_points <i>that takes two Points as ar</i><i>guments and returns the distance between them.</i></p>",
          "polygon": [
            [
              128.794921875,
              254.2137451171875
            ],
            [
              525.6033325195312,
              254.2137451171875
            ],
            [
              525.6033325195312,
              288.5412292480469
            ],
            [
              128.794921875,
              288.5412292480469
            ]
          ],
          "bbox": [
            128.794921875,
            254.2137451171875,
            525.6033325195312,
            288.5412292480469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/166/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-166-0\"></span><b>15.3 Rectangles</b></h4>",
          "polygon": [
            [
              127.82373046875,
              317.8707580566406
            ],
            [
              239.96533203125,
              317.8707580566406
            ],
            [
              239.96533203125,
              332.21697998046875
            ],
            [
              127.82373046875,
              332.21697998046875
            ]
          ],
          "bbox": [
            127.82373046875,
            317.8707580566406,
            239.96533203125,
            332.21697998046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Sometimes it is obvious what the attributes of an object should be, but other times you have to make decisions. For example, imagine you are designing a class to represent rectangles. What attributes would you use to specify the location and size of a rectangle? You can ignore angle; to keep things simple, assume that the rectangle is either vertical or horizontal.</p>",
          "polygon": [
            [
              128.9443359375,
              344.4303283691406
            ],
            [
              525.9375,
              344.4303283691406
            ],
            [
              525.9375,
              390.9759216308594
            ],
            [
              128.9443359375,
              390.9759216308594
            ]
          ],
          "bbox": [
            128.9443359375,
            344.4303283691406,
            525.9375,
            390.9759216308594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are at least two possibilities:</p>",
          "polygon": [
            [
              128.197265625,
              412.2421875
            ],
            [
              280.7326354980469,
              412.2421875
            ],
            [
              280.7326354980469,
              423.1749267578125
            ],
            [
              128.197265625,
              423.1749267578125
            ]
          ],
          "bbox": [
            128.197265625,
            412.2421875,
            280.7326354980469,
            423.1749267578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/ListGroup/179",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/166/ListItem/10'></content-ref><content-ref src='/page/166/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              143.48800659179688,
              436.60546875
            ],
            [
              525.9375,
              436.60546875
            ],
            [
              525.9375,
              479.1979064941406
            ],
            [
              143.48800659179688,
              479.1979064941406
            ]
          ],
          "bbox": [
            143.48800659179688,
            436.60546875,
            525.9375,
            479.1979064941406
          ],
          "children": [
            {
              "id": "/page/166/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> You could specify one corner of the rectangle (or the center), the width, and the height.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  436.60546875
                ],
                [
                  525.9375,
                  436.60546875
                ],
                [
                  525.9375,
                  459.14691162109375
                ],
                [
                  143.48800659179688,
                  459.14691162109375
                ]
              ],
              "bbox": [
                143.48800659179688,
                436.60546875,
                525.9375,
                459.14691162109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/166/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/166/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> You could specify two opposing corners.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  468.703125
                ],
                [
                  333.4847412109375,
                  468.703125
                ],
                [
                  333.4847412109375,
                  479.1979064941406
                ],
                [
                  143.48800659179688,
                  479.1979064941406
                ]
              ],
              "bbox": [
                143.48800659179688,
                468.703125,
                333.4847412109375,
                479.1979064941406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/166/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/166/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">At this point it is hard to say whether either is better than the other, so we'll implement the first one, just as an example.</p>",
          "polygon": [
            [
              128.9443359375,
              492.6796875
            ],
            [
              525.603271484375,
              492.6796875
            ],
            [
              525.603271484375,
              515.169921875
            ],
            [
              128.9443359375,
              515.169921875
            ]
          ],
          "bbox": [
            128.9443359375,
            492.6796875,
            525.603271484375,
            515.169921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is the class definition:</p>",
          "polygon": [
            [
              128.12255859375,
              525.1640625
            ],
            [
              248.625,
              525.1640625
            ],
            [
              248.625,
              535.1749267578125
            ],
            [
              128.12255859375,
              535.1749267578125
            ]
          ],
          "bbox": [
            128.12255859375,
            525.1640625,
            248.625,
            535.1749267578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/Code/14",
          "block_type": "Code",
          "html": "<pre>class Rectangle(object):\n    \"\"\"Represents a rectangle.\n    attributes: width, height, corner.\n    \"\"\"</pre>",
          "polygon": [
            [
              129.60000610351562,
              541.01953125
            ],
            [
              328.35833740234375,
              541.01953125
            ],
            [
              328.35833740234375,
              599.8363800048828
            ],
            [
              129.60000610351562,
              599.8363800048828
            ]
          ],
          "bbox": [
            129.60000610351562,
            541.01953125,
            328.35833740234375,
            599.8363800048828
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The docstring lists the attributes: width and height are numbers; corner is a Point object that specifies the lower-left corner.</p>",
          "polygon": [
            [
              128.3466796875,
              605.9077758789062
            ],
            [
              525.9375,
              605.9077758789062
            ],
            [
              525.9375,
              628.2139282226562
            ],
            [
              128.3466796875,
              628.2139282226562
            ]
          ],
          "bbox": [
            128.3466796875,
            605.9077758789062,
            525.9375,
            628.2139282226562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To represent a rectangle, you have to instantiate a Rectangle object and assign values to the attributes:</p>",
          "polygon": [
            [
              128.0478515625,
              638.2563323974609
            ],
            [
              525.6033935546875,
              638.2563323974609
            ],
            [
              525.6033935546875,
              660.515625
            ],
            [
              128.0478515625,
              660.515625
            ]
          ],
          "bbox": [
            128.0478515625,
            638.2563323974609,
            525.6033935546875,
            660.515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/166/TextInlineMath/17",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">box = Rectangle() box.width = 100.0 box.height = 200.0</p>",
          "polygon": [
            [
              128.6455078125,
              666.3347778320312
            ],
            [
              223.75653076171875,
              666.3347778320312
            ],
            [
              223.75653076171875,
              700.6853713989258
            ],
            [
              128.6455078125,
              700.6853713989258
            ]
          ],
          "bbox": [
            128.6455078125,
            666.3347778320312,
            223.75653076171875,
            700.6853713989258
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "3": "/page/165/SectionHeader/9",
        "4": "/page/166/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/167/Page/207",
      "block_type": "Page",
      "html": "<content-ref src='/page/167/PageHeader/0'></content-ref><content-ref src='/page/167/PageHeader/16'></content-ref><content-ref src='/page/167/FigureGroup/204'></content-ref><content-ref src='/page/167/Code/3'></content-ref><content-ref src='/page/167/Text/4'></content-ref><content-ref src='/page/167/Text/5'></content-ref><content-ref src='/page/167/SectionHeader/6'></content-ref><content-ref src='/page/167/Text/7'></content-ref><content-ref src='/page/167/Code/8'></content-ref><content-ref src='/page/167/Text/9'></content-ref><content-ref src='/page/167/Code/10'></content-ref><content-ref src='/page/167/SectionHeader/11'></content-ref><content-ref src='/page/167/Text/12'></content-ref><content-ref src='/page/167/Code/13'></content-ref><content-ref src='/page/167/Text/14'></content-ref><content-ref src='/page/167/Code/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/167/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.4034118652344,
              60.66650390625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/167/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.79248046875,
              61.0048828125
            ],
            [
              101.67626953125,
              61.0048828125
            ],
            [
              101.67626953125,
              70.189453125
            ],
            [
              84.79248046875,
              70.189453125
            ]
          ],
          "bbox": [
            84.79248046875,
            61.0048828125,
            101.67626953125,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/167/FigureGroup/204",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/167/Figure/1'></content-ref><content-ref src='/page/167/Caption/2'></content-ref>",
          "polygon": [
            [
              197.0771484375,
              86.431640625
            ],
            [
              372.9375,
              86.431640625
            ],
            [
              372.9375,
              169.95294189453125
            ],
            [
              197.0771484375,
              169.95294189453125
            ]
          ],
          "bbox": [
            197.0771484375,
            86.431640625,
            372.9375,
            169.95294189453125
          ],
          "children": [
            {
              "id": "/page/167/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  197.0771484375,
                  86.431640625
                ],
                [
                  372.9375,
                  86.431640625
                ],
                [
                  372.9375,
                  146.373046875
                ],
                [
                  197.0771484375,
                  146.373046875
                ]
              ],
              "bbox": [
                197.0771484375,
                86.431640625,
                372.9375,
                146.373046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/166/SectionHeader/7"
              },
              "images": {
                "/page/167/Figure/1": "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"
              }
            },
            {
              "id": "/page/167/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-167-2\"></span>Figure 15.2: Object diagram.</p>",
              "polygon": [
                [
                  221.5810546875,
                  159.8115234375
                ],
                [
                  346.939453125,
                  159.8115234375
                ],
                [
                  346.939453125,
                  169.95294189453125
                ],
                [
                  221.5810546875,
                  169.95294189453125
                ]
              ],
              "bbox": [
                221.5810546875,
                159.8115234375,
                346.939453125,
                169.95294189453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/166/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/167/Code/3",
          "block_type": "Code",
          "html": "<pre>box.corner = Point()\nbox.corner.x = 0.0\nbox.corner.y = 0.0</pre>",
          "polygon": [
            [
              86.2119140625,
              192.59674072265625
            ],
            [
              191.01724243164062,
              192.59674072265625
            ],
            [
              191.01724243164062,
              226.947265625
            ],
            [
              86.2119140625,
              226.947265625
            ]
          ],
          "bbox": [
            86.2119140625,
            192.59674072265625,
            191.01724243164062,
            226.947265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/167/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The expression box.corner.x means, \"Go to the object box refers to and select the attribute named corner; then go to that object and select the attribute named x.\"</p>",
          "polygon": [
            [
              86.2119140625,
              233.21868896484375
            ],
            [
              482.4002990722656,
              233.21868896484375
            ],
            [
              482.4002990722656,
              255.52484130859375
            ],
            [
              86.2119140625,
              255.52484130859375
            ]
          ],
          "bbox": [
            86.2119140625,
            233.21868896484375,
            482.4002990722656,
            255.52484130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/167/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-167-2\">15.2</a> shows the state of this object. An object that is an attribute of another object is <b>embedded</b>.</p>",
          "polygon": [
            [
              86.2119140625,
              265.482421875
            ],
            [
              482.4033508300781,
              265.482421875
            ],
            [
              482.4033508300781,
              287.9248046875
            ],
            [
              86.2119140625,
              287.9248046875
            ]
          ],
          "bbox": [
            86.2119140625,
            265.482421875,
            482.4033508300781,
            287.9248046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/166/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/167/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-167-0\"></span><b>15.4 Instances as return values</b></h4>",
          "polygon": [
            [
              85.98779296875,
              317.4716491699219
            ],
            [
              294.3768615722656,
              317.4716491699219
            ],
            [
              294.3768615722656,
              331.81787109375
            ],
            [
              85.98779296875,
              331.81787109375
            ]
          ],
          "bbox": [
            85.98779296875,
            317.4716491699219,
            294.3768615722656,
            331.81787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/167/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Functions can return instances. For example, find_center takes a Rectangle as an argument and returns a Point that contains the coordinates of the center of the Rectangle:</p>",
          "polygon": [
            [
              85.6142578125,
              344.108642578125
            ],
            [
              482.4006042480469,
              344.108642578125
            ],
            [
              482.4006042480469,
              366.416015625
            ],
            [
              85.6142578125,
              366.416015625
            ]
          ],
          "bbox": [
            85.6142578125,
            344.108642578125,
            482.4006042480469,
            366.416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/167/Code/8",
          "block_type": "Code",
          "html": "<pre>def find_center(rect):\n    p = Point()\n    p.x = rect.corner.x + rect.width/2.0\n    p.y = rect.corner.y + rect.height/2.0\n    return p</pre>",
          "polygon": [
            [
              86.40005493164062,
              372.5366516113281
            ],
            [
              300.8494873046875,
              372.5366516113281
            ],
            [
              300.8494873046875,
              431.2772521972656
            ],
            [
              86.40005493164062,
              431.2772521972656
            ]
          ],
          "bbox": [
            86.40005493164062,
            372.5366516113281,
            300.8494873046875,
            431.2772521972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/167/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an example that passes box as an argument and assigns the resulting Point to center:</p>",
          "polygon": [
            [
              86.2119140625,
              436.9921875
            ],
            [
              482.3963317871094,
              436.9921875
            ],
            [
              482.3963317871094,
              459.8548278808594
            ],
            [
              86.2119140625,
              459.8548278808594
            ]
          ],
          "bbox": [
            86.2119140625,
            436.9921875,
            482.3963317871094,
            459.8548278808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/167/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; center = find_center(box)\n&gt;&gt;&gt; print_point(center)\n(50.0, 100.0)</pre>",
          "polygon": [
            [
              86.2119140625,
              465.9766845703125
            ],
            [
              238.09054565429688,
              465.9766845703125
            ],
            [
              238.09054565429688,
              500.4140625
            ],
            [
              86.2119140625,
              500.4140625
            ]
          ],
          "bbox": [
            86.2119140625,
            465.9766845703125,
            238.09054565429688,
            500.4140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/167/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-167-1\"></span><b>15.5 Objects are mutable</b></h4>",
          "polygon": [
            [
              85.98779296875,
              530.023681640625
            ],
            [
              257.888671875,
              530.023681640625
            ],
            [
              257.888671875,
              544.3698883056641
            ],
            [
              85.98779296875,
              544.3698883056641
            ]
          ],
          "bbox": [
            85.98779296875,
            530.023681640625,
            257.888671875,
            544.3698883056641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/167/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can change the state of an object by making an assignment to one of its attributes. For example, to change the size of a rectangle without changing its position, you can modify the values of width and height:</p>",
          "polygon": [
            [
              86.0625,
              556.48828125
            ],
            [
              482.607421875,
              556.48828125
            ],
            [
              482.607421875,
              591.1618499755859
            ],
            [
              86.0625,
              591.1618499755859
            ]
          ],
          "bbox": [
            86.0625,
            556.48828125,
            482.607421875,
            591.1618499755859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/167/Code/13",
          "block_type": "Code",
          "html": "<pre>box.width = box.width + 50\nbox.height = box.width + 100</pre>",
          "polygon": [
            [
              86.361328125,
              597.28369140625
            ],
            [
              232.8601837158203,
              597.28369140625
            ],
            [
              232.8601837158203,
              619.4402923583984
            ],
            [
              86.361328125,
              619.4402923583984
            ]
          ],
          "bbox": [
            86.361328125,
            597.28369140625,
            232.8601837158203,
            619.4402923583984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/167/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can also write functions that modify objects. For example, grow_rectangle takes a Rectangle object and two numbers, dwidth and dheight, and adds the numbers to the width and height of the rectangle:</p>",
          "polygon": [
            [
              85.6142578125,
              625.7109375
            ],
            [
              482.90625,
              625.7109375
            ],
            [
              482.90625,
              660.515625
            ],
            [
              85.6142578125,
              660.515625
            ]
          ],
          "bbox": [
            85.6142578125,
            625.7109375,
            482.90625,
            660.515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/167/Code/15",
          "block_type": "Code",
          "html": "<pre>def grow_rectangle(rect, dwidth, dheight):\n    rect.width += dwidth\n    rect.height += dheight</pre>",
          "polygon": [
            [
              86.28662109375,
              666.3347015380859
            ],
            [
              306.09521484375,
              666.3347015380859
            ],
            [
              306.09521484375,
              700.685302734375
            ],
            [
              86.28662109375,
              700.685302734375
            ]
          ],
          "bbox": [
            86.28662109375,
            666.3347015380859,
            306.09521484375,
            700.685302734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "3": "/page/165/SectionHeader/9",
        "4": "/page/167/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/168/Page/230",
      "block_type": "Page",
      "html": "<content-ref src='/page/168/PageHeader/0'></content-ref><content-ref src='/page/168/PageHeader/12'></content-ref><content-ref src='/page/168/Text/1'></content-ref><content-ref src='/page/168/Code/2'></content-ref><content-ref src='/page/168/Text/3'></content-ref><content-ref src='/page/168/SectionHeader/4'></content-ref><content-ref src='/page/168/Text/5'></content-ref><content-ref src='/page/168/Text/6'></content-ref><content-ref src='/page/168/Code/7'></content-ref><content-ref src='/page/168/Text/8'></content-ref><content-ref src='/page/168/Code/9'></content-ref><content-ref src='/page/168/Text/10'></content-ref><content-ref src='/page/168/Text/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/168/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.86962890625,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.86962890625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.86962890625,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/168/PageHeader/12",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.3984375,
              61.1015625
            ],
            [
              525.33984375,
              61.1015625
            ],
            [
              525.33984375,
              70.3828125
            ],
            [
              510.3984375,
              70.3828125
            ]
          ],
          "bbox": [
            510.3984375,
            61.1015625,
            525.33984375,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/168/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an example that demonstrates the effect:</p>",
          "polygon": [
            [
              127.52490234375,
              88.365234375
            ],
            [
              340.962890625,
              88.365234375
            ],
            [
              340.962890625,
              98.79791259765625
            ],
            [
              127.52490234375,
              98.79791259765625
            ]
          ],
          "bbox": [
            127.52490234375,
            88.365234375,
            340.962890625,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/168/Code/2",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print box.width\n100.0\n&gt;&gt;&gt; print box.height\n200.0\n&gt;&gt;&gt; grow_rectangle(box, 50, 100)\n&gt;&gt;&gt; print box.width\n150.0\n&gt;&gt;&gt; print box.height\n300.0</pre>",
          "polygon": [
            [
              128.6455078125,
              106.52471923828125
            ],
            [
              296.9815979003906,
              106.52471923828125
            ],
            [
              296.9815979003906,
              214.04229736328125
            ],
            [
              128.6455078125,
              214.04229736328125
            ]
          ],
          "bbox": [
            128.6455078125,
            106.52471923828125,
            296.9815979003906,
            214.04229736328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/168/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Inside the function, rect is an alias for box, so if the function modifies rect, box changes. <b>Exercise 15.2.</b> <i>Write a function named</i> move_rectangle <i>that takes a Rectangle and two numbers</i> <i>named</i> dx <i>and</i> dy<i>. It should change the location of the rectangle by adding</i> dx <i>to the</i> x <i>coordinate of</i> corner <i>and adding</i> dy <i>to the</i> y <i>coordinate of</i> corner<i>.</i></p>",
          "polygon": [
            [
              128.9443359375,
              221.918701171875
            ],
            [
              525.9375,
              221.918701171875
            ],
            [
              525.9375,
              268.46429443359375
            ],
            [
              128.9443359375,
              268.46429443359375
            ]
          ],
          "bbox": [
            128.9443359375,
            221.918701171875,
            525.9375,
            268.46429443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/167/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/168/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-168-0\"></span><b>15.6 Copying</b></h4>",
          "polygon": [
            [
              127.7490234375,
              302.9747009277344
            ],
            [
              225.7646484375,
              302.9747009277344
            ],
            [
              225.7646484375,
              317.3209228515625
            ],
            [
              127.7490234375,
              317.3209228515625
            ]
          ],
          "bbox": [
            127.7490234375,
            302.9747009277344,
            225.7646484375,
            317.3209228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/168/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Aliasing can make a program difficult to read because changes in one place might have unexpected effects in another place. It is hard to keep track of all the variables that might refer to a given object.</p>",
          "polygon": [
            [
              129.09375,
              331.41796875
            ],
            [
              525.6033935546875,
              331.41796875
            ],
            [
              525.6033935546875,
              366.35986328125
            ],
            [
              129.09375,
              366.35986328125
            ]
          ],
          "bbox": [
            129.09375,
            331.41796875,
            525.6033935546875,
            366.35986328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/168/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Copying an object is often an alternative to aliasing. The copy module contains a function called copy that can duplicate any object:</p>",
          "polygon": [
            [
              128.794921875,
              377.82421875
            ],
            [
              525.638671875,
              377.82421875
            ],
            [
              525.638671875,
              400.3648681640625
            ],
            [
              128.794921875,
              400.3648681640625
            ]
          ],
          "bbox": [
            128.794921875,
            377.82421875,
            525.638671875,
            400.3648681640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/168/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; p1 = Point()\n&gt;&gt;&gt; p1.x = 3.0\n&gt;&gt;&gt; p1.y = 4.0\n&gt;&gt;&gt; import copy\n&gt;&gt;&gt; p2 = copy.copy(p1)</pre>",
          "polygon": [
            [
              129.6000518798828,
              408.0917053222656
            ],
            [
              244.6780242919922,
              408.0917053222656
            ],
            [
              244.6780242919922,
              483.3984375
            ],
            [
              129.6000518798828,
              483.3984375
            ]
          ],
          "bbox": [
            129.6000518798828,
            408.0917053222656,
            244.6780242919922,
            483.3984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/168/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">p1 and p2 contain the same data, but they are not the same Point.</p>",
          "polygon": [
            [
              128.57080078125,
              486.9027099609375
            ],
            [
              416.267578125,
              486.9027099609375
            ],
            [
              416.267578125,
              497.0148620605469
            ],
            [
              128.57080078125,
              497.0148620605469
            ]
          ],
          "bbox": [
            128.57080078125,
            486.9027099609375,
            416.267578125,
            497.0148620605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/168/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print_point(p1)\n(3.0, 4.0)\n&gt;&gt;&gt; print_point(p2)\n(3.0, 4.0)\n&gt;&gt;&gt; p1 is p2\nFalse\n&gt;&gt;&gt; p1 == p2\nFalse</pre>",
          "polygon": [
            [
              129.6000518798828,
              504.74169921875
            ],
            [
              231.4423828125,
              504.74169921875
            ],
            [
              231.4423828125,
              600.1875
            ],
            [
              129.6000518798828,
              600.1875
            ]
          ],
          "bbox": [
            129.6000518798828,
            504.74169921875,
            231.4423828125,
            600.1875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/168/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The is operator indicates that p1 and p2 are not the same object, which is what we expected. But you might have expected == to yield True because these points contain the same data. In that case, you will be disappointed to learn that for instances, the default behavior of the == operator is the same as the is operator; it checks object identity, not object equivalence. This behavior can be changed—we'll see how later.</p>",
          "polygon": [
            [
              128.794921875,
              607.53515625
            ],
            [
              525.6033325195312,
              607.53515625
            ],
            [
              525.6033325195312,
              666.8308868408203
            ],
            [
              128.794921875,
              666.8308868408203
            ]
          ],
          "bbox": [
            128.794921875,
            607.53515625,
            525.6033325195312,
            666.8308868408203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/168/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you use copy.copy to duplicate a Rectangle, you will find that it copies the Rectangle object but not the embedded Point.</p>",
          "polygon": [
            [
              128.197265625,
              678.3046875
            ],
            [
              525.602783203125,
              678.3046875
            ],
            [
              525.602783203125,
              700.8348846435547
            ],
            [
              128.197265625,
              700.8348846435547
            ]
          ],
          "bbox": [
            128.197265625,
            678.3046875,
            525.602783203125,
            700.8348846435547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "3": "/page/165/SectionHeader/9",
        "4": "/page/168/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/169/Page/233",
      "block_type": "Page",
      "html": "<content-ref src='/page/169/PageHeader/0'></content-ref><content-ref src='/page/169/PageHeader/17'></content-ref><content-ref src='/page/169/FigureGroup/231'></content-ref><content-ref src='/page/169/Code/3'></content-ref><content-ref src='/page/169/Text/4'></content-ref><content-ref src='/page/169/Text/5'></content-ref><content-ref src='/page/169/Text/6'></content-ref><content-ref src='/page/169/Code/7'></content-ref><content-ref src='/page/169/Text/8'></content-ref><content-ref src='/page/169/Text/9'></content-ref><content-ref src='/page/169/SectionHeader/10'></content-ref><content-ref src='/page/169/Text/11'></content-ref><content-ref src='/page/169/Code/12'></content-ref><content-ref src='/page/169/Text/13'></content-ref><content-ref src='/page/169/Code/14'></content-ref><content-ref src='/page/169/Text/15'></content-ref><content-ref src='/page/169/Code/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/169/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.607421875,
              60.66650390625
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.09130859375,
              60.95654296875
            ],
            [
              101.52685546875,
              60.95654296875
            ],
            [
              101.52685546875,
              70.23779296875
            ],
            [
              85.09130859375,
              70.23779296875
            ]
          ],
          "bbox": [
            85.09130859375,
            60.95654296875,
            101.52685546875,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/FigureGroup/231",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/169/Figure/1'></content-ref><content-ref src='/page/169/Caption/2'></content-ref>",
          "polygon": [
            [
              131.70849609375,
              84.44970703125
            ],
            [
              431.4208984375,
              84.44970703125
            ],
            [
              431.4208984375,
              158.7529296875
            ],
            [
              131.70849609375,
              158.7529296875
            ]
          ],
          "bbox": [
            131.70849609375,
            84.44970703125,
            431.4208984375,
            158.7529296875
          ],
          "children": [
            {
              "id": "/page/169/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  131.70849609375,
                  84.44970703125
                ],
                [
                  431.4208984375,
                  84.44970703125
                ],
                [
                  431.4208984375,
                  135.158203125
                ],
                [
                  131.70849609375,
                  135.158203125
                ]
              ],
              "bbox": [
                131.70849609375,
                84.44970703125,
                431.4208984375,
                135.158203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/168/SectionHeader/4"
              },
              "images": {
                "/page/169/Figure/1": "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"
              }
            },
            {
              "id": "/page/169/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-169-1\"></span>Figure 15.3: Object diagram.</p>",
              "polygon": [
                [
                  222.23399353027344,
                  148.5966796875
                ],
                [
                  346.5672607421875,
                  148.5966796875
                ],
                [
                  346.5672607421875,
                  158.7529296875
                ],
                [
                  222.23399353027344,
                  158.7529296875
                ]
              ],
              "bbox": [
                222.23399353027344,
                148.5966796875,
                346.5672607421875,
                158.7529296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/168/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/169/Code/3",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; box2 = copy.copy(box)\n&gt;&gt;&gt; box2 is box\nFalse\n&gt;&gt;&gt; box2.corner is box.corner\nTrue</pre>",
          "polygon": [
            [
              85.68896484375,
              179.05078125
            ],
            [
              239.0625,
              179.05078125
            ],
            [
              239.0625,
              241.3125
            ],
            [
              85.68896484375,
              241.3125
            ]
          ],
          "bbox": [
            85.68896484375,
            179.05078125,
            239.0625,
            241.3125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-169-1\">15.3</a> shows what the object diagram looks like. This operation is called a <b>shallow</b> <b>copy</b> because it copies the object and any references it contains, but not the embedded objects.</p>",
          "polygon": [
            [
              85.763671875,
              242.713134765625
            ],
            [
              482.4046325683594,
              242.713134765625
            ],
            [
              482.4046325683594,
              277.16082763671875
            ],
            [
              85.763671875,
              277.16082763671875
            ]
          ],
          "bbox": [
            85.763671875,
            242.713134765625,
            482.4046325683594,
            277.16082763671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For most applications, this is not what you want. In this example, invoking grow_rectangle on one of the Rectangles would not affect the other, but invoking move_rectangle on either would affect both! This behavior is confusing and error-prone.</p>",
          "polygon": [
            [
              85.763671875,
              285.205078125
            ],
            [
              482.40338134765625,
              285.205078125
            ],
            [
              482.40338134765625,
              320.34881591796875
            ],
            [
              85.763671875,
              320.34881591796875
            ]
          ],
          "bbox": [
            85.763671875,
            285.205078125,
            482.40338134765625,
            320.34881591796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Fortunately, the copy module contains a method named deepcopy that copies not only the object but also the objects it refers to, and the objects <i>they</i> refer to, and so on. You will not be surprised to learn that this operation is called a <b>deep copy</b>.</p>",
          "polygon": [
            [
              85.46484375,
              328.7109375
            ],
            [
              482.607421875,
              328.7109375
            ],
            [
              482.607421875,
              363.5368347167969
            ],
            [
              85.46484375,
              363.5368347167969
            ]
          ],
          "bbox": [
            85.46484375,
            328.7109375,
            482.607421875,
            363.5368347167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; box3 = copy.deepcopy(box)\n&gt;&gt;&gt; box3 is box\nFalse\n&gt;&gt;&gt; box3.corner is box.corner\nFalse</pre>",
          "polygon": [
            [
              85.39013671875,
              367.76953125
            ],
            [
              238.09048461914062,
              367.76953125
            ],
            [
              238.09048461914062,
              426.9922790527344
            ],
            [
              85.39013671875,
              426.9922790527344
            ]
          ],
          "bbox": [
            85.39013671875,
            367.76953125,
            238.09048461914062,
            426.9922790527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">box3 and box are completely separate objects.</p>",
          "polygon": [
            [
              85.9130859375,
              431.19140625
            ],
            [
              286.43975830078125,
              431.19140625
            ],
            [
              286.43975830078125,
              441.9698486328125
            ],
            [
              85.9130859375,
              441.9698486328125
            ]
          ],
          "bbox": [
            85.9130859375,
            431.19140625,
            286.43975830078125,
            441.9698486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 15.3.</b> <i>Write a version of</i> move_rectangle <i>that creates and returns a new Rectangle</i> <i>instead of modifying the old one.</i></p>",
          "polygon": [
            [
              85.46484375,
              443.953125
            ],
            [
              482.607421875,
              443.953125
            ],
            [
              482.607421875,
              466.1851501464844
            ],
            [
              85.46484375,
              466.1851501464844
            ]
          ],
          "bbox": [
            85.46484375,
            443.953125,
            482.607421875,
            466.1851501464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/168/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/169/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-169-0\"></span><b>15.7 Debugging</b></h4>",
          "polygon": [
            [
              85.763671875,
              493.453125
            ],
            [
              199.9788055419922,
              493.453125
            ],
            [
              199.9788055419922,
              508.17291259765625
            ],
            [
              85.763671875,
              508.17291259765625
            ]
          ],
          "bbox": [
            85.763671875,
            493.453125,
            199.9788055419922,
            508.17291259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you start working with objects, you are likely to encounter some new exceptions. If you try to access an attribute that doesn't exist, you get an AttributeError:</p>",
          "polygon": [
            [
              85.9130859375,
              518.58984375
            ],
            [
              483.50390625,
              518.58984375
            ],
            [
              483.50390625,
              541.3368530273438
            ],
            [
              85.9130859375,
              541.3368530273438
            ]
          ],
          "bbox": [
            85.9130859375,
            518.58984375,
            483.50390625,
            541.3368530273438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/169/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; p = Point()\n&gt;&gt;&gt; print p.z\nAttributeError: Point instance has no attribute 'z'</pre>",
          "polygon": [
            [
              86.28662109375,
              546.0527038574219
            ],
            [
              354.41015625,
              546.0527038574219
            ],
            [
              354.41015625,
              582.01171875
            ],
            [
              86.28662109375,
              582.01171875
            ]
          ],
          "bbox": [
            86.28662109375,
            546.0527038574219,
            354.41015625,
            582.01171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not sure what type an object is, you can ask:</p>",
          "polygon": [
            [
              85.763671875,
              585.10546875
            ],
            [
              325.72265625,
              585.10546875
            ],
            [
              325.72265625,
              595.380859375
            ],
            [
              85.763671875,
              595.380859375
            ]
          ],
          "bbox": [
            85.763671875,
            585.10546875,
            325.72265625,
            595.380859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/169/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; type(p)\n&lt;type '__main__.Point'&gt;</pre>",
          "polygon": [
            [
              86.0625,
              600.0967102050781
            ],
            [
              206.6703643798828,
              600.0967102050781
            ],
            [
              206.6703643798828,
              622.2533111572266
            ],
            [
              86.0625,
              622.2533111572266
            ]
          ],
          "bbox": [
            86.0625,
            600.0967102050781,
            206.6703643798828,
            622.2533111572266
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/169/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not sure whether an object has a particular attribute, you can use the built-in function hasattr:</p>",
          "polygon": [
            [
              85.763671875,
              626.87109375
            ],
            [
              482.40338134765625,
              626.87109375
            ],
            [
              482.40338134765625,
              649.4248657226562
            ],
            [
              85.763671875,
              649.4248657226562
            ]
          ],
          "bbox": [
            85.763671875,
            626.87109375,
            482.40338134765625,
            649.4248657226562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/169/Code/16",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; hasattr(p, 'x')\nTrue\n&gt;&gt;&gt; hasattr(p, 'z')\nFalse</pre>",
          "polygon": [
            [
              85.9130859375,
              654.1407165527344
            ],
            [
              186.9169921875,
              654.1407165527344
            ],
            [
              186.9169921875,
              700.6863098144531
            ],
            [
              85.9130859375,
              700.6863098144531
            ]
          ],
          "bbox": [
            85.9130859375,
            654.1407165527344,
            186.9169921875,
            700.6863098144531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "3": "/page/165/SectionHeader/9",
        "4": "/page/169/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/170/Page/197",
      "block_type": "Page",
      "html": "<content-ref src='/page/170/PageHeader/0'></content-ref><content-ref src='/page/170/PageHeader/23'></content-ref><content-ref src='/page/170/Text/1'></content-ref><content-ref src='/page/170/SectionHeader/2'></content-ref><content-ref src='/page/170/Text/3'></content-ref><content-ref src='/page/170/ListItem/4'></content-ref><content-ref src='/page/170/Text/5'></content-ref><content-ref src='/page/170/Text/6'></content-ref><content-ref src='/page/170/Text/193'></content-ref><content-ref src='/page/170/ListGroup/194'></content-ref><content-ref src='/page/170/SectionHeader/11'></content-ref><content-ref src='/page/170/Text/12'></content-ref><content-ref src='/page/170/Text/13'></content-ref><content-ref src='/page/170/Text/14'></content-ref><content-ref src='/page/170/Text/15'></content-ref><content-ref src='/page/170/Text/16'></content-ref><content-ref src='/page/170/Code/192'></content-ref><content-ref src='/page/170/Text/18'></content-ref><content-ref src='/page/170/Code/19'></content-ref><content-ref src='/page/170/Text/20'></content-ref><content-ref src='/page/170/Text/21'></content-ref><content-ref src='/page/170/Text/22'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/170/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.42138671875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.42138671875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.42138671875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/170/PageHeader/23",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.3984375,
              60.908203125
            ],
            [
              525.33984375,
              60.908203125
            ],
            [
              525.33984375,
              69.802734375
            ],
            [
              510.3984375,
              69.802734375
            ]
          ],
          "bbox": [
            510.3984375,
            60.908203125,
            525.33984375,
            69.802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first argument can be any object; the second argument is a <i>string</i> that contains the name of the attribute.</p>",
          "polygon": [
            [
              127.599609375,
              88.365234375
            ],
            [
              526.236328125,
              88.365234375
            ],
            [
              526.236328125,
              110.99188232421875
            ],
            [
              127.599609375,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.599609375,
            88.365234375,
            526.236328125,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/169/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/170/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-170-0\"></span><b>15.8 Glossary</b></h4>",
          "polygon": [
            [
              127.4501953125,
              138.96173095703125
            ],
            [
              227.2587890625,
              138.96173095703125
            ],
            [
              227.2587890625,
              153.30792236328125
            ],
            [
              127.4501953125,
              153.30792236328125
            ]
          ],
          "bbox": [
            127.4501953125,
            138.96173095703125,
            227.2587890625,
            153.30792236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>class:</b> A user-defined type. A class definition creates a new class object.</p>",
          "polygon": [
            [
              128.49609375,
              161.30615234375
            ],
            [
              444.357421875,
              161.30615234375
            ],
            [
              444.357421875,
              171.36590576171875
            ],
            [
              128.49609375,
              171.36590576171875
            ]
          ],
          "bbox": [
            128.49609375,
            161.30615234375,
            444.357421875,
            171.36590576171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/170/ListItem/4",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>class object:</b> An object that contains information about a user-defined type. The class object can be used to create instances of the type.</li>",
          "polygon": [
            [
              128.197265625,
              180.59765625
            ],
            [
              525.638671875,
              180.59765625
            ],
            [
              525.638671875,
              202.88885498046875
            ],
            [
              128.197265625,
              202.88885498046875
            ]
          ],
          "bbox": [
            128.197265625,
            180.59765625,
            525.638671875,
            202.88885498046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>instance:</b> An object that belongs to a class.</p>",
          "polygon": [
            [
              128.49609375,
              212.1580810546875
            ],
            [
              317.27569580078125,
              212.1580810546875
            ],
            [
              317.27569580078125,
              222.21783447265625
            ],
            [
              128.49609375,
              222.21783447265625
            ]
          ],
          "bbox": [
            128.49609375,
            212.1580810546875,
            317.27569580078125,
            222.21783447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>attribute:</b> One of the named values associated with an object.</p>",
          "polygon": [
            [
              129.16845703125,
              231.2578125
            ],
            [
              400.73162841796875,
              231.2578125
            ],
            [
              400.73162841796875,
              241.54681396484375
            ],
            [
              129.16845703125,
              241.54681396484375
            ]
          ],
          "bbox": [
            129.16845703125,
            231.2578125,
            400.73162841796875,
            241.54681396484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/193",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>embedded (object):</b> An object that is stored as an attribute of another object.</p>",
          "polygon": [
            [
              129.09375,
              250.787109375
            ],
            [
              467.068359375,
              250.787109375
            ],
            [
              467.068359375,
              260.87481689453125
            ],
            [
              129.09375,
              260.87481689453125
            ]
          ],
          "bbox": [
            129.09375,
            250.787109375,
            467.068359375,
            260.87481689453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/170/ListGroup/194",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/170/ListItem/8'></content-ref><content-ref src='/page/170/ListItem/9'></content-ref><content-ref src='/page/170/ListItem/10'></content-ref></ul></p>",
          "polygon": [
            [
              128.6455078125,
              270.14404296875
            ],
            [
              525.9375,
              270.14404296875
            ],
            [
              525.9375,
              367.6387939453125
            ],
            [
              128.6455078125,
              367.6387939453125
            ]
          ],
          "bbox": [
            128.6455078125,
            270.14404296875,
            525.9375,
            367.6387939453125
          ],
          "children": [
            {
              "id": "/page/170/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>shallow copy:</b> To copy the contents of an object, including any references to embedded objects; implemented by the copy function in the copy module.</li>",
              "polygon": [
                [
                  128.6455078125,
                  270.14404296875
                ],
                [
                  525.9375,
                  270.14404296875
                ],
                [
                  525.9375,
                  292.39776611328125
                ],
                [
                  128.6455078125,
                  292.39776611328125
                ]
              ],
              "bbox": [
                128.6455078125,
                270.14404296875,
                525.9375,
                292.39776611328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/2"
              },
              "images": {}
            },
            {
              "id": "/page/170/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>deep copy:</b> To copy the contents of an object as well as any embedded objects, and any objects embedded in them, and so on; implemented by the deepcopy function in the copy module.</li>",
              "polygon": [
                [
                  128.9443359375,
                  301.66705322265625
                ],
                [
                  525.6045532226562,
                  301.66705322265625
                ],
                [
                  525.6045532226562,
                  336.11578369140625
                ],
                [
                  128.9443359375,
                  336.11578369140625
                ]
              ],
              "bbox": [
                128.9443359375,
                301.66705322265625,
                525.6045532226562,
                336.11578369140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/2"
              },
              "images": {}
            },
            {
              "id": "/page/170/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>object diagram:</b> A diagram that shows objects, their attributes, and the values of the attributes.</li>",
              "polygon": [
                [
                  129.09375,
                  345.33984375
                ],
                [
                  525.6028442382812,
                  345.33984375
                ],
                [
                  525.6028442382812,
                  367.6387939453125
                ],
                [
                  129.09375,
                  367.6387939453125
                ]
              ],
              "bbox": [
                129.09375,
                345.33984375,
                525.6028442382812,
                367.6387939453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/2"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/2"
          },
          "images": null
        },
        {
          "id": "/page/170/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-170-1\"></span><b>15.9 Exercises</b></h4>",
          "polygon": [
            [
              128.57080078125,
              395.608642578125
            ],
            [
              228.80392456054688,
              395.608642578125
            ],
            [
              228.80392456054688,
              409.9548645019531
            ],
            [
              128.57080078125,
              409.9548645019531
            ]
          ],
          "bbox": [
            128.57080078125,
            395.608642578125,
            228.80392456054688,
            409.9548645019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-170-2\"></span><b>Exercise 15.4.</b> <i>Swampy (see Chapter </i><i><a href=\"#page-52-0\">4)</a></i><i> provides a module named</i> World<i>, which defines a user</i><i>defined type also called</i> World<i>. You can import it like this:</i></p>",
          "polygon": [
            [
              129.59994506835938,
              421.13671875
            ],
            [
              525.6023559570312,
              421.13671875
            ],
            [
              525.6023559570312,
              443.3272399902344
            ],
            [
              129.59994506835938,
              443.3272399902344
            ]
          ],
          "bbox": [
            129.59994506835938,
            421.13671875,
            525.6023559570312,
            443.3272399902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from swampy.World import World</p>",
          "polygon": [
            [
              129.2431640625,
              448.5516662597656
            ],
            [
              286.5208435058594,
              448.5516662597656
            ],
            [
              286.5208435058594,
              458.5142517089844
            ],
            [
              129.2431640625,
              458.5142517089844
            ]
          ],
          "bbox": [
            129.2431640625,
            448.5516662597656,
            286.5208435058594,
            458.5142517089844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Or, depending on how you installed Swampy, like this:</i></p>",
          "polygon": [
            [
              129.2431640625,
              463.71453857421875
            ],
            [
              349.62890625,
              463.71453857421875
            ],
            [
              349.62890625,
              473.6771240234375
            ],
            [
              129.2431640625,
              473.6771240234375
            ]
          ],
          "bbox": [
            129.2431640625,
            463.71453857421875,
            349.62890625,
            473.6771240234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from World import World</p>",
          "polygon": [
            [
              128.86962890625,
              478.9236755371094
            ],
            [
              251.015625,
              478.9236755371094
            ],
            [
              251.015625,
              488.8862609863281
            ],
            [
              128.86962890625,
              488.8862609863281
            ]
          ],
          "bbox": [
            128.86962890625,
            478.9236755371094,
            251.015625,
            488.8862609863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The following code creates a World object and calls the</i> mainloop <i>method, which waits for the user.</i></p>",
          "polygon": [
            [
              129.59994506835938,
              493.83984375
            ],
            [
              525.6014404296875,
              493.83984375
            ],
            [
              525.6014404296875,
              509.30859375
            ],
            [
              129.59994506835938,
              509.30859375
            ]
          ],
          "bbox": [
            129.59994506835938,
            493.83984375,
            525.6014404296875,
            509.30859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Code/192",
          "block_type": "Code",
          "html": "<pre>world = World()\nworld.mainloop()</pre>",
          "polygon": [
            [
              128.86962890625,
              509.2956848144531
            ],
            [
              213.2957763671875,
              509.2956848144531
            ],
            [
              213.2957763671875,
              531.4522705078125
            ],
            [
              128.86962890625,
              531.4522705078125
            ]
          ],
          "bbox": [
            128.86962890625,
            509.2956848144531,
            213.2957763671875,
            531.4522705078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>A window should appear with a title bar and an empty square. We will use this window to draw</i> <i>Points, Rectangles and other shapes. Add the following lines before calling</i> mainloop <i>and run the</i> <i>program again.</i></p>",
          "polygon": [
            [
              128.9443359375,
              535.9921875
            ],
            [
              525.6033935546875,
              535.9921875
            ],
            [
              525.6033935546875,
              571.004150390625
            ],
            [
              128.9443359375,
              571.004150390625
            ]
          ],
          "bbox": [
            128.9443359375,
            535.9921875,
            525.6033935546875,
            571.004150390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Code/19",
          "block_type": "Code",
          "html": "<pre>canvas = world.ca(width=500, height=500, background='white')\nbbox = [[-150,-100], [150, 100]]\ncanvas.rectangle(bbox, outline='black', width=2, fill='green4')</pre>",
          "polygon": [
            [
              129.60000610351562,
              576.2109375
            ],
            [
              459.035400390625,
              576.2109375
            ],
            [
              459.035400390625,
              610.6013031005859
            ],
            [
              129.60000610351562,
              610.6013031005859
            ]
          ],
          "bbox": [
            129.60000610351562,
            576.2109375,
            459.035400390625,
            610.6013031005859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/20",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You should see a green rectangle with a black outline. The first line creates a Canvas, which appears</i> <i>in the window as a white square. The Canvas object provides methods like</i> rectangle <i>for drawing</i> <i>various shapes.</i></p>",
          "polygon": [
            [
              129.2431640625,
              614.8828125
            ],
            [
              525.9375,
              614.8828125
            ],
            [
              525.9375,
              650.1531677246094
            ],
            [
              129.2431640625,
              650.1531677246094
            ]
          ],
          "bbox": [
            129.2431640625,
            614.8828125,
            525.9375,
            650.1531677246094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/21",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">bbox <i>is a list of lists that represents the \"bounding box\" of the rectangle. The first pair of coordinates</i> <i>is the lower-left corner of the rectangle; the second pair is the upper-right corner.</i></p>",
          "polygon": [
            [
              128.49609375,
              658.96875
            ],
            [
              525.5986328125,
              658.96875
            ],
            [
              525.5986328125,
              681.5051727294922
            ],
            [
              128.49609375,
              681.5051727294922
            ]
          ],
          "bbox": [
            128.49609375,
            658.96875,
            525.5986328125,
            681.5051727294922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/170/Text/22",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You can draw a circle like this:</i></p>",
          "polygon": [
            [
              129.392578125,
              690.6796875
            ],
            [
              251.45249938964844,
              690.6796875
            ],
            [
              251.45249938964844,
              700.6621704101562
            ],
            [
              129.392578125,
              700.6621704101562
            ]
          ],
          "bbox": [
            129.392578125,
            690.6796875,
            251.45249938964844,
            700.6621704101562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "3": "/page/165/SectionHeader/9",
        "4": "/page/170/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/171/Page/126",
      "block_type": "Page",
      "html": "<content-ref src='/page/171/PageHeader/0'></content-ref><content-ref src='/page/171/PageHeader/11'></content-ref><content-ref src='/page/171/Text/1'></content-ref><content-ref src='/page/171/Text/2'></content-ref><content-ref src='/page/171/Text/3'></content-ref><content-ref src='/page/171/ListGroup/126'></content-ref><content-ref src='/page/171/Text/9'></content-ref><content-ref src='/page/171/Text/10'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/171/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.521484375
            ],
            [
              482.607421875,
              60.521484375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.521484375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/171/PageHeader/11",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              60.908203125
            ],
            [
              101.900390625,
              60.908203125
            ],
            [
              101.900390625,
              70.2861328125
            ],
            [
              85.3154296875,
              70.2861328125
            ]
          ],
          "bbox": [
            85.3154296875,
            60.908203125,
            101.900390625,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/171/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">canvas.circle([-25,0], 70, outline=None, fill='red')</p>",
          "polygon": [
            [
              84.64306640625,
              88.365234375
            ],
            [
              358.3153991699219,
              88.365234375
            ],
            [
              358.3153991699219,
              98.6483154296875
            ],
            [
              84.64306640625,
              98.6483154296875
            ]
          ],
          "bbox": [
            84.64306640625,
            88.365234375,
            358.3153991699219,
            98.6483154296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/171/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The first parameter is the coordinate pair for the center of the circle; the second parameter is the</i> <i>radius.</i></p>",
          "polygon": [
            [
              85.166015625,
              104.82861328125
            ],
            [
              483.50390625,
              104.82861328125
            ],
            [
              483.50390625,
              126.98516845703125
            ],
            [
              85.166015625,
              126.98516845703125
            ]
          ],
          "bbox": [
            85.166015625,
            104.82861328125,
            483.50390625,
            126.98516845703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/171/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If you add this line to the program, the result should resemble the national flag of Bangladesh (see</i> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">//</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">Gallery_</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">of_</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">sovereign-state_</a> <a href=\"http://en.wikipedia.org/wiki/Gallery_of_sovereign-state_flags\">flags</a> <i>).</i></p>",
          "polygon": [
            [
              85.3154296875,
              136.8017578125
            ],
            [
              482.90625,
              136.8017578125
            ],
            [
              482.90625,
              159.31719970703125
            ],
            [
              85.3154296875,
              159.31719970703125
            ]
          ],
          "bbox": [
            85.3154296875,
            136.8017578125,
            482.90625,
            159.31719970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/171/ListGroup/126",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/171/ListItem/4'></content-ref><content-ref src='/page/171/ListItem/5'></content-ref><content-ref src='/page/171/ListItem/6'></content-ref><content-ref src='/page/171/ListItem/7'></content-ref><content-ref src='/page/171/ListItem/8'></content-ref></ul></p>",
          "polygon": [
            [
              97.5673828125,
              172.9599609375
            ],
            [
              482.4051208496094,
              172.9599609375
            ],
            [
              482.4051208496094,
              325.0821838378906
            ],
            [
              97.5673828125,
              325.0821838378906
            ]
          ],
          "bbox": [
            97.5673828125,
            172.9599609375,
            482.4051208496094,
            325.0821838378906
          ],
          "children": [
            {
              "id": "/page/171/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Write a function called</i> draw_rectangle <i>that takes a Canvas and a Rectangle as arguments</i> <i>and draws a representation of the Rectangle on the Canvas.</i></li>",
              "polygon": [
                [
                  98.015625,
                  172.9599609375
                ],
                [
                  482.4051208496094,
                  172.9599609375
                ],
                [
                  482.4051208496094,
                  195.64715576171875
                ],
                [
                  98.015625,
                  195.64715576171875
                ]
              ],
              "bbox": [
                98.015625,
                172.9599609375,
                482.4051208496094,
                195.64715576171875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/11"
              },
              "images": {}
            },
            {
              "id": "/page/171/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Add an attribute named</i> color <i>to your Rectangle objects and modify</i> draw_rectangle <i>so</i> <i>that it uses the color attribute as the fill color.</i></li>",
              "polygon": [
                [
                  98.1650390625,
                  205.34765625
                ],
                [
                  482.39990234375,
                  205.34765625
                ],
                [
                  482.39990234375,
                  228.00616455078125
                ],
                [
                  98.1650390625,
                  228.00616455078125
                ]
              ],
              "bbox": [
                98.1650390625,
                205.34765625,
                482.39990234375,
                228.00616455078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/11"
              },
              "images": {}
            },
            {
              "id": "/page/171/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. Write a function called</i> draw_point <i>that takes a Canvas and a Point as arguments and draws</i> <i>a representation of the Point on the Canvas.</i></li>",
              "polygon": [
                [
                  98.1650390625,
                  237.83203125
                ],
                [
                  482.39691162109375,
                  237.83203125
                ],
                [
                  482.39691162109375,
                  260.36517333984375
                ],
                [
                  98.1650390625,
                  260.36517333984375
                ]
              ],
              "bbox": [
                98.1650390625,
                237.83203125,
                482.39691162109375,
                260.36517333984375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/11"
              },
              "images": {}
            },
            {
              "id": "/page/171/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. Define a new class called Circle with appropriate attributes and instantiate a few Circle ob</i><i>jects. Write a function called</i> draw_circle <i>that draws circles on the canvas.</i></li>",
              "polygon": [
                [
                  98.1650390625,
                  270.31640625
                ],
                [
                  482.4031982421875,
                  270.31640625
                ],
                [
                  482.4031982421875,
                  292.7463073730469
                ],
                [
                  98.1650390625,
                  292.7463073730469
                ]
              ],
              "bbox": [
                98.1650390625,
                270.31640625,
                482.4031982421875,
                292.7463073730469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/11"
              },
              "images": {}
            },
            {
              "id": "/page/171/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>5. Write a program that draws the national flag of the Czech Republic. Hint: you can draw a</i> <i>polygon like this:</i></li>",
              "polygon": [
                [
                  97.5673828125,
                  302.80078125
                ],
                [
                  482.4031677246094,
                  302.80078125
                ],
                [
                  482.4031677246094,
                  325.0821838378906
                ],
                [
                  97.5673828125,
                  325.0821838378906
                ]
              ],
              "bbox": [
                97.5673828125,
                302.80078125,
                482.4031677246094,
                325.0821838378906
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/164/SectionHeader/1",
                "3": "/page/165/SectionHeader/9",
                "4": "/page/170/SectionHeader/11"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": null
        },
        {
          "id": "/page/171/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">points = [[-150,-100], [150, 100], [150, -100]] canvas.polygon(points, fill='blue')</p>",
          "polygon": [
            [
              111.30699920654297,
              335.32073974609375
            ],
            [
              357.3984375,
              335.32073974609375
            ],
            [
              357.3984375,
              357.47833251953125
            ],
            [
              111.30699920654297,
              357.47833251953125
            ]
          ],
          "bbox": [
            111.30699920654297,
            335.32073974609375,
            357.3984375,
            357.47833251953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/171/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>I have written a small program that lists the available colors; you can download it from</i> <a href=\"http://thinkpython.com/code/color_list.py\">http:</a> <a href=\"http://thinkpython.com/code/color_list.py\">//</a> <a href=\"http://thinkpython.com/code/color_list.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/color_list.py\">com/</a> <a href=\"http://thinkpython.com/code/color_list.py\">code/</a> <a href=\"http://thinkpython.com/code/color_list.py\">color_</a> <a href=\"http://thinkpython.com/code/color_list.py\">list.</a> <a href=\"http://thinkpython.com/code/color_list.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              84.1201171875,
              371.443359375
            ],
            [
              480.6768493652344,
              371.443359375
            ],
            [
              480.6768493652344,
              393.873046875
            ],
            [
              84.1201171875,
              393.873046875
            ]
          ],
          "bbox": [
            84.1201171875,
            371.443359375,
            480.6768493652344,
            393.873046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "3": "/page/165/SectionHeader/9",
            "4": "/page/170/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/164/SectionHeader/1",
        "3": "/page/165/SectionHeader/9",
        "4": "/page/170/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/172/Page/163",
      "block_type": "Page",
      "html": "<content-ref src='/page/172/SectionHeader/0'></content-ref><content-ref src='/page/172/SectionHeader/1'></content-ref><content-ref src='/page/172/Text/2'></content-ref><content-ref src='/page/172/SectionHeader/3'></content-ref><content-ref src='/page/172/Text/4'></content-ref><content-ref src='/page/172/Code/5'></content-ref><content-ref src='/page/172/Text/6'></content-ref><content-ref src='/page/172/Code/7'></content-ref><content-ref src='/page/172/Text/13'></content-ref><content-ref src='/page/172/Text/8'></content-ref><content-ref src='/page/172/Text/9'></content-ref><content-ref src='/page/172/Text/10'></content-ref><content-ref src='/page/172/SectionHeader/11'></content-ref><content-ref src='/page/172/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/172/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-172-0\"></span><b>Chapter 16</b></h2>",
          "polygon": [
            [
              128.794921875,
              162.7974853515625
            ],
            [
              232.787109375,
              162.7974853515625
            ],
            [
              232.787109375,
              183.4599609375
            ],
            [
              128.794921875,
              183.4599609375
            ]
          ],
          "bbox": [
            128.794921875,
            162.7974853515625,
            232.787109375,
            183.4599609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/164/SectionHeader/1",
            "2": "/page/172/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/172/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Classes and functions</b></h1>",
          "polygon": [
            [
              128.86962890625,
              216.830322265625
            ],
            [
              376.008544921875,
              216.830322265625
            ],
            [
              376.008544921875,
              241.61737060546875
            ],
            [
              128.86962890625,
              241.61737060546875
            ]
          ],
          "bbox": [
            128.86962890625,
            216.830322265625,
            376.008544921875,
            241.61737060546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Code examples from this chapter are available from <a href=\"http://thinkpython.com/code/Time1.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/Time1.py\">Time1.py</a>.</p>",
          "polygon": [
            [
              128.3466796875,
              285.591796875
            ],
            [
              525.6451416015625,
              285.591796875
            ],
            [
              525.6451416015625,
              308.52392578125
            ],
            [
              128.3466796875,
              308.52392578125
            ]
          ],
          "bbox": [
            128.3466796875,
            285.591796875,
            525.6451416015625,
            308.52392578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/172/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-172-1\"></span><b>16.1 Time</b></h4>",
          "polygon": [
            [
              128.86962890625,
              336.0127868652344
            ],
            [
              202.53607177734375,
              336.0127868652344
            ],
            [
              202.53607177734375,
              350.3590087890625
            ],
            [
              128.86962890625,
              350.3590087890625
            ]
          ],
          "bbox": [
            128.86962890625,
            336.0127868652344,
            202.53607177734375,
            350.3590087890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As another example of a user-defined type, we'll define a class called Time that records the time of day. The class definition looks like this:</p>",
          "polygon": [
            [
              129.2431640625,
              361.1953125
            ],
            [
              525.6033935546875,
              361.1953125
            ],
            [
              525.6033935546875,
              384.3984375
            ],
            [
              129.2431640625,
              384.3984375
            ]
          ],
          "bbox": [
            129.2431640625,
            361.1953125,
            525.6033935546875,
            384.3984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Code/5",
          "block_type": "Code",
          "html": "<pre>class Time(object):\n    \"\"\"Represents the time of day.\n    attributes: hour, minute, second</pre>",
          "polygon": [
            [
              129.5999755859375,
              388.2677917480469
            ],
            [
              317.8975830078125,
              388.2677917480469
            ],
            [
              317.8975830078125,
              436.21875
            ],
            [
              129.5999755859375,
              436.21875
            ]
          ],
          "bbox": [
            129.5999755859375,
            388.2677917480469,
            317.8975830078125,
            436.21875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We can create a new Time object and assign attributes for hours, minutes, and seconds:</p>",
          "polygon": [
            [
              129.5999755859375,
              451.6875
            ],
            [
              509.69757080078125,
              451.6875
            ],
            [
              509.69757080078125,
              461.9999694824219
            ],
            [
              129.5999755859375,
              461.9999694824219
            ]
          ],
          "bbox": [
            129.5999755859375,
            451.6875,
            509.69757080078125,
            461.9999694824219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Code/7",
          "block_type": "Code",
          "html": "<pre>time = Time()\ntime.hour = 11\ntime.minute = 59\ntime.second = 30</pre>",
          "polygon": [
            [
              128.49609375,
              466.7298278808594
            ],
            [
              213.36328125,
              466.7298278808594
            ],
            [
              213.36328125,
              513.2754211425781
            ],
            [
              128.49609375,
              513.2754211425781
            ]
          ],
          "bbox": [
            128.49609375,
            466.7298278808594,
            213.36328125,
            513.2754211425781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">\"\"\"</p>",
          "polygon": [
            [
              150.51597595214844,
              437.0458068847656
            ],
            [
              166.20706176757812,
              437.0458068847656
            ],
            [
              166.20706176757812,
              447.0083923339844
            ],
            [
              150.51597595214844,
              447.0083923339844
            ]
          ],
          "bbox": [
            150.51597595214844,
            437.0458068847656,
            166.20706176757812,
            447.0083923339844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The state diagram for the Time object looks like Figure <a href=\"#page-173-0\">16.1.</a></p>",
          "polygon": [
            [
              128.86962890625,
              518.1548461914062
            ],
            [
              391.166015625,
              518.1548461914062
            ],
            [
              391.166015625,
              528.2669982910156
            ],
            [
              128.86962890625,
              528.2669982910156
            ]
          ],
          "bbox": [
            128.86962890625,
            518.1548461914062,
            391.166015625,
            528.2669982910156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-172-3\"></span><b>Exercise 16.1.</b> <i>Write a function called</i> print_time <i>that takes a Time object and prints it in the</i> <i>form</i> hour:minute:second<i>. Hint: the format sequence</i> '%.2d' <i>prints an integer using at least</i> <i>two digits, including a leading zero if necessary.</i></p>",
          "polygon": [
            [
              129.2431640625,
              530.19140625
            ],
            [
              525.601806640625,
              530.19140625
            ],
            [
              525.601806640625,
              564.6773071289062
            ],
            [
              129.2431640625,
              564.6773071289062
            ]
          ],
          "bbox": [
            129.2431640625,
            530.19140625,
            525.601806640625,
            564.6773071289062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-172-4\"></span><b>Exercise 16.2.</b> <i>Write a boolean function called</i> is_after <i>that takes two Time objects,</i> t1 <i>and</i> t2<i>,</i> <i>and returns</i> True <i>if</i> t1 <i>follows</i> t2 <i>chronologically and</i> False <i>otherwise. Challenge: don't use an</i> if <i>statement.</i></p>",
          "polygon": [
            [
              128.794921875,
              566.9087066650391
            ],
            [
              525.6027221679688,
              566.9087066650391
            ],
            [
              525.6027221679688,
              601.2603149414062
            ],
            [
              128.794921875,
              601.2603149414062
            ]
          ],
          "bbox": [
            128.794921875,
            566.9087066650391,
            525.6027221679688,
            601.2603149414062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/172/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-172-2\"></span><b>16.2 Pure functions</b></h4>",
          "polygon": [
            [
              127.82373046875,
              628.8046875
            ],
            [
              265.0711975097656,
              628.8046875
            ],
            [
              265.0711975097656,
              643.26806640625
            ],
            [
              127.82373046875,
              643.26806640625
            ]
          ],
          "bbox": [
            127.82373046875,
            628.8046875,
            265.0711975097656,
            643.26806640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/172/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the next few sections, we'll write two functions that add time values. They demonstrate two kinds of functions: pure functions and modifiers. They also demonstrate a development plan I'll call <b>prototype and patch</b>, which is a way of tackling a complex problem by starting with a simple prototype and incrementally dealing with the complications.</p>",
          "polygon": [
            [
              128.49609375,
              653.94140625
            ],
            [
              525.6033935546875,
              653.94140625
            ],
            [
              525.6033935546875,
              700.8350219726562
            ],
            [
              128.49609375,
              700.8350219726562
            ]
          ],
          "bbox": [
            128.49609375,
            653.94140625,
            525.6033935546875,
            700.8350219726562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/172/SectionHeader/1",
        "4": "/page/172/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/173/Page/179",
      "block_type": "Page",
      "html": "<content-ref src='/page/173/PageHeader/0'></content-ref><content-ref src='/page/173/PageHeader/12'></content-ref><content-ref src='/page/173/FigureGroup/178'></content-ref><content-ref src='/page/173/Text/3'></content-ref><content-ref src='/page/173/Code/4'></content-ref><content-ref src='/page/173/Text/5'></content-ref><content-ref src='/page/173/Text/6'></content-ref><content-ref src='/page/173/Text/7'></content-ref><content-ref src='/page/173/Code/8'></content-ref><content-ref src='/page/173/Text/9'></content-ref><content-ref src='/page/173/Text/10'></content-ref><content-ref src='/page/173/Code/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/173/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.4034118652344,
              60.8115234375
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/PageHeader/12",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.8671875,
              61.24658203125
            ],
            [
              100.5556640625,
              61.24658203125
            ],
            [
              100.5556640625,
              70.23779296875
            ],
            [
              84.8671875,
              70.23779296875
            ]
          ],
          "bbox": [
            84.8671875,
            61.24658203125,
            100.5556640625,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/FigureGroup/178",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/173/Figure/1'></content-ref><content-ref src='/page/173/Caption/2'></content-ref>",
          "polygon": [
            [
              221.431640625,
              84.0146484375
            ],
            [
              346.939453125,
              84.0146484375
            ],
            [
              346.939453125,
              169.1529541015625
            ],
            [
              221.431640625,
              169.1529541015625
            ]
          ],
          "bbox": [
            221.431640625,
            84.0146484375,
            346.939453125,
            169.1529541015625
          ],
          "children": [
            {
              "id": "/page/173/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  226.212890625,
                  84.0146484375
                ],
                [
                  344.25,
                  84.0146484375
                ],
                [
                  344.25,
                  141.8291015625
                ],
                [
                  226.212890625,
                  141.8291015625
                ]
              ],
              "bbox": [
                226.212890625,
                84.0146484375,
                344.25,
                141.8291015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "4": "/page/172/SectionHeader/11"
              },
              "images": {
                "/page/173/Figure/1": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACaATsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACkZgoyxAA7mlqjq+kWGvaXNpup24uLOYASRFiu7ByOQQeooAtfaIf+e0f/fQpRLGRkSIR0zmvEfEXw38I2XxP8KaTb6NGljex3BuIRLIRIVXK8lsjHsa6nxH4Y8F+DPCuxdFlSyuNQti0VtM24yhsIxLN0BPSgD0iiuQ13x7Do/iVfD0GkX2oanJbC4hitguHyxGCSQFAwSSeKybT4py31xc6Xb+E9WfxBbPibTsoBGuM7zKTtwc8etAHotFcroHjzTda8N3+sXEU2mrpzvHfQ3I+aBkGSOOtYg+K3lW8Wp3vhTWbTQJWAXUpFUgKTgOyA7lU+tAHotFMilSeJJYnDxuoZWU5BB6EU+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA838Wf8ln8D/wDXK7/9Aqx8Yf8AkTbb/sKWv/owV28unWVxewXs1nbyXduCIZ3iUvHnrtYjIz7Ut5YWeowiG+tILqIMHCTxh1DDkHB7j1oA4ZQP+F+McdNAH/o6jwsB/wALf8bnHPlWf/oBrufsFn9v+3/ZIPtvl+V9o8seZsznbu64zziiKws4Lye8htII7q4AE0yRgPJjpuYcnHbNAHiOoWdze+B/ifFaKzSLrLyMqDJKKUZuPoDV3VTDL4BN3e/E24uNJubdY/ssNnbF5AwA8tVAB3dscEYr2C20+ys2na1tLeA3DmSYxRhfNc9WbA5PuaxrfwH4TtdVGpweHtPjvA28SLAPlb1A6A+4FAGh4ftBYeHNNs1aVlhtY4wZl2uQFA+YDofWtKiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopGYIpZiAoGST2FAC0VXsb+01O0S7sbmG5tpM7JYXDK2Dg4I96sUAFFFFABRRRQAUUUUAFFFFABXPeL72/s7KwTT7r7LLdX0du0vlq5VSGJwG4zxXQ1zPjP8A1eif9hWH/wBBegCt9j8Qf9DTcf8AgHB/8TR9j8Qf9DTcf+AcH/xNa1FAGT9j8Qf9DTcf+AcH/wATR9j8Qf8AQ03H/gHB/wDE1rUUAZP2PxB/0NNx/wCAcH/xNH2PxB/0NNx/4Bwf/E1pXFxDaW8lxcSpFDGpd5HbCqB1JPYUQTxXVvHPBKksMihkdDlWB6EHuKAM37H4g/6Gm4/8A4P/AImj7H4g/wChpuP/AADg/wDia1qKAMn7H4g/6Gm4/wDAOD/4mj7H4g/6Gm4/8A4P/ia1qKAMn7H4g/6Gm4/8A4P/AImj7H4g/wChpuP/AADg/wDia1qKAMn7H4g/6Gm4/wDAOD/4mj7H4g/6Gm4/8A4P/ia1qKAMn7H4g/6Gm4/8A4P/AImj7H4g/wChpuP/AADg/wDia1qKAMn7H4g/6Gm4/wDAOD/4mj7H4g/6Gm4/8A4P/ia1qKAMn7H4g/6Gm4/8A4P/AImj7H4g/wChpuP/AADg/wDia1qjmnit4/MnlSJMgbnYKMngcmgDN+x+IP8Aoabj/wAA4P8A4mj7H4g/6Gm4/wDAOD/4mtaoxPEZzAJUMwXeY9w3BfXHXFAGb9j8Qf8AQ03H/gHB/wDE1Xmm17TNR0lpNfkuobi9SCWKS1iUFWDd1UEHgVvVj67/AMfWhf8AYUh/k1AHY0UUUAFeS+FL/wARN8TPGC3lhZ+QBCbpRdMwiAiOzYNvO7jPTHvXrVeX6PqFnafFXxzZXFzHFdXcVubeJ2w0oWE52jvigAtPHkWhfCzRdcsNAiihubsWwsLd+EDOwO3jk5HT1NP1Hx94u0DV7C11fwrauuqlo7GOzvNzrLxhJCwA7jJHA561yUX/ACRLwZ/2G4f/AEc9dz4+/wCR28A/9hKT/wBF0AT6L4v8QJ40j8NeJtJsraa6tmubWeynaRCFPKtuAOfeqq+NvFOvT3lx4S8PWd3pVpK0IuLy6MbXTLw3lgDgZ4yeKXXk8z41+HEzjdpd2M15/wCGYPDOg6bd6T4p8S65ouqWE8gkto9QlhSRCxKvGq8EEHtQB7N4R8TweLdCTUYYJLaRZGhuLeT70MqnDKfX61u1xPwus7SDwq93ZWN/Zw31y9wq305llkBwBISQCN2M4rotS8OaPrFwtxqGnw3EqpsDuOQuScfmTQBqUVz/APwg/hn/AKA1r+R/xo/4Qfwz/wBAa1/I/wCNAHQVk6jrFzp1yF/sXULq12gm4tQj7T3BTcH/ACBqr/wg/hn/AKA1r+R/xrJ1HwPBJciLTNF0OC32jNxciSV93ceUu0Y6c7/woA2rbxhoFxOtudSjtrlulveK1tKfokgVj+VVPGZBi0Qjkf2rD/6C9Y6fCbRbjnVZpLpT1ghjW3i/DaN/5uam1jw/pPhvTNDsdHso7S3GrxHYmTk4fqSSTQB0FFFFABRRRQBg+N/+RF13/rxm/wDQTXDaX4s8VaX4B0/V7bw/aPo1nZx7/OuStxIigAuqgYA64zk4rufG/wDyIuu/9eM3/oJrnb7/AJIQ3/YEX/0WKANDW/G0tumj2uiaf9v1TV4vOt4JH2LHHgEu57AZpukeLNWj8SxeHvE+mW9neXMTS2k9rKXhmC/eXkZBFcu90nhvXPBviS/DLpT6OtjLcBSVgcqGUtjoD0q/cavZ+M/iV4f/ALClF3a6QJZ7u7jB8tSy7VTd3JoA6zwp4ik8R2+oyyW6wG0vpbQBW3bghHzfjmsCX4iSxeCdU8Qtp8ebG/a08oSHDKrhd2cdec4rK8HeK9F8MN4k0/Wb1bO8TVZ5hBIDvkViNuwfxZ9q5wSNP8EtflkiaJpNadmjcYK5lQ4PvQB6x4a1TWtXSe61PSo9PtH2tZqZd0rIc8uOinpx71vVHB/x7x/7o/lTL2yttRtHtbuFZoHxuRuhwcj9QKAJ6Kwv+EM8Of8AQItvyNH/AAhnhz/oEW35GgDdqlqN7cWKI8Gm3N8pJ3rbsgZB64dlz+BzWf8A8IZ4c/6BFt+RqlqPg6wCIumaHpbOxO97l3UIPUKoO76ZH1oAur4v0ZWCXs8mnSE426hC1uM+gZwFP4E1tRSxzxLJDIkkbDKsjAg/iK4hfhraXJzqFzGF7xWFqsKH2Jfe35MK3tB8HaB4ZeSTSNOS3llADyFmdm/FiT3oA3K8p+KllrypaXcutRnSTqVuqWCWwU5LcFnzk4I6Yr1auC+LX/IsWH/YVtv/AEKgDtb6O6lsZo7KdILlkIildN6o3YlcjP515z4MtdUs/iv4hh1jUxqN2LGEmYRCIBSchQoJwBXp1cFo/wDyWnxH/wBg63oA72sfXf8Aj60L/sKQ/wAmrYrH13/j60L/ALCkP8moA7GiiigAqFrS2e5W5a3iNwowspQbgPQHrU1FABRRRQAVXnsbS6kSS4tYJnT7jSRhiv0J6VYooAKKKKACiiigAooooAK5nxn/AKvRP+wrD/6C9dNXM+M/9Xon/YVh/wDQXoAu0UUUAFFFFABRRRQA2SNJY2jkRXRhgqwyCPpTILaC1j8u3hjhjznbGgUfkKlooAheztZLhbiS2heZPuyMgLL9D1qaiigAooooAKKKKACiiigAooooAKKKKACiiigArH13/j60L/sKQ/yatisfXf8Aj60L/sKQ/wAmoA7GiiigAooooAKKKKACiiigAooooAKKKKACiiigArmfGf8Aq9E/7CsP/oL101cz4z/1eif9hWH/ANBegC7RRWfr1xLa+HdSuIHKTRWsrow/hYKSDQBoUV47PJ4sHw0h8Zv4qulvYrdJ1tUjQQMmQMMMZZiOSc/hVzW28T6DpOleKZPEtzPPPcwC5sdii22SEfKq4yMZxkkmgD0RdZRvEb6N9kug624uPtBT90RnG3dn73tWlXIJqt8fivPpRuG+wrpInEOBgP5mN3r0rmPC1v4o8ZeG5r+68VXtj5U00duLVUBcqx+aQ45HbAxwKAPVqK8pj8Xa3c/D/wAM6i93svbjVo7S4kRQPNQOynIxxkAdK6vxrql7ps3hxbO4aEXWswW820D542Jypz60Ab6arYyavLpSXCm+iiEzw4OQhOAfTrVyvL7LS7tPjXqcja1ebYrGO4YbUw6Fz+6PH3R+fvWXaeJT4q+1apd/EKHw+POdLKwiliXYinAaQNyxPXFAHslFcl8O/Etx4m8OyS3ksM13aXD2ss8GNkxXGHGOMEEHiumvb22060e6vJ0ggTG6RzgDJwP1IoAnorC/4TPw1/0GrP8A7+Uf8Jn4a/6DVn/38oA3aKwv+Ez8Nf8AQas/+/lUtS8ZacURtL17Rw4J3pdFiHHoGU/L9cGgDqqK4VfiZY2x26hBDjvLY3aToPwbY/5Ka3tC8YaB4mZ00jUoriSMZePDI6/VWANAG5XF6n8TdF0zV7vTGs9VuJ7RwkptbQyKCRnGQfeu0ry3Q7Px9Y6j4iudN0rS4ku9RknDalK4aZeihAnQYHUnvQB21h4s0y98PS65L59jYxFvMa9jMTLjvj+XrWZpnxK8O6pqNvZo93btdHFtJdWzRRzn/YY8H9K5XxJrV342+HMs8emypd6ZqKDUtPU7yRG2XA9R0P4VT+Ivj7w7rvgk2+iyvd3aSRTKEgZfsu1h8zEgBf7v40Aey1j67/x9aF/2FIf5NWlaSNLZQSP9541Y/Uis3Xf+PrQv+wpD/JqAOxooooAKKKKACiiigAooooAKKKKACiiigAooooAK5nxn/q9E/wCwrD/6C9dNXM+M/wDV6J/2FYf/AEF6ALtZ+u20t54f1G1t03zTWskca5AyxUgDJ461oUUAcDc+G9Wk+Co8PraZ1T7AkPkeYn3wRkbs7f1qz4x0HU9V8D6dp1lbebdwzWrPH5irgIRu5JA4xXa0UAcmmjagPilPrJt/+Je2lC3E29eZN+cYznp3xik+H2i6hofhA2Oo2/k3P2id9m9W4ZyQcqSOhrraKAPJz4Q8Q2/ww0y0jsFbVNO1L7b9kMq/vFEjNgMCRkgg9avaqfE/i/UvD0yeHJ9OsdP1OG5uPtc0YkbB5KqD91Rn3ORgV6VRQBws1pqVj8WJdQ/sq5udO1CwjtftEJUrEwYkl8nIGKwtM03VPBsNzo7+CV1yFZneyvIRF8yschZN3KkZ616vRQBg+ELHUrHQUGrpax30rtJJFaxKiR56L8owcDvW9RRQAUUUUAFUtSsrm9SNLfU7ixAJ3tAiFmHpl1YD8qu0UAYS+ENHdg99FLqTg5zqEzTjPsjEqPwArahhit4ligiSKNeAiKFA/AU+igArgYda8aeH5ruy1DQbnXlMrNZ3tq8aBkPRXHG0j1xXfUUAefaT4c8T6V4S1e6tJre38SaldNfNH8rxqSR+6yeOgxn1NU9Sj8R+Obe20W48NS6LZtMkupXM0qEOFOdsYXlskda9NooARVCqFUYAGAKyNd/4+tC/7CkP8mrYrH13/j60L/sKQ/yagDsaKKKACiiigAooooAKKKKACiiigAooooAKKKKACuZ8Z/6vRP8AsKw/+gvXTVzPjP8A1eif9hWH/wBBegC7RRVe6v7OxCm8u4LcMcKZpAmfpk0AWKKRHWRA6MGVhkMDkEVXh1CyuJ3ggvLeWZPvxpIGZfqAeKALNFRXF1b2cJmuZ4oIhwXlcKPzNOhmiuIllhkSSNhlXRgQfoRQA+iq0eo2Mt01rHeW73C/eiWVS4+ozmpnmiRtryIrYLYLAHA6mgB9FQWt9aXys1pdQXCqcMYpA4B98Ukt/ZwXKW0t3BHO/wByJ5AGb6DOTQBYormvBOv3fiLTL65vEhV4L+e2URKQNqHAzknmuloAKKKKACiiigAooooAKKK4AeMfE+t3d+/hfQ7O40+ymaAz3dyUad1+8EAHH1NAHf0Vx9n8QrCbwJP4nuLeWAWxaOa1Jyyyg42A98kjn3rOHjfxHpT2F54k0C2s9JvpFiWWC4LyWxb7vmAjH5dP0oA9BrH13/j60L/sKQ/yatisfXf+PrQv+wpD/JqAOxooooAKKKKACiiigAooooAKKKKACiiigAooooAK5nxn/q9E/wCwrD/6C9dNXM+M/wDV6J/2FYf/AEF6ALteT+IdHks/HOp6tr3hS58R6XcxottJbqJmtVA+ZfKJ9ecivWK4m98K+IrPxDfap4b12C3jvyrT2t7AZUVwMbkIPH0oA46/1TTtM+E81v4UvtQkt7jUVtWjk4ntQ5y0Sg4xwMDJ79ag1bR4I9LgPhjwDr2maxaOj214I0UkgjO8iQlgRnqDXb23w5t28M6npup38l1e6nP9quLxEEZWbgqyKOmMfzqu/g3xTqy29hr/AInhuNKhdXdLa28qW52ngO2eB64oApRWEHjL4l6hBr1uJ7bSbODybKXlBJIMsxXoT2qDxPo3/CA+FfEtzoN+0EF75Qjs0GBaMzBWdTnjIPoMcV0mueEtQfxAviDw5qcen6iYRbzpND5kU6DpuGcgj1FV7L4eiey1o+Ir86jqGsosdxNHH5axqv3VQc4wec+1AGN4k+H2gaP8Pp7zTrVbbUtPtxcxX6EiUyKM5Ld88/nVXUYE8WeMvA/9ohjFd6VJNcRKSBJ8qsVOOxOMitWXwL4p1HTo9C1XxVFNoabVcRWu24mjXojNnA6Dmukm8Kxv4p0fWYbgRRabayWyWwjyGDAAfNnjGPQ0AclLplh4W+K1sdGtI7OK40eeSaCAbUdkOVO0cZqHwN4K0TxR4QGt65arfanqjSSy3MjHfGdxACnPy4x2rt7vw2LrxlZeIDdYFtaSWxtzHnfvOc7s8fTFc3b+BvEeim50/wAPeJYrTRbiRnEM1r5kttuPzCNs/lnpQAnwdhNv4RvYTKZTHqdwhkY5LYIGSfeu7vbh7S0eaO1nunXGIYNu9uccbmA9+T2rE8GeFE8HaLJpkd490jXDzK7ptYBscHk5PHXv6V0VAGF/wkF7/wBCtrX523/x6j/hIL3/AKFbWvztv/j1btFAGF/wkF7/ANCtrX523/x6s7Ur7VLyRJrfTPE1hIi4/cmzZG/3leQg/hg+9ddWdqOhaZq0qSajaJdBBgRzEtH+KE7SfcigDz9/iNrWn3X2YaX/AGxIDgwweWk6/VY5Zcn/AICtd5oWr3OsWnn3GjX+mN/cu9gJ+gVifzArQt7a3tIRDbQRQxL0SNAqj8BUtAAeBk9K5jU7W/vdGUeCNS0qyDO5eVYVkRj3xt4Bz1ODXT1wMPgzxLoMt3B4Y8QWttptzK0wt7u18w27N12EHkexoA4W4khT4U/YPs7wz2OvRw6lvk3+ZJvyz5wOCcdq7/4ubP8AhWuoZxndFs/3vMXGKs2nw90+Hwbe+H7q4luWvnaa5u2ADvMTneB2wQMD2qiPBGv6o9haeI9fgvdKsZFlWGG28t7hl+75hJPT260AdxZ7vsVvv+/5a7vris3Xf+PrQv8AsKQ/yatisfXf+PrQv+wpD/JqAOxooooAKKKKACiiigAooooAKKKKACiiigAooooAK5nxn/q9E/7CsP8A6C9dNXM+M/8AV6J/2FYf/QXoAu0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWPrv/H1oX/YUh/k1bFY+u/8fWhf9hSH+TUAdjRRRQB//9k="
              }
            },
            {
              "id": "/page/173/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-173-0\"></span>Figure 16.1: Object diagram.</p>",
              "polygon": [
                [
                  221.431640625,
                  158.8447265625
                ],
                [
                  346.939453125,
                  158.8447265625
                ],
                [
                  346.939453125,
                  169.1529541015625
                ],
                [
                  221.431640625,
                  169.1529541015625
                ]
              ],
              "bbox": [
                221.431640625,
                158.8447265625,
                346.939453125,
                169.1529541015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "4": "/page/172/SectionHeader/11"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": null
        },
        {
          "id": "/page/173/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a simple prototype of add_time:</p>",
          "polygon": [
            [
              85.24072265625,
              192.1337890625
            ],
            [
              261.1126708984375,
              192.1337890625
            ],
            [
              261.1126708984375,
              202.2459716796875
            ],
            [
              85.24072265625,
              202.2459716796875
            ]
          ],
          "bbox": [
            85.24072265625,
            192.1337890625,
            261.1126708984375,
            202.2459716796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Code/4",
          "block_type": "Code",
          "html": "<pre>def add_time(t1, t2):\n    sum = Time()\n    sum.hour = t1.hour + t2.hour\n    sum.minute = t1.minute + t2.minute\n    sum.second = t1.second + t2.second\n    return sum</pre>",
          "polygon": [
            [
              86.40000915527344,
              208.7637939453125
            ],
            [
              285.1583557128906,
              208.7637939453125
            ],
            [
              285.1583557128906,
              279.69842529296875
            ],
            [
              86.40000915527344,
              279.69842529296875
            ]
          ],
          "bbox": [
            86.40000915527344,
            208.7637939453125,
            285.1583557128906,
            279.69842529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The function creates a new Time object, initializes its attributes, and returns a reference to the new object. This is called a <b>pure function</b> because it does not modify any of the objects passed to it as arguments and it has no effect, like displaying a value or getting user input, other than returning a value.</p>",
          "polygon": [
            [
              85.46484375,
              286.3658447265625
            ],
            [
              482.607421875,
              286.3658447265625
            ],
            [
              482.607421875,
              333.0610046386719
            ],
            [
              85.46484375,
              333.0610046386719
            ]
          ],
          "bbox": [
            85.46484375,
            286.3658447265625,
            482.607421875,
            333.0610046386719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To test this function, I'll create two Time objects: start contains the start time of a movie, like <i>Monty Python and the Holy Grail</i>, and duration contains the run time of the movie, which is one hour 35 minutes.</p>",
          "polygon": [
            [
              85.46484375,
              343.54986572265625
            ],
            [
              482.40179443359375,
              343.54986572265625
            ],
            [
              482.40179443359375,
              378.051025390625
            ],
            [
              85.46484375,
              378.051025390625
            ]
          ],
          "bbox": [
            85.46484375,
            343.54986572265625,
            482.40179443359375,
            378.051025390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">add_time figures out when the movie will be done.</p>",
          "polygon": [
            [
              85.166015625,
              388.5398864746094
            ],
            [
              311.0869140625,
              388.5398864746094
            ],
            [
              311.0869140625,
              398.65203857421875
            ],
            [
              85.166015625,
              398.65203857421875
            ]
          ],
          "bbox": [
            85.166015625,
            388.5398864746094,
            311.0869140625,
            398.65203857421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; start = Time()\n&gt;&gt;&gt; start.hour = 9\n&gt;&gt;&gt; start.minute = 45\n&gt;&gt;&gt; start.second = 0\n&gt;&gt;&gt; duration = Time()\n&gt;&gt;&gt; duration.hour = 1\n&gt;&gt;&gt; duration.minute = 35\n&gt;&gt;&gt; duration.second = 0\n&gt;&gt;&gt; done = add_time(start, duration)\n&gt;&gt;&gt; print_time(done)\n10:80:00</pre>",
          "polygon": [
            [
              86.28662109375,
              405.1698913574219
            ],
            [
              274.7030944824219,
              405.1698913574219
            ],
            [
              274.7030944824219,
              561.4645233154297
            ],
            [
              86.28662109375,
              561.4645233154297
            ]
          ],
          "bbox": [
            86.28662109375,
            405.1698913574219,
            274.7030944824219,
            561.4645233154297
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The result, 10:80:00 might not be what you were hoping for. The problem is that this function does not deal with cases where the number of seconds or minutes adds up to more than sixty. When that happens, we have to \"carry\" the extra seconds into the minute column or the extra minutes into the hour column.</p>",
          "polygon": [
            [
              85.6142578125,
              567.703125
            ],
            [
              483.50390625,
              567.703125
            ],
            [
              483.50390625,
              614.8270874023438
            ],
            [
              85.6142578125,
              614.8270874023438
            ]
          ],
          "bbox": [
            85.6142578125,
            567.703125,
            483.50390625,
            614.8270874023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's an improved version:</p>",
          "polygon": [
            [
              85.39013671875,
              625.32421875
            ],
            [
              212.466796875,
              625.32421875
            ],
            [
              212.466796875,
              635.4280853271484
            ],
            [
              85.39013671875,
              635.4280853271484
            ]
          ],
          "bbox": [
            85.39013671875,
            625.32421875,
            212.466796875,
            635.4280853271484
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/173/Code/11",
          "block_type": "Code",
          "html": "<pre>def add_time(t1, t2):\n    sum = Time()\n    sum.hour = t1.hour + t2.hour\n    sum.minute = t1.minute + t2.minute\n    sum.second = t1.second + t2.second</pre>",
          "polygon": [
            [
              85.98779296875,
              641.9459381103516
            ],
            [
              285.1583557128906,
              641.9459381103516
            ],
            [
              285.1583557128906,
              701.12109375
            ],
            [
              85.98779296875,
              701.12109375
            ]
          ],
          "bbox": [
            85.98779296875,
            641.9459381103516,
            285.1583557128906,
            701.12109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/172/SectionHeader/1",
        "4": "/page/172/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/174/Page/172",
      "block_type": "Page",
      "html": "<content-ref src='/page/174/PageHeader/0'></content-ref><content-ref src='/page/174/PageHeader/15'></content-ref><content-ref src='/page/174/Code/1'></content-ref><content-ref src='/page/174/Text/2'></content-ref><content-ref src='/page/174/Text/3'></content-ref><content-ref src='/page/174/SectionHeader/4'></content-ref><content-ref src='/page/174/Text/5'></content-ref><content-ref src='/page/174/Text/6'></content-ref><content-ref src='/page/174/Code/7'></content-ref><content-ref src='/page/174/Text/8'></content-ref><content-ref src='/page/174/Text/9'></content-ref><content-ref src='/page/174/Text/10'></content-ref><content-ref src='/page/174/Text/11'></content-ref><content-ref src='/page/174/Text/12'></content-ref><content-ref src='/page/174/Text/13'></content-ref><content-ref src='/page/174/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/174/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.72021484375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.72021484375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.72021484375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/174/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              61.05322265625
            ],
            [
              525.638671875,
              61.05322265625
            ],
            [
              525.638671875,
              70.43115234375
            ],
            [
              510.099609375,
              70.43115234375
            ]
          ],
          "bbox": [
            510.099609375,
            61.05322265625,
            525.638671875,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/174/Code/1",
          "block_type": "Code",
          "html": "<pre>if sum.second &gt;= 60:\n    sum.second -= 60\n    sum.minute += 1\nif sum.minute &gt;= 60:\n    sum.minute -= 60\n    sum.hour += 1</pre>",
          "polygon": [
            [
              149.115234375,
              100.8797607421875
            ],
            [
              258.78515625,
              100.8797607421875
            ],
            [
              258.78515625,
              186.205078125
            ],
            [
              149.115234375,
              186.205078125
            ]
          ],
          "bbox": [
            149.115234375,
            100.8797607421875,
            258.78515625,
            186.205078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">return sum</p>",
          "polygon": [
            [
              148.74169921875,
              198.4346923828125
            ],
            [
              202.81964111328125,
              198.4346923828125
            ],
            [
              202.81964111328125,
              208.39727783203125
            ],
            [
              148.74169921875,
              208.39727783203125
            ]
          ],
          "bbox": [
            148.74169921875,
            198.4346923828125,
            202.81964111328125,
            208.39727783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although this function is correct, it is starting to get big. We will see a shorter alternative later.</p>",
          "polygon": [
            [
              128.197265625,
              212.990234375
            ],
            [
              525.6033935546875,
              212.990234375
            ],
            [
              525.6033935546875,
              235.51171875
            ],
            [
              128.197265625,
              235.51171875
            ]
          ],
          "bbox": [
            128.197265625,
            212.990234375,
            525.6033935546875,
            235.51171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/172/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/174/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-174-0\"></span><b>16.3 Modifiers</b></h4>",
          "polygon": [
            [
              128.3466796875,
              262.001953125
            ],
            [
              232.80654907226562,
              262.001953125
            ],
            [
              232.80654907226562,
              276.3709716796875
            ],
            [
              128.3466796875,
              276.3709716796875
            ]
          ],
          "bbox": [
            128.3466796875,
            262.001953125,
            232.80654907226562,
            276.3709716796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Sometimes it is useful for a function to modify the objects it gets as parameters. In that case, the changes are visible to the caller. Functions that work this way are called <b>modifiers</b>.</p>",
          "polygon": [
            [
              129.2431640625,
              286.751953125
            ],
            [
              525.6033325195312,
              286.751953125
            ],
            [
              525.6033325195312,
              309.1129150390625
            ],
            [
              129.2431640625,
              309.1129150390625
            ]
          ],
          "bbox": [
            129.2431640625,
            286.751953125,
            525.6033325195312,
            309.1129150390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">increment, which adds a given number of seconds to a Time object, can be written naturally as a modifier. Here is a rough draft:</p>",
          "polygon": [
            [
              129.2431640625,
              317.302734375
            ],
            [
              525.6021118164062,
              317.302734375
            ],
            [
              525.6021118164062,
              339.6849060058594
            ],
            [
              129.2431640625,
              339.6849060058594
            ]
          ],
          "bbox": [
            129.2431640625,
            317.302734375,
            525.6021118164062,
            339.6849060058594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Code/7",
          "block_type": "Code",
          "html": "<pre>def increment(time, seconds):\n    time.second += seconds\n    if time.second &gt;= 60:\n        time.second -= 60\n        time.minute += 1\n    if time.minute &gt;= 60:\n        time.minute -= 60\n        time.hour += 1</pre>",
          "polygon": [
            [
              129.5999755859375,
              343.9777526855469
            ],
            [
              281.2904968261719,
              343.9777526855469
            ],
            [
              281.2904968261719,
              467.15625
            ],
            [
              129.5999755859375,
              467.15625
            ]
          ],
          "bbox": [
            129.5999755859375,
            343.9777526855469,
            281.2904968261719,
            467.15625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line performs the basic operation; the remainder deals with the special cases we saw before.</p>",
          "polygon": [
            [
              129.2431640625,
              468.2823486328125
            ],
            [
              525.6033325195312,
              468.2823486328125
            ],
            [
              525.6033325195312,
              490.4389343261719
            ],
            [
              129.2431640625,
              490.4389343261719
            ]
          ],
          "bbox": [
            129.2431640625,
            468.2823486328125,
            525.6033325195312,
            490.4389343261719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Is this function correct? What happens if the parameter seconds is much greater than sixty?</p>",
          "polygon": [
            [
              128.49609375,
              498.70379638671875
            ],
            [
              525.6008911132812,
              498.70379638671875
            ],
            [
              525.6008911132812,
              508.8159484863281
            ],
            [
              128.49609375,
              508.8159484863281
            ]
          ],
          "bbox": [
            128.49609375,
            498.70379638671875,
            525.6008911132812,
            508.8159484863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In that case, it is not enough to carry once; we have to keep doing it until time.second is less than sixty. One solution is to replace the if statements with while statements. That would make the function correct, but not very efficient.</p>",
          "polygon": [
            [
              128.3466796875,
              517.04296875
            ],
            [
              525.6044311523438,
              517.04296875
            ],
            [
              525.6044311523438,
              551.5819396972656
            ],
            [
              128.3466796875,
              551.5819396972656
            ]
          ],
          "bbox": [
            128.3466796875,
            517.04296875,
            525.6044311523438,
            551.5819396972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 16.3.</b> <i>Write a correct version of</i> increment <i>that doesn't contain any loops.</i></p>",
          "polygon": [
            [
              128.6455078125,
              553.6416473388672
            ],
            [
              470.35546875,
              553.6416473388672
            ],
            [
              470.35546875,
              563.6798400878906
            ],
            [
              128.6455078125,
              563.6798400878906
            ]
          ],
          "bbox": [
            128.6455078125,
            553.6416473388672,
            470.35546875,
            563.6798400878906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Anything that can be done with modifiers can also be done with pure functions. In fact, some programming languages only allow pure functions. There is some evidence that programs that use pure functions are faster to develop and less error-prone than programs that use modifiers. But modifiers are convenient at times, and functional programs tend to be less efficient.</p>",
          "polygon": [
            [
              127.599609375,
              571.95703125
            ],
            [
              525.638671875,
              571.95703125
            ],
            [
              525.638671875,
              630.9309539794922
            ],
            [
              127.599609375,
              630.9309539794922
            ]
          ],
          "bbox": [
            127.599609375,
            571.95703125,
            525.638671875,
            630.9309539794922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In general, I recommend that you write pure functions whenever it is reasonable and resort to modifiers only if there is a compelling advantage. This approach might be called a <b>functional programming style</b>.</p>",
          "polygon": [
            [
              128.197265625,
              639.3463592529297
            ],
            [
              525.638671875,
              639.3463592529297
            ],
            [
              525.638671875,
              673.6969680786133
            ],
            [
              128.197265625,
              673.6969680786133
            ]
          ],
          "bbox": [
            128.197265625,
            639.3463592529297,
            525.638671875,
            673.6969680786133
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/174/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 16.4.</b> <i>Write a \"pure\" version of</i> increment <i>that creates and returns a new Time object</i> <i>rather than modifying the parameter.</i></p>",
          "polygon": [
            [
              127.7490234375,
              675.7566680908203
            ],
            [
              525.6038818359375,
              675.7566680908203
            ],
            [
              525.6038818359375,
              697.9132690429688
            ],
            [
              127.7490234375,
              697.9132690429688
            ]
          ],
          "bbox": [
            127.7490234375,
            675.7566680908203,
            525.6038818359375,
            697.9132690429688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/172/SectionHeader/1",
        "4": "/page/174/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/175/Page/205",
      "block_type": "Page",
      "html": "<content-ref src='/page/175/PageHeader/0'></content-ref><content-ref src='/page/175/PageHeader/17'></content-ref><content-ref src='/page/175/SectionHeader/1'></content-ref><content-ref src='/page/175/Text/2'></content-ref><content-ref src='/page/175/Text/3'></content-ref><content-ref src='/page/175/Text/4'></content-ref><content-ref src='/page/175/Text/5'></content-ref><content-ref src='/page/175/Text/6'></content-ref><content-ref src='/page/175/Text/7'></content-ref><content-ref src='/page/175/Code/8'></content-ref><content-ref src='/page/175/Text/9'></content-ref><content-ref src='/page/175/Code/10'></content-ref><content-ref src='/page/175/Text/11'></content-ref><content-ref src='/page/175/Text/12'></content-ref><content-ref src='/page/175/Code/13'></content-ref><content-ref src='/page/175/Text/14'></content-ref><content-ref src='/page/175/Text/15'></content-ref><content-ref src='/page/175/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/175/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.69970703125
            ],
            [
              482.90625,
              59.69970703125
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.69970703125,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/175/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.6142578125,
              59.8447265625
            ],
            [
              102.0498046875,
              59.8447265625
            ],
            [
              102.0498046875,
              70.4794921875
            ],
            [
              85.6142578125,
              70.4794921875
            ]
          ],
          "bbox": [
            85.6142578125,
            59.8447265625,
            102.0498046875,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "4": "/page/174/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/175/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-175-0\"></span><b>16.4 Prototyping versus planning</b></h3>",
          "polygon": [
            [
              84.94189453125,
              85.271484375
            ],
            [
              314.666015625,
              85.271484375
            ],
            [
              314.666015625,
              100.353515625
            ],
            [
              84.94189453125,
              100.353515625
            ]
          ],
          "bbox": [
            84.94189453125,
            85.271484375,
            314.666015625,
            100.353515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The development plan I am demonstrating is called \"prototype and patch.\" For each function, I wrote a prototype that performed the basic calculation and then tested it, patching errors along the way.</p>",
          "polygon": [
            [
              85.6142578125,
              109.44140625
            ],
            [
              483.50390625,
              109.44140625
            ],
            [
              483.50390625,
              145.576904296875
            ],
            [
              85.6142578125,
              145.576904296875
            ]
          ],
          "bbox": [
            85.6142578125,
            109.44140625,
            483.50390625,
            145.576904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This approach can be effective, especially if you don't yet have a deep understanding of the problem. But incremental corrections can generate code that is unnecessarily complicated—since it deals with many special cases—and unreliable—since it is hard to know if you have found all the errors.</p>",
          "polygon": [
            [
              85.763671875,
              152.6572265625
            ],
            [
              483.50390625,
              152.6572265625
            ],
            [
              483.50390625,
              200.87591552734375
            ],
            [
              85.763671875,
              200.87591552734375
            ]
          ],
          "bbox": [
            85.763671875,
            152.6572265625,
            483.50390625,
            200.87591552734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An alternative is <b>planned development</b>, in which high-level insight into the problem can make the programming much easier. In this case, the insight is that a Time object is really a three-digit number in base 60 (see <a href=\"http://en.wikipedia.org/wiki/Sexagesimal\">http://en.wikipedia.org/wiki/Sexagesimal</a>.)! The second attribute is the \"ones column,\" the minute attribute is the \"sixties column,\" and the hour attribute is the \"thirty-six hundreds column.\"</p>",
          "polygon": [
            [
              85.763671875,
              207.66796875
            ],
            [
              483.50390625,
              207.66796875
            ],
            [
              483.50390625,
              268.36993408203125
            ],
            [
              85.763671875,
              268.36993408203125
            ]
          ],
          "bbox": [
            85.763671875,
            207.66796875,
            483.50390625,
            268.36993408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When we wrote add_time and increment, we were effectively doing addition in base 60, which is why we had to carry from one column to the next.</p>",
          "polygon": [
            [
              85.763671875,
              274.95703125
            ],
            [
              483.205078125,
              274.95703125
            ],
            [
              483.205078125,
              299.28192138671875
            ],
            [
              85.763671875,
              299.28192138671875
            ]
          ],
          "bbox": [
            85.763671875,
            274.95703125,
            483.205078125,
            299.28192138671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This observation suggests another approach to the whole problem—we can convert Time objects to integers and take advantage of the fact that the computer knows how to do integer arithmetic.</p>",
          "polygon": [
            [
              85.6142578125,
              305.89453125
            ],
            [
              484.1015625,
              305.89453125
            ],
            [
              484.1015625,
              342.3869323730469
            ],
            [
              85.6142578125,
              342.3869323730469
            ]
          ],
          "bbox": [
            85.6142578125,
            305.89453125,
            484.1015625,
            342.3869323730469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a function that converts Times to integers:</p>",
          "polygon": [
            [
              85.39013671875,
              349.59375
            ],
            [
              304.505859375,
              349.59375
            ],
            [
              304.505859375,
              361.10394287109375
            ],
            [
              85.39013671875,
              361.10394287109375
            ]
          ],
          "bbox": [
            85.39013671875,
            349.59375,
            304.505859375,
            361.10394287109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Code/8",
          "block_type": "Code",
          "html": "<pre>def time_to_int(time):\n    minutes = time.hour * 60 + time.minute\n    seconds = minutes * 60 + time.second\n    return seconds</pre>",
          "polygon": [
            [
              85.83837890625,
              365.7367858886719
            ],
            [
              306.0797424316406,
              365.7367858886719
            ],
            [
              306.0797424316406,
              412.2823791503906
            ],
            [
              85.83837890625,
              412.2823791503906
            ]
          ],
          "bbox": [
            85.83837890625,
            365.7367858886719,
            306.0797424316406,
            412.2823791503906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And here is the function that converts integers to Times (recall that divmod divides the first argument by the second and returns the quotient and remainder as a tuple).</p>",
          "polygon": [
            [
              85.0166015625,
              415.3359375
            ],
            [
              482.90625,
              415.3359375
            ],
            [
              482.90625,
              439.3719482421875
            ],
            [
              85.0166015625,
              439.3719482421875
            ]
          ],
          "bbox": [
            85.0166015625,
            415.3359375,
            482.90625,
            439.3719482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Code/10",
          "block_type": "Code",
          "html": "<pre>def int_to_time(seconds):\n    time = Time()\n    minutes, time.second = divmod(seconds, 60)\n    time.hour, time.minute = divmod(minutes, 60)\n    return time</pre>",
          "polygon": [
            [
              86.39996337890625,
              442.79296875
            ],
            [
              337.4718933105469,
              442.79296875
            ],
            [
              337.4718933105469,
              502.744384765625
            ],
            [
              86.39996337890625,
              502.744384765625
            ]
          ],
          "bbox": [
            86.39996337890625,
            442.79296875,
            337.4718933105469,
            502.744384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You might have to think a bit, and run some tests, to convince yourself that these functions are correct. One way to test them is to check that time_to_int(int_to_time(x)) == x for many values of x. This is an example of a consistency check.</p>",
          "polygon": [
            [
              85.763671875,
              505.828125
            ],
            [
              482.607421875,
              505.828125
            ],
            [
              482.607421875,
              542.0279541015625
            ],
            [
              85.763671875,
              542.0279541015625
            ]
          ],
          "bbox": [
            85.763671875,
            505.828125,
            482.607421875,
            542.0279541015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Once you are convinced they are correct, you can use them to rewrite add_time:</p>",
          "polygon": [
            [
              85.46484375,
              549.52734375
            ],
            [
              437.783203125,
              549.52734375
            ],
            [
              437.783203125,
              560.7449493408203
            ],
            [
              85.46484375,
              560.7449493408203
            ]
          ],
          "bbox": [
            85.46484375,
            549.52734375,
            437.783203125,
            560.7449493408203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Code/13",
          "block_type": "Code",
          "html": "<pre>def add_time(t1, t2):\n    seconds = time_to_int(t1) + time_to_int(t2)\n    return int_to_time(seconds)</pre>",
          "polygon": [
            [
              86.39999389648438,
              564.22265625
            ],
            [
              336.48046875,
              564.22265625
            ],
            [
              336.48046875,
              600.57421875
            ],
            [
              86.39999389648438,
              600.57421875
            ]
          ],
          "bbox": [
            86.39999389648438,
            564.22265625,
            336.48046875,
            600.57421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This version is shorter than the original, and easier to verify. <b>Exercise 16.5.</b> <i>Rewrite</i> increment <i>using</i> time_to_int <i>and</i> int_to_time<i>.</i></p>",
          "polygon": [
            [
              85.763671875,
              604.0546875
            ],
            [
              397.44140625,
              604.0546875
            ],
            [
              397.44140625,
              626.7218475341797
            ],
            [
              85.763671875,
              626.7218475341797
            ]
          ],
          "bbox": [
            85.763671875,
            604.0546875,
            397.44140625,
            626.7218475341797
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In some ways, converting from base 60 to base 10 and back is harder than just dealing with times. Base conversion is more abstract; our intuition for dealing with time values is better.</p>",
          "polygon": [
            [
              85.9130859375,
              633.83203125
            ],
            [
              482.90625,
              633.83203125
            ],
            [
              482.90625,
              657.7299652099609
            ],
            [
              85.9130859375,
              657.7299652099609
            ]
          ],
          "bbox": [
            85.9130859375,
            633.83203125,
            482.90625,
            657.7299652099609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/175/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if we have the insight to treat times as base 60 numbers and make the investment of writing the conversion functions (time_to_int and int_to_time), we get a program that is shorter, easier to read and debug, and more reliable.</p>",
          "polygon": [
            [
              86.2119140625,
              664.76953125
            ],
            [
              482.90625,
              664.76953125
            ],
            [
              482.90625,
              700.8349761962891
            ],
            [
              86.2119140625,
              700.8349761962891
            ]
          ],
          "bbox": [
            86.2119140625,
            664.76953125,
            482.90625,
            700.8349761962891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/172/SectionHeader/1",
        "3": "/page/175/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/176/Page/180",
      "block_type": "Page",
      "html": "<content-ref src='/page/176/PageHeader/0'></content-ref><content-ref src='/page/176/PageHeader/16'></content-ref><content-ref src='/page/176/Text/1'></content-ref><content-ref src='/page/176/Text/2'></content-ref><content-ref src='/page/176/SectionHeader/3'></content-ref><content-ref src='/page/176/Text/4'></content-ref><content-ref src='/page/176/Text/5'></content-ref><content-ref src='/page/176/Text/6'></content-ref><content-ref src='/page/176/Code/7'></content-ref><content-ref src='/page/176/Text/8'></content-ref><content-ref src='/page/176/Code/9'></content-ref><content-ref src='/page/176/Text/10'></content-ref><content-ref src='/page/176/Code/11'></content-ref><content-ref src='/page/176/Text/12'></content-ref><content-ref src='/page/176/SectionHeader/13'></content-ref><content-ref src='/page/176/Text/14'></content-ref><content-ref src='/page/176/ListItem/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/176/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.2431640625,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.2431640625,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.2431640625,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/176/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.501953125,
              61.05322265625
            ],
            [
              525.638671875,
              61.05322265625
            ],
            [
              525.638671875,
              70.43115234375
            ],
            [
              509.501953125,
              70.43115234375
            ]
          ],
          "bbox": [
            509.501953125,
            61.05322265625,
            525.638671875,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is also easier to add features later. For example, imagine subtracting two Times to find the duration between them. The naive approach would be to implement subtraction with borrowing. Using the conversion functions would be easier and more likely to be correct.</p>",
          "polygon": [
            [
              127.599609375,
              88.31689453125
            ],
            [
              525.603271484375,
              88.31689453125
            ],
            [
              525.603271484375,
              123.1868896484375
            ],
            [
              127.599609375,
              123.1868896484375
            ]
          ],
          "bbox": [
            127.599609375,
            88.31689453125,
            525.603271484375,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Ironically, sometimes making a problem harder (or more general) makes it easier (because there are fewer special cases and fewer opportunities for error).</p>",
          "polygon": [
            [
              129.09375,
              132.1611328125
            ],
            [
              526.53515625,
              132.1611328125
            ],
            [
              526.53515625,
              154.89593505859375
            ],
            [
              129.09375,
              154.89593505859375
            ]
          ],
          "bbox": [
            129.09375,
            132.1611328125,
            526.53515625,
            154.89593505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/176/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-176-0\"></span><b>16.5 Debugging</b></h4>",
          "polygon": [
            [
              127.7490234375,
              183.3677978515625
            ],
            [
              243.3955078125,
              183.3677978515625
            ],
            [
              243.3955078125,
              197.7139892578125
            ],
            [
              127.7490234375,
              197.7139892578125
            ]
          ],
          "bbox": [
            127.7490234375,
            183.3677978515625,
            243.3955078125,
            197.7139892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A Time object is well-formed if the values of minute and second are between 0 and 60 (including 0 but not 60) and if hour is positive. hour and minute should be integral values, but we might allow second to have a fraction part.</p>",
          "polygon": [
            [
              128.794921875,
              209.21484375
            ],
            [
              525.6015625,
              209.21484375
            ],
            [
              525.6015625,
              243.78790283203125
            ],
            [
              128.794921875,
              243.78790283203125
            ]
          ],
          "bbox": [
            128.794921875,
            209.21484375,
            525.6015625,
            243.78790283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Requirements like these are called <b>invariants</b> because they should always be true. To put it a different way, if they are not true, then something has gone wrong.</p>",
          "polygon": [
            [
              128.9443359375,
              252.9140625
            ],
            [
              525.6036376953125,
              252.9140625
            ],
            [
              525.6036376953125,
              275.49786376953125
            ],
            [
              128.9443359375,
              275.49786376953125
            ]
          ],
          "bbox": [
            128.9443359375,
            252.9140625,
            525.6036376953125,
            275.49786376953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Writing code to check your invariants can help you detect errors and find their causes. For example, you might have a function like valid_time that takes a Time object and returns False if it violates an invariant:</p>",
          "polygon": [
            [
              128.197265625,
              285.01171875
            ],
            [
              525.638671875,
              285.01171875
            ],
            [
              525.638671875,
              319.40185546875
            ],
            [
              128.197265625,
              319.40185546875
            ]
          ],
          "bbox": [
            128.197265625,
            285.01171875,
            525.638671875,
            319.40185546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Code/7",
          "block_type": "Code",
          "html": "<pre>def valid_time(time):\n    if time.hour &lt; 0 or time.minute &lt; 0 or time.second &lt; 0:\n        return False\n    if time.minute &gt;= 60 or time.second &gt;= 60:\n        return False\n    return True</pre>",
          "polygon": [
            [
              129.60003662109375,
              324.45703125
            ],
            [
              438.6796875,
              324.45703125
            ],
            [
              438.6796875,
              395.768310546875
            ],
            [
              129.60003662109375,
              395.768310546875
            ]
          ],
          "bbox": [
            129.60003662109375,
            324.45703125,
            438.6796875,
            395.768310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Then at the beginning of each function you could check the arguments to make sure they are valid:</p>",
          "polygon": [
            [
              127.8984375,
              401.02734375
            ],
            [
              525.603515625,
              401.02734375
            ],
            [
              525.603515625,
              423.6558837890625
            ],
            [
              127.8984375,
              423.6558837890625
            ]
          ],
          "bbox": [
            127.8984375,
            401.02734375,
            525.603515625,
            423.6558837890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Code/9",
          "block_type": "Code",
          "html": "<pre>def add_time(t1, t2):\n    if not valid_time(t1) or not valid_time(t2):\n        raise ValueError('invalid Time object in add_time')\n    seconds = time_to_int(t1) + time_to_int(t2)\n    return int_to_time(seconds)</pre>",
          "polygon": [
            [
              129.6000518798828,
              429.0877380371094
            ],
            [
              438.1184387207031,
              429.0877380371094
            ],
            [
              438.1184387207031,
              487.82733154296875
            ],
            [
              129.6000518798828,
              487.82733154296875
            ]
          ],
          "bbox": [
            129.6000518798828,
            429.0877380371094,
            438.1184387207031,
            487.82733154296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Or you could use an assert statement, which checks a given invariant and raises an exception if it fails:</p>",
          "polygon": [
            [
              128.3466796875,
              493.40875244140625
            ],
            [
              525.598388671875,
              493.40875244140625
            ],
            [
              525.598388671875,
              515.8828125
            ],
            [
              128.3466796875,
              515.8828125
            ]
          ],
          "bbox": [
            128.3466796875,
            493.40875244140625,
            525.598388671875,
            515.8828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Code/11",
          "block_type": "Code",
          "html": "<pre>def add_time(t1, t2):\n    assert valid_time(t1) and valid_time(t2)\n    seconds = time_to_int(t1) + time_to_int(t2)\n    return int_to_time(seconds)</pre>",
          "polygon": [
            [
              129.60006713867188,
              521.1467590332031
            ],
            [
              375.92578125,
              521.1467590332031
            ],
            [
              375.92578125,
              567.6923675537109
            ],
            [
              129.60006713867188,
              567.6923675537109
            ]
          ],
          "bbox": [
            129.60006713867188,
            521.1467590332031,
            375.92578125,
            567.6923675537109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">assert statements are useful because they distinguish code that deals with normal conditions from code that checks for errors.</p>",
          "polygon": [
            [
              128.9443359375,
              573.1171875
            ],
            [
              525.6021118164062,
              573.1171875
            ],
            [
              525.6021118164062,
              595.5799255371094
            ],
            [
              128.9443359375,
              595.5799255371094
            ]
          ],
          "bbox": [
            128.9443359375,
            573.1171875,
            525.6021118164062,
            595.5799255371094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/176/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-176-1\"></span><b>16.6 Glossary</b></h4>",
          "polygon": [
            [
              127.97314453125,
              624.05078125
            ],
            [
              227.22596740722656,
              624.05078125
            ],
            [
              227.22596740722656,
              638.39697265625
            ],
            [
              127.97314453125,
              638.39697265625
            ]
          ],
          "bbox": [
            127.97314453125,
            624.05078125,
            227.22596740722656,
            638.39697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/176/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>prototype and patch:</b> A development plan that involves writing a rough draft of a program, testing, and correcting errors as they are found.</p>",
          "polygon": [
            [
              128.49609375,
              646.7532196044922
            ],
            [
              525.603271484375,
              646.7532196044922
            ],
            [
              525.603271484375,
              669.0069351196289
            ],
            [
              128.49609375,
              669.0069351196289
            ]
          ],
          "bbox": [
            128.49609375,
            646.7532196044922,
            525.603271484375,
            669.0069351196289
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/176/ListItem/15",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>planned development:</b> A development plan that involves high-level insight into the problem and more planning than incremental development or prototype development.</li>",
          "polygon": [
            [
              127.599609375,
              678.3046875
            ],
            [
              525.6034545898438,
              678.3046875
            ],
            [
              525.6034545898438,
              700.8349380493164
            ],
            [
              127.599609375,
              700.8349380493164
            ]
          ],
          "bbox": [
            127.599609375,
            678.3046875,
            525.6034545898438,
            700.8349380493164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/172/SectionHeader/1",
        "3": "/page/175/SectionHeader/1",
        "4": "/page/176/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/177/Page/164",
      "block_type": "Page",
      "html": "<content-ref src='/page/177/PageHeader/0'></content-ref><content-ref src='/page/177/PageHeader/14'></content-ref><content-ref src='/page/177/ListGroup/162'></content-ref><content-ref src='/page/177/SectionHeader/5'></content-ref><content-ref src='/page/177/Text/6'></content-ref><content-ref src='/page/177/Text/7'></content-ref><content-ref src='/page/177/Text/8'></content-ref><content-ref src='/page/177/Text/9'></content-ref><content-ref src='/page/177/ListGroup/163'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/177/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.90625,
              60.71484375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/177/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              61.5849609375
            ],
            [
              101.67626953125,
              61.5849609375
            ],
            [
              101.67626953125,
              70.576171875
            ],
            [
              85.68896484375,
              70.576171875
            ]
          ],
          "bbox": [
            85.68896484375,
            61.5849609375,
            101.67626953125,
            70.576171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/177/ListGroup/162",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/177/ListItem/1'></content-ref><content-ref src='/page/177/ListItem/2'></content-ref><content-ref src='/page/177/ListItem/3'></content-ref><content-ref src='/page/177/ListItem/4'></content-ref></ul></p>",
          "polygon": [
            [
              85.0166015625,
              88.7381591796875
            ],
            [
              482.90625,
              88.7381591796875
            ],
            [
              482.90625,
              195.8739013671875
            ],
            [
              85.0166015625,
              195.8739013671875
            ]
          ],
          "bbox": [
            85.0166015625,
            88.7381591796875,
            482.90625,
            195.8739013671875
          ],
          "children": [
            {
              "id": "/page/177/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>pure function:</b> A function that does not modify any of the objects it receives as arguments. Most pure functions are fruitful.</li>",
              "polygon": [
                [
                  85.0166015625,
                  88.7381591796875
                ],
                [
                  482.90625,
                  88.7381591796875
                ],
                [
                  482.90625,
                  110.99188232421875
                ],
                [
                  85.0166015625,
                  110.99188232421875
                ]
              ],
              "bbox": [
                85.0166015625,
                88.7381591796875,
                482.90625,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/176/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/177/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>modifier:</b> A function that changes one or more of the objects it receives as arguments. Most modifiers are fruitless.</li>",
              "polygon": [
                [
                  85.166015625,
                  120.849609375
                ],
                [
                  482.607421875,
                  120.849609375
                ],
                [
                  482.607421875,
                  143.35089111328125
                ],
                [
                  85.166015625,
                  143.35089111328125
                ]
              ],
              "bbox": [
                85.166015625,
                120.849609375,
                482.607421875,
                143.35089111328125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/176/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/177/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>functional programming style:</b> A style of program design in which the majority of functions are pure.</li>",
              "polygon": [
                [
                  85.46484375,
                  152.8505859375
                ],
                [
                  482.402587890625,
                  152.8505859375
                ],
                [
                  482.402587890625,
                  175.70989990234375
                ],
                [
                  85.46484375,
                  175.70989990234375
                ]
              ],
              "bbox": [
                85.46484375,
                152.8505859375,
                482.402587890625,
                175.70989990234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/176/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/177/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>invariant:</b> A condition that should always be true during the execution of a program.</li>",
              "polygon": [
                [
                  85.3154296875,
                  185.3349609375
                ],
                [
                  463.18359375,
                  185.3349609375
                ],
                [
                  463.18359375,
                  195.8739013671875
                ],
                [
                  85.3154296875,
                  195.8739013671875
                ]
              ],
              "bbox": [
                85.3154296875,
                185.3349609375,
                463.18359375,
                195.8739013671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/176/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/176/SectionHeader/13"
          },
          "images": null
        },
        {
          "id": "/page/177/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-177-0\"></span><b>16.7 Exercises</b></h4>",
          "polygon": [
            [
              85.6142578125,
              225.21575927734375
            ],
            [
              185.7216796875,
              225.21575927734375
            ],
            [
              185.7216796875,
              239.56195068359375
            ],
            [
              85.6142578125,
              239.56195068359375
            ]
          ],
          "bbox": [
            85.6142578125,
            225.21575927734375,
            185.7216796875,
            239.56195068359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/177/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/177/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Code examples from this chapter are available from <a href=\"http://thinkpython.com/code/Time1.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/Time1.py\">Time1.py</a>; solutions to these exercises are available from <a href=\"http://thinkpython.com/code/Time1_soln.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/Time1_soln.py\">Time1_soln.py</a>.</p>",
          "polygon": [
            [
              85.46484375,
              251.75775146484375
            ],
            [
              482.607421875,
              251.75775146484375
            ],
            [
              482.607421875,
              286.2589111328125
            ],
            [
              85.46484375,
              286.2589111328125
            ]
          ],
          "bbox": [
            85.46484375,
            251.75775146484375,
            482.607421875,
            286.2589111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/177/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/177/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 16.6.</b> <i>Write a function called</i> mul_time <i>that takes a Time object and a number and returns</i> <i>a new Time object that contains the product of the original Time and the number.</i></p>",
          "polygon": [
            [
              85.6142578125,
              287.912109375
            ],
            [
              482.3958435058594,
              287.912109375
            ],
            [
              482.3958435058594,
              310.4752197265625
            ],
            [
              85.6142578125,
              310.4752197265625
            ]
          ],
          "bbox": [
            85.6142578125,
            287.912109375,
            482.3958435058594,
            310.4752197265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/177/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/177/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Then use</i> mul_time <i>to write a function that takes a Time object that represents the finishing time</i> <i>in a race, and a number that represents the distance, and returns a Time object that represents the</i> <i>average pace (time per mile).</i></p>",
          "polygon": [
            [
              85.763671875,
              320.396484375
            ],
            [
              483.205078125,
              320.396484375
            ],
            [
              483.205078125,
              355.001220703125
            ],
            [
              85.763671875,
              355.001220703125
            ]
          ],
          "bbox": [
            85.763671875,
            320.396484375,
            483.205078125,
            355.001220703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/177/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/177/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 16.7.</b> <i>The</i> datetime <i>module provides</i> date <i>and</i> time <i>objects that are similar to the Date</i> <i>and Time objects in this chapter, but they provide a rich set of methods and operators. Read the</i> <i>documentation at</i> <a href=\"http://docs.python.org/2/library/datetime.html\">http:</a> <a href=\"http://docs.python.org/2/library/datetime.html\">//</a> <a href=\"http://docs.python.org/2/library/datetime.html\">docs.</a> <a href=\"http://docs.python.org/2/library/datetime.html\">python.</a> <a href=\"http://docs.python.org/2/library/datetime.html\">org/</a> <a href=\"http://docs.python.org/2/library/datetime.html\">2/</a> <a href=\"http://docs.python.org/2/library/datetime.html\">library/</a> <a href=\"http://docs.python.org/2/library/datetime.html\">datetime.</a> <a href=\"http://docs.python.org/2/library/datetime.html\">html</a> <i>.</i></p>",
          "polygon": [
            [
              85.9130859375,
              357.2326354980469
            ],
            [
              482.403564453125,
              357.2326354980469
            ],
            [
              482.403564453125,
              391.584228515625
            ],
            [
              85.9130859375,
              391.584228515625
            ]
          ],
          "bbox": [
            85.9130859375,
            357.2326354980469,
            482.403564453125,
            391.584228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/177/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/177/ListGroup/163",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/177/ListItem/10'></content-ref><content-ref src='/page/177/ListItem/11'></content-ref><content-ref src='/page/177/ListItem/12'></content-ref><content-ref src='/page/177/ListItem/13'></content-ref></ul></p>",
          "polygon": [
            [
              97.716796875,
              405.66796875
            ],
            [
              484.1015625,
              405.66796875
            ],
            [
              484.1015625,
              537.1852416992188
            ],
            [
              97.716796875,
              537.1852416992188
            ]
          ],
          "bbox": [
            97.716796875,
            405.66796875,
            484.1015625,
            537.1852416992188
          ],
          "children": [
            {
              "id": "/page/177/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Use the</i> datetime <i>module to write a program that gets the current date and prints the day of</i> <i>the week.</i></li>",
              "polygon": [
                [
                  97.8662109375,
                  405.66796875
                ],
                [
                  483.50390625,
                  405.66796875
                ],
                [
                  483.50390625,
                  428.09765625
                ],
                [
                  97.8662109375,
                  428.09765625
                ]
              ],
              "bbox": [
                97.8662109375,
                405.66796875,
                483.50390625,
                428.09765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/177/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/177/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Write a program that takes a birthday as input and prints the user's age and the number of</i> <i>days, hours, minutes and seconds until their next birthday.</i></li>",
              "polygon": [
                [
                  97.8662109375,
                  437.765625
                ],
                [
                  484.1015625,
                  437.765625
                ],
                [
                  484.1015625,
                  460.2732238769531
                ],
                [
                  97.8662109375,
                  460.2732238769531
                ]
              ],
              "bbox": [
                97.8662109375,
                437.765625,
                484.1015625,
                460.2732238769531
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/177/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/177/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. For two people born on different days, there is a day when one is twice as old as the other.</i> <i>That's their Double Day. Write a program that takes two birthdays and computes their Double</i> <i>Day.</i></li>",
              "polygon": [
                [
                  97.716796875,
                  469.86328125
                ],
                [
                  482.404052734375,
                  469.86328125
                ],
                [
                  482.404052734375,
                  504.82623291015625
                ],
                [
                  97.716796875,
                  504.82623291015625
                ]
              ],
              "bbox": [
                97.716796875,
                469.86328125,
                482.404052734375,
                504.82623291015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/177/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/177/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. For a little more challenge, write the more general version that computes the day when one</i> <i>person is n times older than the other.</i></li>",
              "polygon": [
                [
                  97.716796875,
                  514.3359375
                ],
                [
                  482.607421875,
                  514.3359375
                ],
                [
                  482.607421875,
                  537.1852416992188
                ],
                [
                  97.716796875,
                  537.1852416992188
                ]
              ],
              "bbox": [
                97.716796875,
                514.3359375,
                482.607421875,
                537.1852416992188
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/172/SectionHeader/1",
                "3": "/page/175/SectionHeader/1",
                "4": "/page/177/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "3": "/page/175/SectionHeader/1",
            "4": "/page/177/SectionHeader/5"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/172/SectionHeader/1",
        "3": "/page/175/SectionHeader/1",
        "4": "/page/177/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/178/Page/129",
      "block_type": "Page",
      "html": "<content-ref src='/page/178/SectionHeader/0'></content-ref><content-ref src='/page/178/SectionHeader/1'></content-ref><content-ref src='/page/178/Text/2'></content-ref><content-ref src='/page/178/SectionHeader/3'></content-ref><content-ref src='/page/178/Text/4'></content-ref><content-ref src='/page/178/Text/5'></content-ref><content-ref src='/page/178/ListGroup/127'></content-ref><content-ref src='/page/178/Text/8'></content-ref><content-ref src='/page/178/Text/9'></content-ref><content-ref src='/page/178/Text/10'></content-ref><content-ref src='/page/178/Text/11'></content-ref><content-ref src='/page/178/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/178/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-178-0\"></span><b>Chapter 17</b></h2>",
          "polygon": [
            [
              128.3466796875,
              161.26171875
            ],
            [
              232.6376953125,
              161.26171875
            ],
            [
              232.6376953125,
              183.00201416015625
            ],
            [
              128.3466796875,
              183.00201416015625
            ]
          ],
          "bbox": [
            128.3466796875,
            161.26171875,
            232.6376953125,
            183.00201416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/172/SectionHeader/1",
            "2": "/page/178/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/178/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Classes and methods</b></h1>",
          "polygon": [
            [
              129.16845703125,
              215.208984375
            ],
            [
              366.662109375,
              215.208984375
            ],
            [
              366.662109375,
              240.700439453125
            ],
            [
              129.16845703125,
              240.700439453125
            ]
          ],
          "bbox": [
            129.16845703125,
            215.208984375,
            366.662109375,
            240.700439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/178/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Code examples from this chapter are available from <a href=\"http://thinkpython.com/code/Time2.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/Time2.py\">Time2.py</a>.</p>",
          "polygon": [
            [
              128.9443359375,
              284.23828125
            ],
            [
              526.53515625,
              284.23828125
            ],
            [
              526.53515625,
              307.1499938964844
            ],
            [
              128.9443359375,
              307.1499938964844
            ]
          ],
          "bbox": [
            128.9443359375,
            284.23828125,
            526.53515625,
            307.1499938964844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/178/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-178-1\"></span><b>17.1 Object-oriented features</b></h4>",
          "polygon": [
            [
              128.6455078125,
              333.73828125
            ],
            [
              329.30859375,
              333.73828125
            ],
            [
              329.30859375,
              348.3430480957031
            ],
            [
              128.6455078125,
              348.3430480957031
            ]
          ],
          "bbox": [
            128.6455078125,
            333.73828125,
            329.30859375,
            348.3430480957031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/178/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python is an <b>object-oriented programming language</b>, which means that it provides features that support object-oriented programming.</p>",
          "polygon": [
            [
              129.2431640625,
              358.1015625
            ],
            [
              525.9375,
              358.1015625
            ],
            [
              525.9375,
              381.0639953613281
            ],
            [
              129.2431640625,
              381.0639953613281
            ]
          ],
          "bbox": [
            129.2431640625,
            358.1015625,
            525.9375,
            381.0639953613281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/178/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is not easy to define object-oriented programming, but we have already seen some of its characteristics:</p>",
          "polygon": [
            [
              128.9443359375,
              388.845703125
            ],
            [
              525.9375,
              388.845703125
            ],
            [
              525.9375,
              411.6130065917969
            ],
            [
              128.9443359375,
              411.6130065917969
            ]
          ],
          "bbox": [
            128.9443359375,
            388.845703125,
            525.9375,
            411.6130065917969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/178/ListGroup/127",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/178/ListItem/6'></content-ref><content-ref src='/page/178/ListItem/7'></content-ref></ul></p>",
          "polygon": [
            [
              142.2421875,
              420.36328125
            ],
            [
              526.53515625,
              420.36328125
            ],
            [
              526.53515625,
              486.156005859375
            ],
            [
              142.2421875,
              486.156005859375
            ]
          ],
          "bbox": [
            142.2421875,
            420.36328125,
            526.53515625,
            486.156005859375
          ],
          "children": [
            {
              "id": "/page/178/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Programs are made up of object definitions and function definitions, and most of the computation is expressed in terms of operations on objects.</li>",
              "polygon": [
                [
                  142.83984375,
                  420.36328125
                ],
                [
                  525.9375,
                  420.36328125
                ],
                [
                  525.9375,
                  443.12200927734375
                ],
                [
                  142.83984375,
                  443.12200927734375
                ]
              ],
              "bbox": [
                142.83984375,
                420.36328125,
                525.9375,
                443.12200927734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "4": "/page/178/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/178/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Each object definition corresponds to some object or concept in the real world, and the functions that operate on that object correspond to the ways real-world objects interact.</li>",
              "polygon": [
                [
                  142.2421875,
                  451.30078125
                ],
                [
                  526.53515625,
                  451.30078125
                ],
                [
                  526.53515625,
                  486.156005859375
                ],
                [
                  142.2421875,
                  486.156005859375
                ]
              ],
              "bbox": [
                142.2421875,
                451.30078125,
                526.53515625,
                486.156005859375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "4": "/page/178/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/178/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, the Time class defined in Chapter <a href=\"#page-172-0\">16</a> corresponds to the way people record the time of day, and the functions we defined correspond to the kinds of things people do with times. Similarly, the Point and Rectangle classes correspond to the mathematical concepts of a point and a rectangle.</p>",
          "polygon": [
            [
              129.09375,
              495.0
            ],
            [
              527.1328125,
              495.0
            ],
            [
              527.1328125,
              542.0530090332031
            ],
            [
              129.09375,
              542.0530090332031
            ]
          ],
          "bbox": [
            129.09375,
            495.0,
            527.1328125,
            542.0530090332031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/178/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So far, we have not taken advantage of the features Python provides to support objectoriented programming. These features are not strictly necessary; most of them provide alternative syntax for things we have already done. But in many cases, the alternative is more concise and more accurately conveys the structure of the program.</p>",
          "polygon": [
            [
              128.49609375,
              549.52734375
            ],
            [
              527.1328125,
              549.52734375
            ],
            [
              527.1328125,
              596.9920196533203
            ],
            [
              128.49609375,
              596.9920196533203
            ]
          ],
          "bbox": [
            128.49609375,
            549.52734375,
            527.1328125,
            596.9920196533203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/178/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, in the Time program, there is no obvious connection between the class definition and the function definitions that follow. With some examination, it is apparent that every function takes at least one Time object as an argument.</p>",
          "polygon": [
            [
              128.3466796875,
              605.21484375
            ],
            [
              526.53515625,
              605.21484375
            ],
            [
              526.53515625,
              639.7360229492188
            ],
            [
              128.3466796875,
              639.7360229492188
            ]
          ],
          "bbox": [
            128.3466796875,
            605.21484375,
            526.53515625,
            639.7360229492188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/178/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This observation is the motivation for <b>methods</b>; a method is a function that is associated with a particular class. We have seen methods for strings, lists, dictionaries and tuples. In this chapter, we will define methods for user-defined types.</p>",
          "polygon": [
            [
              128.197265625,
              648.0313110351562
            ],
            [
              526.833984375,
              648.0313110351562
            ],
            [
              526.833984375,
              682.4800262451172
            ],
            [
              128.197265625,
              682.4800262451172
            ]
          ],
          "bbox": [
            128.197265625,
            648.0313110351562,
            526.833984375,
            682.4800262451172
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/178/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Methods are semantically the same as functions, but there are two syntactic differences:</p>",
          "polygon": [
            [
              127.599609375,
              690.6796875
            ],
            [
              514.880859375,
              690.6796875
            ],
            [
              514.880859375,
              700.8350219726562
            ],
            [
              127.599609375,
              700.8350219726562
            ]
          ],
          "bbox": [
            127.599609375,
            690.6796875,
            514.880859375,
            700.8350219726562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "4": "/page/178/SectionHeader/3"
      },
      "images": null
    },
    {
      "id": "/page/179/Page/205",
      "block_type": "Page",
      "html": "<content-ref src='/page/179/PageHeader/0'></content-ref><content-ref src='/page/179/PageHeader/19'></content-ref><content-ref src='/page/179/ListGroup/204'></content-ref><content-ref src='/page/179/Text/3'></content-ref><content-ref src='/page/179/SectionHeader/4'></content-ref><content-ref src='/page/179/Text/5'></content-ref><content-ref src='/page/179/Code/6'></content-ref><content-ref src='/page/179/Code/7'></content-ref><content-ref src='/page/179/Text/8'></content-ref><content-ref src='/page/179/Code/9'></content-ref><content-ref src='/page/179/Text/10'></content-ref><content-ref src='/page/179/Code/11'></content-ref><content-ref src='/page/179/Text/12'></content-ref><content-ref src='/page/179/Code/13'></content-ref><content-ref src='/page/179/Text/14'></content-ref><content-ref src='/page/179/Text/15'></content-ref><content-ref src='/page/179/Code/16'></content-ref><content-ref src='/page/179/Text/17'></content-ref><content-ref src='/page/179/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/179/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.4248046875
            ],
            [
              482.4034423828125,
              60.4248046875
            ],
            [
              482.4034423828125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.4248046875,
            482.4034423828125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/179/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              61.1982421875
            ],
            [
              101.97509765625,
              61.1982421875
            ],
            [
              101.97509765625,
              70.4794921875
            ],
            [
              85.68896484375,
              70.4794921875
            ]
          ],
          "bbox": [
            85.68896484375,
            61.1982421875,
            101.97509765625,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/179/ListGroup/204",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/179/ListItem/1'></content-ref><content-ref src='/page/179/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              99.6591796875,
              87.978515625
            ],
            [
              482.4034729003906,
              87.978515625
            ],
            [
              482.4034729003906,
              130.44189453125
            ],
            [
              99.6591796875,
              130.44189453125
            ]
          ],
          "bbox": [
            99.6591796875,
            87.978515625,
            482.4034729003906,
            130.44189453125
          ],
          "children": [
            {
              "id": "/page/179/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Methods are defined inside a class definition in order to make the relationship between the class and the method explicit.</li>",
              "polygon": [
                [
                  100.28800201416016,
                  87.978515625
                ],
                [
                  482.4034729003906,
                  87.978515625
                ],
                [
                  482.4034729003906,
                  110.99188232421875
                ],
                [
                  100.28800201416016,
                  110.99188232421875
                ]
              ],
              "bbox": [
                100.28800201416016,
                87.978515625,
                482.4034729003906,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "4": "/page/178/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/179/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> The syntax for invoking a method is different from the syntax for calling a function.</li>",
              "polygon": [
                [
                  99.6591796875,
                  119.3994140625
                ],
                [
                  478.6476135253906,
                  119.3994140625
                ],
                [
                  478.6476135253906,
                  130.44189453125
                ],
                [
                  99.6591796875,
                  130.44189453125
                ]
              ],
              "bbox": [
                99.6591796875,
                119.3994140625,
                478.6476135253906,
                130.44189453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "4": "/page/178/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/179/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the next few sections, we will take the functions from the previous two chapters and transform them into methods. This transformation is purely mechanical; you can do it simply by following a sequence of steps. If you are comfortable converting from one form to another, you will be able to choose the best form for whatever you are doing.</p>",
          "polygon": [
            [
              85.166015625,
              141.732421875
            ],
            [
              482.4034118652344,
              141.732421875
            ],
            [
              482.4034118652344,
              188.89288330078125
            ],
            [
              85.166015625,
              188.89288330078125
            ]
          ],
          "bbox": [
            85.166015625,
            141.732421875,
            482.4034118652344,
            188.89288330078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "4": "/page/178/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/179/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-179-0\"></span><b>17.2 Printing objects</b></h3>",
          "polygon": [
            [
              85.46484375,
              216.17578125
            ],
            [
              229.83331298828125,
              216.17578125
            ],
            [
              229.83331298828125,
              231.40789794921875
            ],
            [
              85.46484375,
              231.40789794921875
            ]
          ],
          "bbox": [
            85.46484375,
            216.17578125,
            229.83331298828125,
            231.40789794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Chapter <a href=\"#page-172-0\">16,</a> we defined a class named Time and in Exercise <a href=\"#page-172-3\">16.1,</a> you wrote a function named print_time:</p>",
          "polygon": [
            [
              85.3154296875,
              242.279296875
            ],
            [
              482.90625,
              242.279296875
            ],
            [
              482.90625,
              265.07183837890625
            ],
            [
              85.3154296875,
              265.07183837890625
            ]
          ],
          "bbox": [
            85.3154296875,
            242.279296875,
            482.90625,
            265.07183837890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Code/6",
          "block_type": "Code",
          "html": "<pre>class Time(object):\n    \"\"\"Represents the time of day.\"\"\"</pre>",
          "polygon": [
            [
              86.4000015258789,
              270.28765869140625
            ],
            [
              283.88671875,
              270.28765869140625
            ],
            [
              283.88671875,
              292.4442443847656
            ],
            [
              86.4000015258789,
              292.4442443847656
            ]
          ],
          "bbox": [
            86.4000015258789,
            270.28765869140625,
            283.88671875,
            292.4442443847656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Code/7",
          "block_type": "Code",
          "html": "<pre>def print_time(time):\n    print '%.2d:%.2d:%.2d' % (time.hour, time.minute, time.second)</pre>",
          "polygon": [
            [
              85.9130859375,
              305.314453125
            ],
            [
              435.69140625,
              305.314453125
            ],
            [
              435.69140625,
              329.0272521972656
            ],
            [
              85.9130859375,
              329.0272521972656
            ]
          ],
          "bbox": [
            85.9130859375,
            305.314453125,
            435.69140625,
            329.0272521972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To call this function, you have to pass a Time object as an argument:</p>",
          "polygon": [
            [
              85.763671875,
              334.3926696777344
            ],
            [
              383.4679870605469,
              334.3926696777344
            ],
            [
              383.4679870605469,
              344.50482177734375
            ],
            [
              85.763671875,
              344.50482177734375
            ]
          ],
          "bbox": [
            85.763671875,
            334.3926696777344,
            383.4679870605469,
            344.50482177734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; start = Time()\n&gt;&gt;&gt; start.hour = 9\n&gt;&gt;&gt; start.minute = 45\n&gt;&gt;&gt; start.second = 00\n&gt;&gt;&gt; print_time(start)\n09:45:00</pre>",
          "polygon": [
            [
              86.0625,
              349.7206726074219
            ],
            [
              197.3759765625,
              349.7206726074219
            ],
            [
              197.3759765625,
              420.6552734375
            ],
            [
              86.0625,
              420.6552734375
            ]
          ],
          "bbox": [
            86.0625,
            349.7206726074219,
            197.3759765625,
            420.6552734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To make print_time a method, all we have to do is move the function definition inside the class definition. Notice the change in indentation.</p>",
          "polygon": [
            [
              86.40001678466797,
              425.77734375
            ],
            [
              482.4044189453125,
              425.77734375
            ],
            [
              482.4044189453125,
              448.32684326171875
            ],
            [
              86.40001678466797,
              448.32684326171875
            ]
          ],
          "bbox": [
            86.40001678466797,
            425.77734375,
            482.4044189453125,
            448.32684326171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Code/11",
          "block_type": "Code",
          "html": "<pre>class Time(object):\n    def print_time(time):\n        print '%.2d:%.2d:%.2d' % (time.hour, time.minute, time.second)</pre>",
          "polygon": [
            [
              86.40001678466797,
              453.54168701171875
            ],
            [
              459.59765625,
              453.54168701171875
            ],
            [
              459.59765625,
              489.19921875
            ],
            [
              86.40001678466797,
              489.19921875
            ]
          ],
          "bbox": [
            86.40001678466797,
            453.54168701171875,
            459.59765625,
            489.19921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now there are two ways to call print_time. The first (and less common) way is to use function syntax:</p>",
          "polygon": [
            [
              86.2119140625,
              492.29296875
            ],
            [
              482.39813232421875,
              492.29296875
            ],
            [
              482.39813232421875,
              515.5648498535156
            ],
            [
              86.2119140625,
              515.5648498535156
            ]
          ],
          "bbox": [
            86.2119140625,
            492.29296875,
            482.39813232421875,
            515.5648498535156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Code/13",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; Time.print_time(start)\n09:45:00</pre>",
          "polygon": [
            [
              85.98779296875,
              519.75
            ],
            [
              226.51171875,
              519.75
            ],
            [
              226.51171875,
              542.9373016357422
            ],
            [
              85.98779296875,
              542.9373016357422
            ]
          ],
          "bbox": [
            85.98779296875,
            519.75,
            226.51171875,
            542.9373016357422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this use of dot notation, Time is the name of the class, and print_time is the name of the method. start is passed as a parameter.</p>",
          "polygon": [
            [
              85.9130859375,
              548.3027038574219
            ],
            [
              482.4007263183594,
              548.3027038574219
            ],
            [
              482.4007263183594,
              570.6088562011719
            ],
            [
              85.9130859375,
              570.6088562011719
            ]
          ],
          "bbox": [
            85.9130859375,
            548.3027038574219,
            482.4007263183594,
            570.6088562011719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second (and more concise) way is to use method syntax:</p>",
          "polygon": [
            [
              85.9130859375,
              579.69140625
            ],
            [
              352.6171875,
              579.69140625
            ],
            [
              352.6171875,
              589.9088592529297
            ],
            [
              85.9130859375,
              589.9088592529297
            ]
          ],
          "bbox": [
            85.9130859375,
            579.69140625,
            352.6171875,
            589.9088592529297
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Code/16",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; start.print_time()\n09:45:00</pre>",
          "polygon": [
            [
              85.763671875,
              594.38671875
            ],
            [
              201.4779510498047,
              594.38671875
            ],
            [
              201.4779510498047,
              617.2813110351562
            ],
            [
              85.763671875,
              617.2813110351562
            ]
          ],
          "bbox": [
            85.763671875,
            594.38671875,
            201.4779510498047,
            617.2813110351562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this use of dot notation, print_time is the name of the method (again), and start is the object the method is invoked on, which is called the <b>subject</b>. Just as the subject of a sentence is what the sentence is about, the subject of a method invocation is what the method is about.</p>",
          "polygon": [
            [
              85.6142578125,
              622.6171875
            ],
            [
              482.90625,
              622.6171875
            ],
            [
              482.90625,
              669.3418731689453
            ],
            [
              85.6142578125,
              669.3418731689453
            ]
          ],
          "bbox": [
            85.6142578125,
            622.6171875,
            482.90625,
            669.3418731689453
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/179/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Inside the method, the subject is assigned to the first parameter, so in this case start is assigned to time.</p>",
          "polygon": [
            [
              85.9130859375,
              678.3046875
            ],
            [
              482.4002685546875,
              678.3046875
            ],
            [
              482.4002685546875,
              700.8348770141602
            ],
            [
              85.9130859375,
              700.8348770141602
            ]
          ],
          "bbox": [
            85.9130859375,
            678.3046875,
            482.4002685546875,
            700.8348770141602
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "3": "/page/179/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/180/Page/205",
      "block_type": "Page",
      "html": "<content-ref src='/page/180/PageHeader/0'></content-ref><content-ref src='/page/180/PageHeader/19'></content-ref><content-ref src='/page/180/Text/1'></content-ref><content-ref src='/page/180/Code/2'></content-ref><content-ref src='/page/180/Text/3'></content-ref><content-ref src='/page/180/ListGroup/203'></content-ref><content-ref src='/page/180/Text/6'></content-ref><content-ref src='/page/180/Text/7'></content-ref><content-ref src='/page/180/SectionHeader/8'></content-ref><content-ref src='/page/180/Text/9'></content-ref><content-ref src='/page/180/Code/10'></content-ref><content-ref src='/page/180/Code/11'></content-ref><content-ref src='/page/180/Text/12'></content-ref><content-ref src='/page/180/Text/13'></content-ref><content-ref src='/page/180/Code/14'></content-ref><content-ref src='/page/180/Text/15'></content-ref><content-ref src='/page/180/Text/16'></content-ref><content-ref src='/page/180/Code/17'></content-ref><content-ref src='/page/180/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/180/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.49609375,
              60.95654296875
            ],
            [
              525.6033935546875,
              60.95654296875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.49609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.49609375,
            60.95654296875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/180/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.71484375
            ],
            [
              525.33984375,
              60.71484375
            ],
            [
              525.33984375,
              69.99609375
            ],
            [
              509.80078125,
              69.99609375
            ]
          ],
          "bbox": [
            509.80078125,
            60.71484375,
            525.33984375,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">By convention, the first parameter of a method is called self, so it would be more common to write print_time like this:</p>",
          "polygon": [
            [
              128.0478515625,
              88.22021484375
            ],
            [
              525.6015014648438,
              88.22021484375
            ],
            [
              525.6015014648438,
              110.99188232421875
            ],
            [
              128.0478515625,
              110.99188232421875
            ]
          ],
          "bbox": [
            128.0478515625,
            88.22021484375,
            525.6015014648438,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/180/Code/2",
          "block_type": "Code",
          "html": "<pre>class Time(object):\n    def print_time(self):\n        print '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)</pre>",
          "polygon": [
            [
              129.60006713867188,
              117.315673828125
            ],
            [
              495.69622802734375,
              117.315673828125
            ],
            [
              495.69622802734375,
              151.787109375
            ],
            [
              129.60006713867188,
              151.787109375
            ]
          ],
          "bbox": [
            129.60006713867188,
            117.315673828125,
            495.69622802734375,
            151.787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The reason for this convention is an implicit metaphor:</p>",
          "polygon": [
            [
              128.6455078125,
              157.6845703125
            ],
            [
              371.14453125,
              157.6845703125
            ],
            [
              371.14453125,
              168.2518310546875
            ],
            [
              128.6455078125,
              168.2518310546875
            ]
          ],
          "bbox": [
            128.6455078125,
            157.6845703125,
            371.14453125,
            168.2518310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/180/ListGroup/203",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/180/ListItem/4'></content-ref><content-ref src='/page/180/ListItem/5'></content-ref></ul></p>",
          "polygon": [
            [
              142.541015625,
              181.7578125
            ],
            [
              525.638671875,
              181.7578125
            ],
            [
              525.638671875,
              250.09393310546875
            ],
            [
              142.541015625,
              250.09393310546875
            ]
          ],
          "bbox": [
            142.541015625,
            181.7578125,
            525.638671875,
            250.09393310546875
          ],
          "children": [
            {
              "id": "/page/180/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> The syntax for a function call, print_time(start), suggests that the function is the active agent. It says something like, \"Hey print_time! Here's an object for you to print.\"</li>",
              "polygon": [
                [
                  142.541015625,
                  181.7578125
                ],
                [
                  525.638671875,
                  181.7578125
                ],
                [
                  525.638671875,
                  217.3359375
                ],
                [
                  142.541015625,
                  217.3359375
                ]
              ],
              "bbox": [
                142.541015625,
                181.7578125,
                525.638671875,
                217.3359375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "3": "/page/179/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/180/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> In object-oriented programming, the objects are the active agents. A method invocation like start.print_time() says \"Hey start! Please print yourself.\"</li>",
              "polygon": [
                [
                  142.541015625,
                  226.6171875
                ],
                [
                  525.6036987304688,
                  226.6171875
                ],
                [
                  525.6036987304688,
                  250.09393310546875
                ],
                [
                  142.541015625,
                  250.09393310546875
                ]
              ],
              "bbox": [
                142.541015625,
                226.6171875,
                525.6036987304688,
                250.09393310546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "3": "/page/179/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/180/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This change in perspective might be more polite, but it is not obvious that it is useful. In the examples we have seen so far, it may not be. But sometimes shifting responsibility from the functions onto the objects makes it possible to write more versatile functions, and makes it easier to maintain and reuse code.</p>",
          "polygon": [
            [
              128.6455078125,
              264.708984375
            ],
            [
              525.603515625,
              264.708984375
            ],
            [
              525.603515625,
              311.3119201660156
            ],
            [
              128.6455078125,
              311.3119201660156
            ]
          ],
          "bbox": [
            128.6455078125,
            264.708984375,
            525.603515625,
            311.3119201660156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-180-1\"></span><b>Exercise 17.1.</b> <i>Rewrite</i> time_to_int <i>(from Section </i><i><a href=\"#page-175-0\">16.4)</a></i><i> as a method. It is probably not appro</i><i>priate to rewrite</i> int_to_time <i>as a method; what object you would invoke it on?</i></p>",
          "polygon": [
            [
              128.6455078125,
              313.37164306640625
            ],
            [
              525.6038818359375,
              313.37164306640625
            ],
            [
              525.6038818359375,
              335.5513610839844
            ],
            [
              128.6455078125,
              335.5513610839844
            ]
          ],
          "bbox": [
            128.6455078125,
            313.37164306640625,
            525.6038818359375,
            335.5513610839844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/180/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-180-0\"></span><b>17.3 Another example</b></h4>",
          "polygon": [
            [
              127.52490234375,
              365.8359375
            ],
            [
              282.09375,
              365.8359375
            ],
            [
              282.09375,
              380.197998046875
            ],
            [
              127.52490234375,
              380.197998046875
            ]
          ],
          "bbox": [
            127.52490234375,
            365.8359375,
            282.09375,
            380.197998046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's a version of increment (from Section <a href=\"#page-174-0\">16.3)</a> rewritten as a method:</p>",
          "polygon": [
            [
              127.4501953125,
              391.939453125
            ],
            [
              449.4375,
              391.939453125
            ],
            [
              449.4375,
              402.8829345703125
            ],
            [
              127.4501953125,
              402.8829345703125
            ]
          ],
          "bbox": [
            127.4501953125,
            391.939453125,
            449.4375,
            402.8829345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Code/10",
          "block_type": "Code",
          "html": "<pre># inside class Time:</pre>",
          "polygon": [
            [
              129.2431640625,
              409.2057800292969
            ],
            [
              234.2073974609375,
              409.2057800292969
            ],
            [
              234.2073974609375,
              419.1683654785156
            ],
            [
              129.2431640625,
              419.1683654785156
            ]
          ],
          "bbox": [
            129.2431640625,
            409.2057800292969,
            234.2073974609375,
            419.1683654785156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Code/11",
          "block_type": "Code",
          "html": "<pre>def increment(self, seconds):\n    seconds += self.time_to_int()\n    return int_to_time(seconds)</pre>",
          "polygon": [
            [
              148.0693359375,
              433.51171875
            ],
            [
              323.9296875,
              433.51171875
            ],
            [
              323.9296875,
              467.9463806152344
            ],
            [
              148.0693359375,
              467.9463806152344
            ]
          ],
          "bbox": [
            148.0693359375,
            433.51171875,
            323.9296875,
            467.9463806152344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This version assumes that time_to_int is written as a method, as in Exercise <a href=\"#page-180-1\">17.1.</a> Also, note that it is a pure function, not a modifier.</p>",
          "polygon": [
            [
              128.794921875,
              474.4187927246094
            ],
            [
              525.638671875,
              474.4187927246094
            ],
            [
              525.638671875,
              496.7249450683594
            ],
            [
              128.794921875,
              496.7249450683594
            ]
          ],
          "bbox": [
            128.794921875,
            474.4187927246094,
            525.638671875,
            496.7249450683594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's how you would invoke increment:</p>",
          "polygon": [
            [
              127.599609375,
              507.0198059082031
            ],
            [
              315.539794921875,
              507.0198059082031
            ],
            [
              315.539794921875,
              517.1319580078125
            ],
            [
              127.599609375,
              517.1319580078125
            ]
          ],
          "bbox": [
            127.599609375,
            507.0198059082031,
            315.539794921875,
            517.1319580078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; start.print_time()\n09:45:00\n&gt;&gt;&gt; end = start.increment(1337)\n&gt;&gt;&gt; end.print_time()\n10:07:17</pre>",
          "polygon": [
            [
              128.42138671875,
              523.455810546875
            ],
            [
              291.7513732910156,
              523.455810546875
            ],
            [
              291.7513732910156,
              582.1954193115234
            ],
            [
              128.42138671875,
              582.1954193115234
            ]
          ],
          "bbox": [
            128.42138671875,
            523.455810546875,
            291.7513732910156,
            582.1954193115234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The subject, start, gets assigned to the first parameter, self. The argument, 1337, gets assigned to the second parameter, seconds.</p>",
          "polygon": [
            [
              128.3466796875,
              588.6678161621094
            ],
            [
              525.6004638671875,
              588.6678161621094
            ],
            [
              525.6004638671875,
              611.015625
            ],
            [
              128.3466796875,
              611.015625
            ]
          ],
          "bbox": [
            128.3466796875,
            588.6678161621094,
            525.6004638671875,
            611.015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This mechanism can be confusing, especially if you make an error. For example, if you invoke increment with two arguments, you get:</p>",
          "polygon": [
            [
              127.30078125,
              620.68359375
            ],
            [
              525.6035766601562,
              620.68359375
            ],
            [
              525.6035766601562,
              643.5759735107422
            ],
            [
              127.30078125,
              643.5759735107422
            ]
          ],
          "bbox": [
            127.30078125,
            620.68359375,
            525.6035766601562,
            643.5759735107422
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Code/17",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; end = start.increment(1337, 460)\nTypeError: increment() takes exactly 2 arguments (3 given)</pre>",
          "polygon": [
            [
              127.97314453125,
              649.8988189697266
            ],
            [
              432.98126220703125,
              649.8988189697266
            ],
            [
              432.98126220703125,
              672.0564117431641
            ],
            [
              127.97314453125,
              672.0564117431641
            ]
          ],
          "bbox": [
            127.97314453125,
            649.8988189697266,
            432.98126220703125,
            672.0564117431641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/180/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The error message is initially confusing, because there are only two arguments in parentheses. But the subject is also considered an argument, so all together that's three.</p>",
          "polygon": [
            [
              127.8984375,
              677.91796875
            ],
            [
              525.6036376953125,
              677.91796875
            ],
            [
              525.6036376953125,
              700.8349761962891
            ],
            [
              127.8984375,
              700.8349761962891
            ]
          ],
          "bbox": [
            127.8984375,
            677.91796875,
            525.6036376953125,
            700.8349761962891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "3": "/page/179/SectionHeader/4",
        "4": "/page/180/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/181/Page/208",
      "block_type": "Page",
      "html": "<content-ref src='/page/181/PageHeader/0'></content-ref><content-ref src='/page/181/PageHeader/22'></content-ref><content-ref src='/page/181/SectionHeader/1'></content-ref><content-ref src='/page/181/Text/2'></content-ref><content-ref src='/page/181/Code/3'></content-ref><content-ref src='/page/181/Text/4'></content-ref><content-ref src='/page/181/Text/5'></content-ref><content-ref src='/page/181/Text/6'></content-ref><content-ref src='/page/181/SectionHeader/7'></content-ref><content-ref src='/page/181/Text/23'></content-ref><content-ref src='/page/181/Text/8'></content-ref><content-ref src='/page/181/Code/9'></content-ref><content-ref src='/page/181/Code/10'></content-ref><content-ref src='/page/181/Text/11'></content-ref><content-ref src='/page/181/Code/12'></content-ref><content-ref src='/page/181/Text/13'></content-ref><content-ref src='/page/181/Text/14'></content-ref><content-ref src='/page/181/Code/15'></content-ref><content-ref src='/page/181/Text/16'></content-ref><content-ref src='/page/181/Code/17'></content-ref><content-ref src='/page/181/Text/18'></content-ref><content-ref src='/page/181/Code/19'></content-ref><content-ref src='/page/181/Text/20'></content-ref><content-ref src='/page/181/Text/21'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/181/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.18310546875
            ],
            [
              482.4034423828125,
              60.18310546875
            ],
            [
              482.4034423828125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.18310546875,
            482.4034423828125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/181/PageHeader/22",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.39013671875,
              60.134765625
            ],
            [
              101.97509765625,
              60.134765625
            ],
            [
              101.97509765625,
              70.576171875
            ],
            [
              85.39013671875,
              70.576171875
            ]
          ],
          "bbox": [
            85.39013671875,
            60.134765625,
            101.97509765625,
            70.576171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/180/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/181/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-181-0\"></span><b>17.4 A more complicated example</b></h4>",
          "polygon": [
            [
              85.3154296875,
              85.70654296875
            ],
            [
              317.35546875,
              85.70654296875
            ],
            [
              317.35546875,
              100.29998779296875
            ],
            [
              85.3154296875,
              100.29998779296875
            ]
          ],
          "bbox": [
            85.3154296875,
            85.70654296875,
            317.35546875,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/181/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">is_after (from Exercise <a href=\"#page-172-4\">16.2)</a> is slightly more complicated because it takes two Time objects as parameters. In this case it is conventional to name the first parameter self and the second parameter other:</p>",
          "polygon": [
            [
              84.8671875,
              110.021484375
            ],
            [
              483.205078125,
              110.021484375
            ],
            [
              483.205078125,
              145.38592529296875
            ],
            [
              84.8671875,
              145.38592529296875
            ]
          ],
          "bbox": [
            84.8671875,
            110.021484375,
            483.205078125,
            145.38592529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/181/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/181/Code/3",
          "block_type": "Code",
          "html": "<pre>def is_after(self, other):\n    return self.time_to_int() &gt; other.time_to_int()</pre>",
          "polygon": [
            [
              100.705078125,
              161.1650390625
            ],
            [
              375.328125,
              161.1650390625
            ],
            [
              375.328125,
              196.374267578125
            ],
            [
              100.705078125,
              196.374267578125
            ]
          ],
          "bbox": [
            100.705078125,
            161.1650390625,
            375.328125,
            196.374267578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/181/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To use this method, you have to invoke it on one object and pass the other as an argument: &gt;&gt;&gt; end.is_after(start)</p>",
          "polygon": [
            [
              85.9130859375,
              199.546875
            ],
            [
              482.4034423828125,
              199.546875
            ],
            [
              482.4034423828125,
              226.6171875
            ],
            [
              85.9130859375,
              226.6171875
            ]
          ],
          "bbox": [
            85.9130859375,
            199.546875,
            482.4034423828125,
            226.6171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/181/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">True</p>",
          "polygon": [
            [
              85.763671875,
              226.6171875
            ],
            [
              107.32149505615234,
              226.6171875
            ],
            [
              107.32149505615234,
              237.67822265625
            ],
            [
              85.763671875,
              237.67822265625
            ]
          ],
          "bbox": [
            85.763671875,
            226.6171875,
            107.32149505615234,
            237.67822265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/181/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One nice thing about this syntax is that it almost reads like English: \"end is after start?\"</p>",
          "polygon": [
            [
              86.2119140625,
              241.505859375
            ],
            [
              470.5677795410156,
              241.505859375
            ],
            [
              470.5677795410156,
              252.3828125
            ],
            [
              86.2119140625,
              252.3828125
            ]
          ],
          "bbox": [
            86.2119140625,
            241.505859375,
            470.5677795410156,
            252.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/179/SectionHeader/4",
            "4": "/page/181/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/181/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-181-1\"></span><b>17.5 The init method</b></h3>",
          "polygon": [
            [
              85.763671875,
              278.4375
            ],
            [
              231.84181213378906,
              278.4375
            ],
            [
              231.84181213378906,
              293.90625
            ],
            [
              85.763671875,
              293.90625
            ]
          ],
          "bbox": [
            85.763671875,
            278.4375,
            231.84181213378906,
            293.90625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/23",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"># inside class Time:</p>",
          "polygon": [
            [
              86.4000244140625,
              149.8287353515625
            ],
            [
              191.00730895996094,
              149.8287353515625
            ],
            [
              191.00730895996094,
              159.79132080078125
            ],
            [
              86.4000244140625,
              159.79132080078125
            ]
          ],
          "bbox": [
            86.4000244140625,
            149.8287353515625,
            191.00730895996094,
            159.79132080078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The init method (short for \"initialization\") is a special method that gets invoked when an object is instantiated. Its full name is __init__ (two underscore characters, followed by init, and then two more underscores). An init method for the Time class might look like this:</p>",
          "polygon": [
            [
              86.2119140625,
              303.57421875
            ],
            [
              482.4036865234375,
              303.57421875
            ],
            [
              482.4036865234375,
              351.0957946777344
            ],
            [
              86.2119140625,
              351.0957946777344
            ]
          ],
          "bbox": [
            86.2119140625,
            303.57421875,
            482.4036865234375,
            351.0957946777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Code/9",
          "block_type": "Code",
          "html": "<pre># inside class Time:</pre>",
          "polygon": [
            [
              86.4000244140625,
              354.234375
            ],
            [
              200.8125,
              354.234375
            ],
            [
              200.8125,
              365.501220703125
            ],
            [
              86.4000244140625,
              365.501220703125
            ]
          ],
          "bbox": [
            86.4000244140625,
            354.234375,
            200.8125,
            365.501220703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Code/10",
          "block_type": "Code",
          "html": "<pre>def __init__(self, hour=0, minute=0, second=0):\n    self.hour = hour\n    self.minute = minute\n    self.second = second</pre>",
          "polygon": [
            [
              104.51513671875,
              375.890625
            ],
            [
              353.8125,
              375.890625
            ],
            [
              353.8125,
              426.47222900390625
            ],
            [
              104.51513671875,
              426.47222900390625
            ]
          ],
          "bbox": [
            104.51513671875,
            375.890625,
            353.8125,
            426.47222900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is common for the parameters of __init__ to have the same names as the attributes. The statement</p>",
          "polygon": [
            [
              85.9130859375,
              430.03125
            ],
            [
              482.404052734375,
              430.03125
            ],
            [
              482.404052734375,
              453.37078857421875
            ],
            [
              85.9130859375,
              453.37078857421875
            ]
          ],
          "bbox": [
            85.9130859375,
            430.03125,
            482.404052734375,
            453.37078857421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Code/12",
          "block_type": "Code",
          "html": "<pre>self.hour = hour</pre>",
          "polygon": [
            [
              127.4501953125,
              457.48828125
            ],
            [
              212.6162109375,
              457.48828125
            ],
            [
              212.6162109375,
              467.7762145996094
            ],
            [
              127.4501953125,
              467.7762145996094
            ]
          ],
          "bbox": [
            127.4501953125,
            457.48828125,
            212.6162109375,
            467.7762145996094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">stores the value of the parameter hour as an attribute of self.</p>",
          "polygon": [
            [
              85.9130859375,
              472.3686218261719
            ],
            [
              356.46368408203125,
              472.3686218261719
            ],
            [
              356.46368408203125,
              482.625
            ],
            [
              85.9130859375,
              482.625
            ]
          ],
          "bbox": [
            85.9130859375,
            472.3686218261719,
            356.46368408203125,
            482.625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The parameters are optional, so if you call Time with no arguments, you get the default values.</p>",
          "polygon": [
            [
              86.4000244140625,
              489.19921875
            ],
            [
              482.90625,
              489.19921875
            ],
            [
              482.90625,
              513.2017822265625
            ],
            [
              86.4000244140625,
              513.2017822265625
            ]
          ],
          "bbox": [
            86.4000244140625,
            489.19921875,
            482.90625,
            513.2017822265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Code/15",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; time = Time()\n&gt;&gt;&gt; time.print_time()\n00:00:00</pre>",
          "polygon": [
            [
              86.13720703125,
              515.49609375
            ],
            [
              196.2476348876953,
              515.49609375
            ],
            [
              196.2476348876953,
              551.9952239990234
            ],
            [
              86.13720703125,
              551.9952239990234
            ]
          ],
          "bbox": [
            86.13720703125,
            515.49609375,
            196.2476348876953,
            551.9952239990234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you provide one argument, it overrides hour:</p>",
          "polygon": [
            [
              85.68896484375,
              554.94140625
            ],
            [
              295.541015625,
              554.94140625
            ],
            [
              295.541015625,
              566.6997680664062
            ],
            [
              85.68896484375,
              566.6997680664062
            ]
          ],
          "bbox": [
            85.68896484375,
            554.94140625,
            295.541015625,
            566.6997680664062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Code/17",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; time = Time (9)\n&gt;&gt;&gt; time.print_time()\n09:00:00</pre>",
          "polygon": [
            [
              86.0625,
              567.703125
            ],
            [
              196.2476043701172,
              567.703125
            ],
            [
              196.2476043701172,
              607.921875
            ],
            [
              86.0625,
              607.921875
            ]
          ],
          "bbox": [
            86.0625,
            567.703125,
            196.2476043701172,
            607.921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you provide two arguments, they override hour and minute.</p>",
          "polygon": [
            [
              86.2119140625,
              609.08203125
            ],
            [
              362.13067626953125,
              609.08203125
            ],
            [
              362.13067626953125,
              620.1987609863281
            ],
            [
              86.2119140625,
              620.1987609863281
            ]
          ],
          "bbox": [
            86.2119140625,
            609.08203125,
            362.13067626953125,
            620.1987609863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Code/19",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; time = Time(9, 45)\n&gt;&gt;&gt; time.print_time()\n09:45:00</pre>",
          "polygon": [
            [
              85.3154296875,
              624.55078125
            ],
            [
              201.46800231933594,
              624.55078125
            ],
            [
              201.46800231933594,
              658.9922027587891
            ],
            [
              85.3154296875,
              658.9922027587891
            ]
          ],
          "bbox": [
            85.3154296875,
            624.55078125,
            201.46800231933594,
            658.9922027587891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/20",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And if you provide three arguments, they override all three default values.</p>",
          "polygon": [
            [
              86.39999389648438,
              662.0625
            ],
            [
              416.56640625,
              662.0625
            ],
            [
              416.56640625,
              673.6967620849609
            ],
            [
              86.39999389648438,
              673.6967620849609
            ]
          ],
          "bbox": [
            86.39999389648438,
            662.0625,
            416.56640625,
            673.6967620849609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/181/Text/21",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 17.2.</b> <i>Write an init method for the</i> Point <i>class that takes</i> x <i>and</i> y <i>as optional parameters</i> <i>and assigns them to the corresponding attributes.</i></p>",
          "polygon": [
            [
              85.6142578125,
              675.2109375
            ],
            [
              482.90625,
              675.2109375
            ],
            [
              482.90625,
              697.9130630493164
            ],
            [
              85.6142578125,
              697.9130630493164
            ]
          ],
          "bbox": [
            85.6142578125,
            675.2109375,
            482.90625,
            697.9130630493164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "3": "/page/181/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/182/Page/206",
      "block_type": "Page",
      "html": "<content-ref src='/page/182/PageHeader/0'></content-ref><content-ref src='/page/182/PageHeader/18'></content-ref><content-ref src='/page/182/SectionHeader/1'></content-ref><content-ref src='/page/182/Text/2'></content-ref><content-ref src='/page/182/Text/3'></content-ref><content-ref src='/page/182/Code/4'></content-ref><content-ref src='/page/182/Text/5'></content-ref><content-ref src='/page/182/Code/6'></content-ref><content-ref src='/page/182/Text/7'></content-ref><content-ref src='/page/182/Text/8'></content-ref><content-ref src='/page/182/SectionHeader/9'></content-ref><content-ref src='/page/182/Text/10'></content-ref><content-ref src='/page/182/Text/11'></content-ref><content-ref src='/page/182/Code/12'></content-ref><content-ref src='/page/182/Text/13'></content-ref><content-ref src='/page/182/Code/14'></content-ref><content-ref src='/page/182/Text/15'></content-ref><content-ref src='/page/182/Text/16'></content-ref><content-ref src='/page/182/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/182/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.49609375,
              61.11871337890625
            ],
            [
              525.5947875976562,
              61.11871337890625
            ],
            [
              525.5947875976562,
              71.13372802734375
            ],
            [
              128.49609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.49609375,
            61.11871337890625,
            525.5947875976562,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/182/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              61.294921875
            ],
            [
              525.638671875,
              61.294921875
            ],
            [
              525.638671875,
              70.3828125
            ],
            [
              510.099609375,
              70.3828125
            ]
          ],
          "bbox": [
            510.099609375,
            61.294921875,
            525.638671875,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "3": "/page/181/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/182/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-182-0\"></span><b>17.6 The</b> __str__ <b>method</b></h2>",
          "polygon": [
            [
              128.6455078125,
              83.87713623046875
            ],
            [
              302.9117126464844,
              83.87713623046875
            ],
            [
              302.9117126464844,
              100.29998779296875
            ],
            [
              128.6455078125,
              100.29998779296875
            ]
          ],
          "bbox": [
            128.6455078125,
            83.87713623046875,
            302.9117126464844,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">__str__ is a special method, like __init__, that is supposed to return a string representation of an object.</p>",
          "polygon": [
            [
              128.9443359375,
              116.208984375
            ],
            [
              525.595703125,
              116.208984375
            ],
            [
              525.595703125,
              139.09197998046875
            ],
            [
              128.9443359375,
              139.09197998046875
            ]
          ],
          "bbox": [
            128.9443359375,
            116.208984375,
            525.595703125,
            139.09197998046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, here is a str method for Time objects:</p>",
          "polygon": [
            [
              128.72021484375,
              152.0771484375
            ],
            [
              356.203125,
              152.0771484375
            ],
            [
              356.203125,
              162.29296875
            ],
            [
              128.72021484375,
              162.29296875
            ]
          ],
          "bbox": [
            128.72021484375,
            152.0771484375,
            356.203125,
            162.29296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/Code/4",
          "block_type": "Code",
          "html": "<pre># inside class Time:\n    def __str__(self):\n        return '%.2d:%.2d:%.2d' % (self.hour, self.minute, self.second)</pre>",
          "polygon": [
            [
              129.60003662109375,
              171.4097900390625
            ],
            [
              501.134765625,
              171.4097900390625
            ],
            [
              501.134765625,
              217.955322265625
            ],
            [
              129.60003662109375,
              217.955322265625
            ]
          ],
          "bbox": [
            129.60003662109375,
            171.4097900390625,
            501.134765625,
            217.955322265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you print an object, Python invokes the str method:</p>",
          "polygon": [
            [
              128.12255859375,
              227.22174072265625
            ],
            [
              392.958984375,
              227.22174072265625
            ],
            [
              392.958984375,
              237.33392333984375
            ],
            [
              128.12255859375,
              237.33392333984375
            ]
          ],
          "bbox": [
            128.12255859375,
            227.22174072265625,
            392.958984375,
            237.33392333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; time = Time(9, 45)\n&gt;&gt;&gt; print time\n09:45:00</pre>",
          "polygon": [
            [
              129.2431640625,
              246.146484375
            ],
            [
              244.6680908203125,
              246.146484375
            ],
            [
              244.6680908203125,
              280.80224609375
            ],
            [
              129.2431640625,
              280.80224609375
            ]
          ],
          "bbox": [
            129.2431640625,
            246.146484375,
            244.6680908203125,
            280.80224609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When I write a new class, I almost always start by writing __init__, which makes it easier to instantiate objects, and __str__, which is useful for debugging.</p>",
          "polygon": [
            [
              129.09375,
              290.0696716308594
            ],
            [
              525.6041259765625,
              290.0696716308594
            ],
            [
              525.6041259765625,
              318.076171875
            ],
            [
              129.09375,
              318.076171875
            ]
          ],
          "bbox": [
            129.09375,
            290.0696716308594,
            525.6041259765625,
            318.076171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 17.3.</b> <i>Write a</i> str <i>method for the</i> Point <i>class. Create a Point object and print it.</i></p>",
          "polygon": [
            [
              129.60008239746094,
              314.4345397949219
            ],
            [
              492.3472900390625,
              314.4345397949219
            ],
            [
              492.3472900390625,
              324.47271728515625
            ],
            [
              129.60008239746094,
              324.47271728515625
            ]
          ],
          "bbox": [
            129.60008239746094,
            314.4345397949219,
            492.3472900390625,
            324.47271728515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/182/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-182-1\"></span><b>17.7 Operator overloading</b></h4>",
          "polygon": [
            [
              127.8984375,
              363.1026611328125
            ],
            [
              311.080078125,
              363.1026611328125
            ],
            [
              311.080078125,
              377.4488830566406
            ],
            [
              127.8984375,
              377.4488830566406
            ]
          ],
          "bbox": [
            127.8984375,
            363.1026611328125,
            311.080078125,
            377.4488830566406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">By defining other special methods, you can specify the behavior of operators on userdefined types. For example, if you define a method named __add__ for the Time class, you can use the + operator on Time objects.</p>",
          "polygon": [
            [
              128.3466796875,
              393.873046875
            ],
            [
              525.603515625,
              393.873046875
            ],
            [
              525.603515625,
              428.434814453125
            ],
            [
              128.3466796875,
              428.434814453125
            ]
          ],
          "bbox": [
            128.3466796875,
            393.873046875,
            525.603515625,
            428.434814453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is what the definition might look like:</p>",
          "polygon": [
            [
              128.3466796875,
              441.24609375
            ],
            [
              319.0688171386719,
              441.24609375
            ],
            [
              319.0688171386719,
              451.63482666015625
            ],
            [
              128.3466796875,
              451.63482666015625
            ]
          ],
          "bbox": [
            128.3466796875,
            441.24609375,
            319.0688171386719,
            451.63482666015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Code/12",
          "block_type": "Code",
          "html": "<pre># inside class Time:\n    def __add__(self, other):\n        seconds = self.time_to_int() + other.time_to_int()\n        return int_to_time(seconds)</pre>",
          "polygon": [
            [
              129.60012817382812,
              460.752685546875
            ],
            [
              432.9712219238281,
              460.752685546875
            ],
            [
              432.9712219238281,
              519.4922790527344
            ],
            [
              129.60012817382812,
              519.4922790527344
            ]
          ],
          "bbox": [
            129.60012817382812,
            460.752685546875,
            432.9712219238281,
            519.4922790527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And here is how you could use it:</p>",
          "polygon": [
            [
              129.09375,
              528.64453125
            ],
            [
              278.5078125,
              528.64453125
            ],
            [
              278.5078125,
              538.870849609375
            ],
            [
              129.09375,
              538.870849609375
            ]
          ],
          "bbox": [
            129.09375,
            528.64453125,
            278.5078125,
            538.870849609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Code/14",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; start = Time(9, 45)\n&gt;&gt;&gt; duration = Time(1, 35)\n&gt;&gt;&gt; print start + duration\n11:20:00</pre>",
          "polygon": [
            [
              128.0478515625,
              547.9886932373047
            ],
            [
              265.8076171875,
              547.9886932373047
            ],
            [
              265.8076171875,
              594.5343017578125
            ],
            [
              128.0478515625,
              594.5343017578125
            ]
          ],
          "bbox": [
            128.0478515625,
            547.9886932373047,
            265.8076171875,
            594.5343017578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you apply the + operator to Time objects, Python invokes __add__. When you print the result, Python invokes __str__. So there is quite a lot happening behind the scenes!</p>",
          "polygon": [
            [
              128.3466796875,
              603.8007049560547
            ],
            [
              526.53515625,
              603.8007049560547
            ],
            [
              526.53515625,
              626.1078643798828
            ],
            [
              128.3466796875,
              626.1078643798828
            ]
          ],
          "bbox": [
            128.3466796875,
            603.8007049560547,
            526.53515625,
            626.1078643798828
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Changing the behavior of an operator so that it works with user-defined types is called <b>op</b><b>erator overloading</b>. For every operator in Python there is a corresponding special method, like __add__. For more details, see <a href=\"http://docs.python.org/2/reference/datamodel.html#specialnames\">http://docs.python.org/2/reference/datamodel.</a> <a href=\"http://docs.python.org/2/reference/datamodel.html#specialnames\">html#specialnames</a>.</p>",
          "polygon": [
            [
              127.7490234375,
              639.2481536865234
            ],
            [
              525.6763916015625,
              639.2481536865234
            ],
            [
              525.6763916015625,
              686.0390625
            ],
            [
              127.7490234375,
              686.0390625
            ]
          ],
          "bbox": [
            127.7490234375,
            639.2481536865234,
            525.6763916015625,
            686.0390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/182/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 17.4.</b> <i>Write an</i> add <i>method for the Point class.</i></p>",
          "polygon": [
            [
              128.6455078125,
              687.9505767822266
            ],
            [
              356.3946228027344,
              687.9505767822266
            ],
            [
              356.3946228027344,
              697.9887619018555
            ],
            [
              128.6455078125,
              697.9887619018555
            ]
          ],
          "bbox": [
            128.6455078125,
            687.9505767822266,
            356.3946228027344,
            697.9887619018555
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "2": "/page/182/SectionHeader/1",
        "4": "/page/182/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/183/Page/197",
      "block_type": "Page",
      "html": "<content-ref src='/page/183/PageHeader/0'></content-ref><content-ref src='/page/183/PageHeader/16'></content-ref><content-ref src='/page/183/SectionHeader/1'></content-ref><content-ref src='/page/183/Text/2'></content-ref><content-ref src='/page/183/Code/3'></content-ref><content-ref src='/page/183/Code/4'></content-ref><content-ref src='/page/183/Text/5'></content-ref><content-ref src='/page/183/Text/6'></content-ref><content-ref src='/page/183/Text/7'></content-ref><content-ref src='/page/183/Code/8'></content-ref><content-ref src='/page/183/Text/9'></content-ref><content-ref src='/page/183/Code/10'></content-ref><content-ref src='/page/183/Text/11'></content-ref><content-ref src='/page/183/Text/12'></content-ref><content-ref src='/page/183/Code/13'></content-ref><content-ref src='/page/183/Code/14'></content-ref><content-ref src='/page/183/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/183/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.4248046875
            ],
            [
              482.4034423828125,
              60.4248046875
            ],
            [
              482.4034423828125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.4248046875,
            482.4034423828125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/183/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.8671875,
              60.71484375
            ],
            [
              101.00390625,
              60.71484375
            ],
            [
              101.00390625,
              70.2861328125
            ],
            [
              84.8671875,
              70.2861328125
            ]
          ],
          "bbox": [
            84.8671875,
            60.71484375,
            101.00390625,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/182/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/183/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-183-0\"></span><b>17.8 Type-based dispatch</b></h4>",
          "polygon": [
            [
              85.6142578125,
              85.95379638671875
            ],
            [
              261.3251953125,
              85.95379638671875
            ],
            [
              261.3251953125,
              100.29998779296875
            ],
            [
              85.6142578125,
              100.29998779296875
            ]
          ],
          "bbox": [
            85.6142578125,
            85.95379638671875,
            261.3251953125,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In the previous section we added two Time objects, but you also might want to add an integer to a Time object. The following is a version of __add__ that checks the type of other and invokes either add_time or increment:</p>",
          "polygon": [
            [
              85.3154296875,
              111.4716796875
            ],
            [
              483.50390625,
              111.4716796875
            ],
            [
              483.50390625,
              146.45294189453125
            ],
            [
              85.3154296875,
              146.45294189453125
            ]
          ],
          "bbox": [
            85.3154296875,
            111.4716796875,
            483.50390625,
            146.45294189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Code/3",
          "block_type": "Code",
          "html": "<pre># inside class Time:</pre>",
          "polygon": [
            [
              85.53955078125,
              151.013671875
            ],
            [
              191.00726318359375,
              151.013671875
            ],
            [
              191.00726318359375,
              161.92535400390625
            ],
            [
              85.53955078125,
              161.92535400390625
            ]
          ],
          "bbox": [
            85.53955078125,
            151.013671875,
            191.00726318359375,
            161.92535400390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Code/4",
          "block_type": "Code",
          "html": "<pre>def __add__(self, other):\n    if isinstance(other, Time):\n        return self.add_time(other)\n    else:\n        return self.increment(other)\ndef add_time(self, other):\n    seconds = self.time_to_int() + other.time_to_int()\n    return int_to_time(seconds)\ndef increment(self, seconds):\n    seconds += self.time_to_int()\n    return int_to_time(seconds)</pre>",
          "polygon": [
            [
              105.26220703125,
              174.41015625
            ],
            [
              395.6484375,
              174.41015625
            ],
            [
              395.6484375,
              332.96484375
            ],
            [
              105.26220703125,
              332.96484375
            ]
          ],
          "bbox": [
            105.26220703125,
            174.41015625,
            395.6484375,
            332.96484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The built-in function isinstance takes a value and a class object, and returns True if the value is an instance of the class.</p>",
          "polygon": [
            [
              86.0625,
              337.9921875
            ],
            [
              482.3995056152344,
              337.9921875
            ],
            [
              482.3995056152344,
              360.6119079589844
            ],
            [
              86.0625,
              360.6119079589844
            ]
          ],
          "bbox": [
            86.0625,
            337.9921875,
            482.3995056152344,
            360.6119079589844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If other is a Time object, __add__ invokes add_time. Otherwise it assumes that the parameter is a number and invokes increment. This operation is called a <b>type-based dispatch</b> because it dispatches the computation to different methods based on the type of the arguments.</p>",
          "polygon": [
            [
              85.6142578125,
              369.703125
            ],
            [
              482.4048767089844,
              369.703125
            ],
            [
              482.4048767089844,
              416.7889099121094
            ],
            [
              85.6142578125,
              416.7889099121094
            ]
          ],
          "bbox": [
            85.6142578125,
            369.703125,
            482.4048767089844,
            416.7889099121094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here are examples that use the + operator with different types:</p>",
          "polygon": [
            [
              85.53955078125,
              425.390625
            ],
            [
              361.880859375,
              425.390625
            ],
            [
              361.880859375,
              436.38189697265625
            ],
            [
              85.53955078125,
              436.38189697265625
            ]
          ],
          "bbox": [
            85.53955078125,
            425.390625,
            361.880859375,
            436.38189697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Code/8",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; start = Time(9, 45)\n&gt;&gt;&gt; duration = Time(1, 35)\n&gt;&gt;&gt; print start + duration\n11:20:00\n&gt;&gt;&gt; print start + 1337\n10:07:17</pre>",
          "polygon": [
            [
              85.53955078125,
              441.89276123046875
            ],
            [
              222.3993377685547,
              441.89276123046875
            ],
            [
              222.3993377685547,
              512.8263549804688
            ],
            [
              85.53955078125,
              512.8263549804688
            ]
          ],
          "bbox": [
            85.53955078125,
            441.89276123046875,
            222.3993377685547,
            512.8263549804688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Unfortunately, this implementation of addition is not commutative. If the integer is the first operand, you get</p>",
          "polygon": [
            [
              85.9130859375,
              518.58984375
            ],
            [
              482.40325927734375,
              518.58984375
            ],
            [
              482.40325927734375,
              540.7929382324219
            ],
            [
              85.9130859375,
              540.7929382324219
            ]
          ],
          "bbox": [
            85.9130859375,
            518.58984375,
            482.40325927734375,
            540.7929382324219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Code/10",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print 1337 + start</pre>",
          "polygon": [
            [
              85.3154296875,
              546.3027801513672
            ],
            [
              201.46791076660156,
              546.3027801513672
            ],
            [
              201.46791076660156,
              556.48828125
            ],
            [
              85.3154296875,
              556.48828125
            ]
          ],
          "bbox": [
            85.3154296875,
            546.3027801513672,
            201.46791076660156,
            556.48828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">TypeError: unsupported operand type(s) for +: 'int' and 'instance'</p>",
          "polygon": [
            [
              86.0625,
              558.4967803955078
            ],
            [
              431.5223083496094,
              558.4967803955078
            ],
            [
              431.5223083496094,
              568.4765625
            ],
            [
              86.0625,
              568.4765625
            ]
          ],
          "bbox": [
            86.0625,
            558.4967803955078,
            431.5223083496094,
            568.4765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The problem is, instead of asking the Time object to add an integer, Python is asking an integer to add a Time object, and it doesn't know how to do that. But there is a clever solution for this problem: the special method __radd__, which stands for \"right-side add.\" This method is invoked when a Time object appears on the right side of the + operator. Here's the definition:</p>",
          "polygon": [
            [
              85.46484375,
              573.890625
            ],
            [
              482.607421875,
              573.890625
            ],
            [
              482.607421875,
              633.4453125
            ],
            [
              85.46484375,
              633.4453125
            ]
          ],
          "bbox": [
            85.46484375,
            573.890625,
            482.607421875,
            633.4453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Code/13",
          "block_type": "Code",
          "html": "<pre># inside class Time:</pre>",
          "polygon": [
            [
              85.3154296875,
              638.5177764892578
            ],
            [
              191.00721740722656,
              638.5177764892578
            ],
            [
              191.00721740722656,
              648.4803771972656
            ],
            [
              85.3154296875,
              648.4803771972656
            ]
          ],
          "bbox": [
            85.3154296875,
            638.5177764892578,
            191.00721740722656,
            648.4803771972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Code/14",
          "block_type": "Code",
          "html": "<pre>def __radd__(self, other):\n    return self.__add__(other)</pre>",
          "polygon": [
            [
              90.6943359375,
              662.9067687988281
            ],
            [
              264.2323913574219,
              662.9067687988281
            ],
            [
              264.2323913574219,
              689.51953125
            ],
            [
              90.6943359375,
              689.51953125
            ]
          ],
          "bbox": [
            90.6943359375,
            662.9067687988281,
            264.2323913574219,
            689.51953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/183/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And here's how it's used:</p>",
          "polygon": [
            [
              85.3154296875,
              690.8723373413086
            ],
            [
              198.35963439941406,
              690.8723373413086
            ],
            [
              198.35963439941406,
              701.5078125
            ],
            [
              85.3154296875,
              701.5078125
            ]
          ],
          "bbox": [
            85.3154296875,
            690.8723373413086,
            198.35963439941406,
            701.5078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "2": "/page/182/SectionHeader/1",
        "4": "/page/183/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/184/Page/184",
      "block_type": "Page",
      "html": "<content-ref src='/page/184/PageHeader/0'></content-ref><content-ref src='/page/184/PageHeader/15'></content-ref><content-ref src='/page/184/Code/182'></content-ref><content-ref src='/page/184/ListGroup/183'></content-ref><content-ref src='/page/184/SectionHeader/4'></content-ref><content-ref src='/page/184/Text/5'></content-ref><content-ref src='/page/184/Text/6'></content-ref><content-ref src='/page/184/Code/7'></content-ref><content-ref src='/page/184/Text/8'></content-ref><content-ref src='/page/184/Code/9'></content-ref><content-ref src='/page/184/Text/10'></content-ref><content-ref src='/page/184/Text/11'></content-ref><content-ref src='/page/184/Code/12'></content-ref><content-ref src='/page/184/Text/13'></content-ref><content-ref src='/page/184/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/184/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.2431640625,
              61.0048828125
            ],
            [
              525.6033935546875,
              61.0048828125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.2431640625,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.2431640625,
            61.0048828125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/184/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.908203125
            ],
            [
              525.638671875,
              60.908203125
            ],
            [
              525.638671875,
              70.2861328125
            ],
            [
              510.099609375,
              70.2861328125
            ]
          ],
          "bbox": [
            510.099609375,
            60.908203125,
            525.638671875,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/184/Code/182",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; print 1337 + start\n10:07:17\nExercise 17.5. Write an add method for Points that works with either a Point object or a tuple:</pre>",
          "polygon": [
            [
              129.5419921875,
              88.68572998046875
            ],
            [
              512.6279907226562,
              88.68572998046875
            ],
            [
              512.6279907226562,
              123.0897216796875
            ],
            [
              129.5419921875,
              123.0897216796875
            ]
          ],
          "bbox": [
            129.5419921875,
            88.68572998046875,
            512.6279907226562,
            123.0897216796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/184/ListGroup/183",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/184/ListItem/2'></content-ref><content-ref src='/page/184/ListItem/3'></content-ref></ul></p>",
          "polygon": [
            [
              142.9892578125,
              135.931640625
            ],
            [
              525.6038818359375,
              135.931640625
            ],
            [
              525.6038818359375,
              192.77020263671875
            ],
            [
              142.9892578125,
              192.77020263671875
            ]
          ],
          "bbox": [
            142.9892578125,
            135.931640625,
            525.6038818359375,
            192.77020263671875
          ],
          "children": [
            {
              "id": "/page/184/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i> If the second operand is a Point, the method should return a new Point whose x coordinate is</i> <i>the sum of the x coordinates of the operands, and likewise for the y coordinates.</i></li>",
              "polygon": [
                [
                  142.9892578125,
                  135.931640625
                ],
                [
                  525.6034545898438,
                  135.931640625
                ],
                [
                  525.6034545898438,
                  159.900146484375
                ],
                [
                  142.9892578125,
                  159.900146484375
                ]
              ],
              "bbox": [
                142.9892578125,
                135.931640625,
                525.6034545898438,
                159.900146484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/182/SectionHeader/1",
                "4": "/page/183/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/184/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i> If the second operand is a tuple, the method should add the first element of the tuple to the x</i> <i>coordinate and the second element to the y coordinate, and return a new Point with the result.</i></li>",
              "polygon": [
                [
                  143.736328125,
                  169.6728515625
                ],
                [
                  525.6038818359375,
                  169.6728515625
                ],
                [
                  525.6038818359375,
                  192.77020263671875
                ],
                [
                  143.736328125,
                  192.77020263671875
                ]
              ],
              "bbox": [
                143.736328125,
                169.6728515625,
                525.6038818359375,
                192.77020263671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/182/SectionHeader/1",
                "4": "/page/183/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/183/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/184/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-184-0\"></span><b>17.9 Polymorphism</b></h4>",
          "polygon": [
            [
              128.42138671875,
              223.13671875
            ],
            [
              266.29058837890625,
              223.13671875
            ],
            [
              266.29058837890625,
              237.53094482421875
            ],
            [
              128.42138671875,
              237.53094482421875
            ]
          ],
          "bbox": [
            128.42138671875,
            223.13671875,
            266.29058837890625,
            237.53094482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Type-based dispatch is useful when it is necessary, but (fortunately) it is not always necessary. Often you can avoid it by writing functions that work correctly for arguments with different types.</p>",
          "polygon": [
            [
              128.49609375,
              250.013671875
            ],
            [
              525.6033935546875,
              250.013671875
            ],
            [
              525.6033935546875,
              284.6479187011719
            ],
            [
              128.49609375,
              284.6479187011719
            ]
          ],
          "bbox": [
            128.49609375,
            250.013671875,
            525.6033935546875,
            284.6479187011719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Many of the functions we wrote for strings will actually work for any kind of sequence. For example, in Section <a href=\"#page-123-0\">11.1</a> we used histogram to count the number of times each letter appears in a word.</p>",
          "polygon": [
            [
              129.09375,
              294.486328125
            ],
            [
              525.6034545898438,
              294.486328125
            ],
            [
              525.6034545898438,
              329.677734375
            ],
            [
              129.09375,
              329.677734375
            ]
          ],
          "bbox": [
            129.09375,
            294.486328125,
            525.6034545898438,
            329.677734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Code/7",
          "block_type": "Code",
          "html": "<pre>def histogram(s):\n    d = dict()\n    for c in s:\n        if c not in d:\n             d[c] = 1\n        else:\n             d[c] = d[c]+1\n    return d</pre>",
          "polygon": [
            [
              129.5999755859375,
              335.8267822265625
            ],
            [
              260.34375,
              335.8267822265625
            ],
            [
              260.34375,
              431.150390625
            ],
            [
              129.5999755859375,
              431.150390625
            ]
          ],
          "bbox": [
            129.5999755859375,
            335.8267822265625,
            260.34375,
            431.150390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This function also works for lists, tuples, and even dictionaries, as long as the elements of s are hashable, so they can be used as keys in d.</p>",
          "polygon": [
            [
              129.59999084472656,
              436.60546875
            ],
            [
              526.53515625,
              436.60546875
            ],
            [
              526.53515625,
              459.9599609375
            ],
            [
              129.59999084472656,
              459.9599609375
            ]
          ],
          "bbox": [
            129.59999084472656,
            436.60546875,
            526.53515625,
            459.9599609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Code/9",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t = ['spam', 'egg', 'spam', 'spam', 'bacon', 'spam']\n&gt;&gt;&gt; histogram(t)\n{'bacon': 1, 'egg': 1, 'spam': 4}</pre>",
          "polygon": [
            [
              128.86962890625,
              466.3138122558594
            ],
            [
              422.4314270019531,
              466.3138122558594
            ],
            [
              422.4314270019531,
              501.1875
            ],
            [
              128.86962890625,
              501.1875
            ]
          ],
          "bbox": [
            128.86962890625,
            466.3138122558594,
            422.4314270019531,
            501.1875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Functions that can work with several types are called <b>polymorphic</b>. Polymorphism can facilitate code reuse. For example, the built-in function sum, which adds the elements of a sequence, works as long as the elements of the sequence support addition.</p>",
          "polygon": [
            [
              129.5419921875,
              506.98828125
            ],
            [
              525.9375,
              506.98828125
            ],
            [
              525.9375,
              541.6689758300781
            ],
            [
              129.5419921875,
              541.6689758300781
            ]
          ],
          "bbox": [
            129.5419921875,
            506.98828125,
            525.9375,
            541.6689758300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since Time objects provide an add method, they work with sum:</p>",
          "polygon": [
            [
              128.57080078125,
              551.84765625
            ],
            [
              409.095703125,
              551.84765625
            ],
            [
              409.095703125,
              562.1059722900391
            ],
            [
              128.57080078125,
              562.1059722900391
            ]
          ],
          "bbox": [
            128.57080078125,
            551.84765625,
            409.095703125,
            562.1059722900391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Code/12",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; t1 = Time(7, 43)\n&gt;&gt;&gt; t2 = Time(7, 41)\n&gt;&gt;&gt; t3 = Time(7, 37)\n&gt;&gt;&gt; total = sum([t1, t2, t3])\n&gt;&gt;&gt; print total\n23:01:00</pre>",
          "polygon": [
            [
              129.09375,
              568.4598236083984
            ],
            [
              281.29058837890625,
              568.4598236083984
            ],
            [
              281.29058837890625,
              639.6328125
            ],
            [
              129.09375,
              639.6328125
            ]
          ],
          "bbox": [
            129.09375,
            568.4598236083984,
            281.29058837890625,
            639.6328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In general, if all of the operations inside a function work with a given type, then the function works with that type.</p>",
          "polygon": [
            [
              128.197265625,
              646.04638671875
            ],
            [
              525.6034545898438,
              646.04638671875
            ],
            [
              525.6034545898438,
              668.2039947509766
            ],
            [
              128.197265625,
              668.2039947509766
            ]
          ],
          "bbox": [
            128.197265625,
            646.04638671875,
            525.6034545898438,
            668.2039947509766
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/184/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The best kind of polymorphism is the unintentional kind, where you discover that a function you already wrote can be applied to a type you never planned for.</p>",
          "polygon": [
            [
              127.8984375,
              678.3046875
            ],
            [
              525.6034545898438,
              678.3046875
            ],
            [
              525.6034545898438,
              700.8349990844727
            ],
            [
              127.8984375,
              700.8349990844727
            ]
          ],
          "bbox": [
            127.8984375,
            678.3046875,
            525.6034545898438,
            700.8349990844727
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "2": "/page/182/SectionHeader/1",
        "4": "/page/184/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/185/Page/179",
      "block_type": "Page",
      "html": "<content-ref src='/page/185/PageHeader/0'></content-ref><content-ref src='/page/185/PageHeader/18'></content-ref><content-ref src='/page/185/SectionHeader/1'></content-ref><content-ref src='/page/185/Text/2'></content-ref><content-ref src='/page/185/Text/3'></content-ref><content-ref src='/page/185/Text/4'></content-ref><content-ref src='/page/185/Code/5'></content-ref><content-ref src='/page/185/Text/6'></content-ref><content-ref src='/page/185/Code/7'></content-ref><content-ref src='/page/185/Text/8'></content-ref><content-ref src='/page/185/Text/9'></content-ref><content-ref src='/page/185/SectionHeader/10'></content-ref><content-ref src='/page/185/Text/11'></content-ref><content-ref src='/page/185/Text/12'></content-ref><content-ref src='/page/185/Text/13'></content-ref><content-ref src='/page/185/Text/14'></content-ref><content-ref src='/page/185/Text/15'></content-ref><content-ref src='/page/185/Text/16'></content-ref><content-ref src='/page/185/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/185/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.60302734375
            ],
            [
              483.205078125,
              59.60302734375
            ],
            [
              483.205078125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.60302734375,
            483.205078125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/185/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.83837890625,
              59.5546875
            ],
            [
              102.57275390625,
              59.5546875
            ],
            [
              102.57275390625,
              70.4794921875
            ],
            [
              85.83837890625,
              70.4794921875
            ]
          ],
          "bbox": [
            85.83837890625,
            59.5546875,
            102.57275390625,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/182/SectionHeader/1",
            "4": "/page/184/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/185/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-185-0\"></span><b>17.10 Debugging</b></h2>",
          "polygon": [
            [
              85.39013671875,
              84.83642578125
            ],
            [
              207.984375,
              84.83642578125
            ],
            [
              207.984375,
              101.3203125
            ],
            [
              85.39013671875,
              101.3203125
            ]
          ],
          "bbox": [
            85.39013671875,
            84.83642578125,
            207.984375,
            101.3203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is legal to add attributes to objects at any point in the execution of a program, but if you are a stickler for type theory, it is a dubious practice to have objects of the same type with different attribute sets. It is usually a good idea to initialize all of an object's attributes in the init method.</p>",
          "polygon": [
            [
              85.6142578125,
              110.1181640625
            ],
            [
              484.1015625,
              110.1181640625
            ],
            [
              484.1015625,
              158.32891845703125
            ],
            [
              85.6142578125,
              158.32891845703125
            ]
          ],
          "bbox": [
            85.6142578125,
            110.1181640625,
            484.1015625,
            158.32891845703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not sure whether an object has a particular attribute, you can use the built-in function hasattr (see Section <a href=\"#page-169-0\">15.7)</a>.</p>",
          "polygon": [
            [
              85.763671875,
              165.2255859375
            ],
            [
              483.205078125,
              165.2255859375
            ],
            [
              483.205078125,
              189.79888916015625
            ],
            [
              85.763671875,
              189.79888916015625
            ]
          ],
          "bbox": [
            85.763671875,
            165.2255859375,
            483.205078125,
            189.79888916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another way to access the attributes of an object is through the special attribute __dict__, which is a dictionary that maps attribute names (as strings) and values:</p>",
          "polygon": [
            [
              85.6142578125,
              196.9365234375
            ],
            [
              483.50390625,
              196.9365234375
            ],
            [
              483.50390625,
              221.2689208984375
            ],
            [
              85.6142578125,
              221.2689208984375
            ]
          ],
          "bbox": [
            85.6142578125,
            196.9365234375,
            483.50390625,
            221.2689208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; p = Point(3, 4)\n&gt;&gt;&gt; print p.__dict__\n{'y': 4, 'x': 3}</pre>",
          "polygon": [
            [
              85.166015625,
              226.459716796875
            ],
            [
              191.3994140625,
              226.459716796875
            ],
            [
              191.3994140625,
              260.811279296875
            ],
            [
              85.166015625,
              260.811279296875
            ]
          ],
          "bbox": [
            85.166015625,
            226.459716796875,
            191.3994140625,
            260.811279296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For purposes of debugging, you might find it useful to keep this function handy:</p>",
          "polygon": [
            [
              85.763671875,
              264.515625
            ],
            [
              442.564453125,
              264.515625
            ],
            [
              442.564453125,
              276.264892578125
            ],
            [
              85.763671875,
              276.264892578125
            ]
          ],
          "bbox": [
            85.763671875,
            264.515625,
            442.564453125,
            276.264892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Code/7",
          "block_type": "Code",
          "html": "<pre>def print_attributes(obj):\n    for attr in obj.__dict__:\n        print attr, getattr(obj, attr)</pre>",
          "polygon": [
            [
              86.4000473022461,
              281.4557189941406
            ],
            [
              285.1539306640625,
              281.4557189941406
            ],
            [
              285.1539306640625,
              315.80731201171875
            ],
            [
              86.4000473022461,
              315.80731201171875
            ]
          ],
          "bbox": [
            86.4000473022461,
            281.4557189941406,
            285.1539306640625,
            315.80731201171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">print_attributes traverses the items in the object's dictionary and prints each attribute name and its corresponding value.</p>",
          "polygon": [
            [
              85.46484375,
              319.4296875
            ],
            [
              482.3988952636719,
              319.4296875
            ],
            [
              482.3988952636719,
              343.4548645019531
            ],
            [
              85.46484375,
              343.4548645019531
            ]
          ],
          "bbox": [
            85.46484375,
            319.4296875,
            482.3988952636719,
            343.4548645019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The built-in function getattr takes an object and an attribute name (as a string) and returns the attribute's value.</p>",
          "polygon": [
            [
              85.6142578125,
              351.140625
            ],
            [
              483.50390625,
              351.140625
            ],
            [
              483.50390625,
              374.92486572265625
            ],
            [
              85.6142578125,
              374.92486572265625
            ]
          ],
          "bbox": [
            85.6142578125,
            351.140625,
            483.50390625,
            374.92486572265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/185/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-185-1\"></span><b>17.11 Interface and implementation</b></h2>",
          "polygon": [
            [
              85.3154296875,
              400.640625
            ],
            [
              328.26263427734375,
              400.640625
            ],
            [
              328.26263427734375,
              417.40594482421875
            ],
            [
              85.3154296875,
              417.40594482421875
            ]
          ],
          "bbox": [
            85.3154296875,
            400.640625,
            328.26263427734375,
            417.40594482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the goals of object-oriented design is to make software more maintainable, which means that you can keep the program working when other parts of the system change, and modify the program to meet new requirements.</p>",
          "polygon": [
            [
              85.9130859375,
              426.55078125
            ],
            [
              482.4035339355469,
              426.55078125
            ],
            [
              482.4035339355469,
              463.2398681640625
            ],
            [
              85.9130859375,
              463.2398681640625
            ]
          ],
          "bbox": [
            85.9130859375,
            426.55078125,
            482.4035339355469,
            463.2398681640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A design principle that helps achieve that goal is to keep interfaces separate from implementations. For objects, that means that the methods a class provides should not depend on how the attributes are represented.</p>",
          "polygon": [
            [
              85.763671875,
              471.0234375
            ],
            [
              482.4034118652344,
              471.0234375
            ],
            [
              482.4034118652344,
              506.90386962890625
            ],
            [
              85.763671875,
              506.90386962890625
            ]
          ],
          "bbox": [
            85.763671875,
            471.0234375,
            482.4034118652344,
            506.90386962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, in this chapter we developed a class that represents a time of day. Methods provided by this class include time_to_int, is_after, and add_time.</p>",
          "polygon": [
            [
              85.9130859375,
              514.3359375
            ],
            [
              482.40338134765625,
              514.3359375
            ],
            [
              482.40338134765625,
              538.3738708496094
            ],
            [
              85.9130859375,
              538.3738708496094
            ]
          ],
          "bbox": [
            85.9130859375,
            514.3359375,
            482.40338134765625,
            538.3738708496094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">We could implement those methods in several ways. The details of the implementation depend on how we represent time. In this chapter, the attributes of a Time object are hour, minute, and second.</p>",
          "polygon": [
            [
              85.763671875,
              546.046875
            ],
            [
              482.90625,
              546.046875
            ],
            [
              482.90625,
              582.0378723144531
            ],
            [
              85.763671875,
              582.0378723144531
            ]
          ],
          "bbox": [
            85.763671875,
            546.046875,
            482.90625,
            582.0378723144531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As an alternative, we could replace these attributes with a single integer representing the number of seconds since midnight. This implementation would make some methods, like is_after, easier to write, but it makes some methods harder.</p>",
          "polygon": [
            [
              85.763671875,
              589.74609375
            ],
            [
              483.50390625,
              589.74609375
            ],
            [
              483.50390625,
              625.7018737792969
            ],
            [
              85.763671875,
              625.7018737792969
            ]
          ],
          "bbox": [
            85.763671875,
            589.74609375,
            483.50390625,
            625.7018737792969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">After you deploy a new class, you might discover a better implementation. If other parts of the program are using your class, it might be time-consuming and error-prone to change the interface.</p>",
          "polygon": [
            [
              85.9130859375,
              633.05859375
            ],
            [
              483.50390625,
              633.05859375
            ],
            [
              483.50390625,
              669.41015625
            ],
            [
              85.9130859375,
              669.41015625
            ]
          ],
          "bbox": [
            85.9130859375,
            633.05859375,
            483.50390625,
            669.41015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/185/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\" class=\"has-continuation\">But if you designed the interface carefully, you can change the implementation without changing the interface, which means that other parts of the program don't have to change.</p>",
          "polygon": [
            [
              85.763671875,
              676.7578125
            ],
            [
              483.802734375,
              676.7578125
            ],
            [
              483.802734375,
              700.8348770141602
            ],
            [
              85.763671875,
              700.8348770141602
            ]
          ],
          "bbox": [
            85.763671875,
            676.7578125,
            483.802734375,
            700.8348770141602
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "2": "/page/185/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/186/Page/246",
      "block_type": "Page",
      "html": "<content-ref src='/page/186/PageHeader/0'></content-ref><content-ref src='/page/186/PageHeader/18'></content-ref><content-ref src='/page/186/Text/1'></content-ref><content-ref src='/page/186/TextInlineMath/2'></content-ref><content-ref src='/page/186/SectionHeader/3'></content-ref><content-ref src='/page/186/ListGroup/225'></content-ref><content-ref src='/page/186/SectionHeader/12'></content-ref><content-ref src='/page/186/Text/13'></content-ref><content-ref src='/page/186/ListGroup/226'></content-ref><content-ref src='/page/186/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/186/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.09375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.09375,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.09375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/186/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.501953125,
              60.8115234375
            ],
            [
              525.638671875,
              60.8115234375
            ],
            [
              525.638671875,
              69.8994140625
            ],
            [
              509.501953125,
              69.8994140625
            ]
          ],
          "bbox": [
            509.501953125,
            60.8115234375,
            525.638671875,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/186/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Keeping the interface separate from the implementation means that you have to hide the attributes. Code in other parts of the program (outside the class definition) should use methods to read and modify the state of the object. They should not access the attributes directly. This principle is called <b>information hiding</b>; see <a href=\"http://en.wikipedia.org/wiki/Information_hiding\">http://en.wikipedia.org/wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Information_hiding\">Information_hiding</a>.</p>",
          "polygon": [
            [
              129.60000610351562,
              88.171875
            ],
            [
              525.9375,
              88.171875
            ],
            [
              525.9375,
              147.57489013671875
            ],
            [
              129.60000610351562,
              147.57489013671875
            ]
          ],
          "bbox": [
            129.60000610351562,
            88.171875,
            525.9375,
            147.57489013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/186/TextInlineMath/2",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\"><b>Exercise 17.6.</b> <i>Download the code from this chapter (http://thinkpython.com/code/</i> <i>Time2.py). Change the attributes of</i> Time <i>to be a single integer representing seconds since mid</i> <i>night. Then modify the methods (and the function</i> int_to_time<i>) to work with the new implemen</i> <i>tation. You should not have to modify the test code in</i> main<i>. When you are done, the output should</i> <i>be the same as before. Solution:</i> http://thinkpython.com/code/Time2_soln.py</p>",
          "polygon": [
            [
              129.2431640625,
              149.55389404296875
            ],
            [
              525.6044921875,
              149.55389404296875
            ],
            [
              525.6044921875,
              208.37420654296875
            ],
            [
              129.2431640625,
              208.37420654296875
            ]
          ],
          "bbox": [
            129.2431640625,
            149.55389404296875,
            525.6044921875,
            208.37420654296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/186/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-186-0\"></span><b>17.12 Glossary</b></h4>",
          "polygon": [
            [
              128.27197265625,
              239.185791015625
            ],
            [
              234.580078125,
              239.185791015625
            ],
            [
              234.580078125,
              253.531982421875
            ],
            [
              128.27197265625,
              253.531982421875
            ]
          ],
          "bbox": [
            128.27197265625,
            239.185791015625,
            234.580078125,
            253.531982421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/186/ListGroup/225",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/186/ListItem/4'></content-ref><content-ref src='/page/186/ListItem/5'></content-ref><content-ref src='/page/186/ListItem/6'></content-ref><content-ref src='/page/186/ListItem/7'></content-ref><content-ref src='/page/186/ListItem/8'></content-ref><content-ref src='/page/186/ListItem/9'></content-ref><content-ref src='/page/186/ListItem/10'></content-ref><content-ref src='/page/186/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              127.97314453125,
              262.775390625
            ],
            [
              525.6033935546875,
              262.775390625
            ],
            [
              525.6033935546875,
              492.4809875488281
            ],
            [
              127.97314453125,
              492.4809875488281
            ]
          ],
          "bbox": [
            127.97314453125,
            262.775390625,
            525.6033935546875,
            492.4809875488281
          ],
          "children": [
            {
              "id": "/page/186/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>object-oriented language:</b> A language that provides features, such as user-defined classes and method syntax, that facilitate object-oriented programming.</li>",
              "polygon": [
                [
                  129.392578125,
                  262.775390625
                ],
                [
                  525.603271484375,
                  262.775390625
                ],
                [
                  525.603271484375,
                  285.1959228515625
                ],
                [
                  129.392578125,
                  285.1959228515625
                ]
              ],
              "bbox": [
                129.392578125,
                262.775390625,
                525.603271484375,
                285.1959228515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>object-oriented programming:</b> A style of programming in which data and the operations that manipulate it are organized into classes and methods.</li>",
              "polygon": [
                [
                  129.5419921875,
                  295.453125
                ],
                [
                  525.602294921875,
                  295.453125
                ],
                [
                  525.602294921875,
                  318.29193115234375
                ],
                [
                  129.5419921875,
                  318.29193115234375
                ]
              ],
              "bbox": [
                129.5419921875,
                295.453125,
                525.602294921875,
                318.29193115234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>method:</b> A function that is defined inside a class definition and is invoked on instances of that class.</li>",
              "polygon": [
                [
                  129.2431640625,
                  329.13421630859375
                ],
                [
                  525.6033935546875,
                  329.13421630859375
                ],
                [
                  525.6033935546875,
                  351.3889465332031
                ],
                [
                  129.2431640625,
                  351.3889465332031
                ]
              ],
              "bbox": [
                129.2431640625,
                329.13421630859375,
                525.6033935546875,
                351.3889465332031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>subject:</b> The object a method is invoked on.</li>",
              "polygon": [
                [
                  127.97314453125,
                  362.2312316894531
                ],
                [
                  323.19287109375,
                  362.2312316894531
                ],
                [
                  323.19287109375,
                  372.29095458984375
                ],
                [
                  127.97314453125,
                  372.29095458984375
                ]
              ],
              "bbox": [
                127.97314453125,
                362.2312316894531,
                323.19287109375,
                372.29095458984375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>operator overloading:</b> Changing the behavior of an operator like + so it works with a userdefined type.</li>",
              "polygon": [
                [
                  129.09375,
                  383.080810546875
                ],
                [
                  525.6030883789062,
                  383.080810546875
                ],
                [
                  525.6030883789062,
                  405.386962890625
                ],
                [
                  129.09375,
                  405.386962890625
                ]
              ],
              "bbox": [
                129.09375,
                383.080810546875,
                525.6030883789062,
                405.386962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>type-based dispatch:</b> A programming pattern that checks the type of an operand and invokes different functions for different types.</li>",
              "polygon": [
                [
                  129.2431640625,
                  416.229248046875
                ],
                [
                  525.6030883789062,
                  416.229248046875
                ],
                [
                  525.6030883789062,
                  438.48297119140625
                ],
                [
                  129.2431640625,
                  438.48297119140625
                ]
              ],
              "bbox": [
                129.2431640625,
                416.229248046875,
                525.6030883789062,
                438.48297119140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>polymorphic:</b> Pertaining to a function that can work with more than one type.</li>",
              "polygon": [
                [
                  128.9443359375,
                  449.32525634765625
                ],
                [
                  476.33203125,
                  449.32525634765625
                ],
                [
                  476.33203125,
                  459.3849792480469
                ],
                [
                  128.9443359375,
                  459.3849792480469
                ]
              ],
              "bbox": [
                128.9443359375,
                449.32525634765625,
                476.33203125,
                459.3849792480469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>information hiding:</b> The principle that the interface provided by an object should not depend on its implementation, in particular the representation of its attributes.</li>",
              "polygon": [
                [
                  128.3466796875,
                  470.2272644042969
                ],
                [
                  525.6028442382812,
                  470.2272644042969
                ],
                [
                  525.6028442382812,
                  492.4809875488281
                ],
                [
                  128.3466796875,
                  492.4809875488281
                ]
              ],
              "bbox": [
                128.3466796875,
                470.2272644042969,
                525.6028442382812,
                492.4809875488281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/3"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/3"
          },
          "images": null
        },
        {
          "id": "/page/186/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-186-1\"></span><b>17.13 Exercises</b></h4>",
          "polygon": [
            [
              128.6455078125,
              523.1208190917969
            ],
            [
              236.2236328125,
              523.1208190917969
            ],
            [
              236.2236328125,
              537.4670257568359
            ],
            [
              128.6455078125,
              537.4670257568359
            ]
          ],
          "bbox": [
            128.6455078125,
            523.1208190917969,
            236.2236328125,
            537.4670257568359
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/186/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 17.7.</b> <i>This exercise is a cautionary tale about one of the most common, and difficult to</i> <i>find, errors in Python. Write a definition for a class named</i> Kangaroo <i>with the following methods:</i></p>",
          "polygon": [
            [
              127.1513671875,
              549.9140625
            ],
            [
              525.6008911132812,
              549.9140625
            ],
            [
              525.6008911132812,
              572.4244232177734
            ],
            [
              127.1513671875,
              572.4244232177734
            ]
          ],
          "bbox": [
            127.1513671875,
            549.9140625,
            525.6008911132812,
            572.4244232177734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/186/ListGroup/226",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/186/ListItem/14'></content-ref><content-ref src='/page/186/ListItem/15'></content-ref><content-ref src='/page/186/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              141.046875,
              587.0390625
            ],
            [
              525.9375,
              587.0390625
            ],
            [
              525.9375,
              663.5312805175781
            ],
            [
              141.046875,
              663.5312805175781
            ]
          ],
          "bbox": [
            141.046875,
            587.0390625,
            525.9375,
            663.5312805175781
          ],
          "children": [
            {
              "id": "/page/186/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. An</i> __init__ <i>method that initializes an attribute named</i> pouch_contents <i>to an empty list.</i></li>",
              "polygon": [
                [
                  141.046875,
                  587.0390625
                ],
                [
                  525.603515625,
                  587.0390625
                ],
                [
                  525.603515625,
                  597.3614196777344
                ],
                [
                  141.046875,
                  597.3614196777344
                ]
              ],
              "bbox": [
                141.046875,
                587.0390625,
                525.603515625,
                597.3614196777344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. A method named</i> put_in_pouch <i>that takes an object of any type and adds it to</i> pouch_contents<i>.</i></li>",
              "polygon": [
                [
                  141.4951171875,
                  608.2776641845703
                ],
                [
                  525.9375,
                  608.2776641845703
                ],
                [
                  525.9375,
                  630.73828125
                ],
                [
                  141.4951171875,
                  630.73828125
                ]
              ],
              "bbox": [
                141.4951171875,
                608.2776641845703,
                525.9375,
                630.73828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/186/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. A</i> __str__ <i>method that returns a string representation of the Kangaroo object and the con</i><i>tents of the pouch.</i></li>",
              "polygon": [
                [
                  141.7939453125,
                  640.79296875
                ],
                [
                  525.9375,
                  640.79296875
                ],
                [
                  525.9375,
                  663.5312805175781
                ],
                [
                  141.7939453125,
                  663.5312805175781
                ]
              ],
              "bbox": [
                141.7939453125,
                640.79296875,
                525.9375,
                663.5312805175781
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/186/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Test your code by creating two</i> Kangaroo <i>objects, assigning them to variables named</i> kanga <i>and</i> roo<i>, and then adding</i> roo <i>to the contents of</i> kanga<i>'s pouch.</i></p>",
          "polygon": [
            [
              127.8984375,
              678.5056838989258
            ],
            [
              525.9375,
              678.5056838989258
            ],
            [
              525.9375,
              700.685417175293
            ],
            [
              127.8984375,
              700.685417175293
            ]
          ],
          "bbox": [
            127.8984375,
            678.5056838989258,
            525.9375,
            700.685417175293
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "2": "/page/185/SectionHeader/10",
        "4": "/page/186/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/187/Page/232",
      "block_type": "Page",
      "html": "<content-ref src='/page/187/PageHeader/0'></content-ref><content-ref src='/page/187/PageHeader/16'></content-ref><content-ref src='/page/187/Text/1'></content-ref><content-ref src='/page/187/Text/2'></content-ref><content-ref src='/page/187/Text/3'></content-ref><content-ref src='/page/187/Text/4'></content-ref><content-ref src='/page/187/Text/5'></content-ref><content-ref src='/page/187/Text/6'></content-ref><content-ref src='/page/187/Text/7'></content-ref><content-ref src='/page/187/TextInlineMath/8'></content-ref><content-ref src='/page/187/Text/9'></content-ref><content-ref src='/page/187/Caption/10'></content-ref><content-ref src='/page/187/Code/11'></content-ref><content-ref src='/page/187/ListGroup/228'></content-ref><content-ref src='/page/187/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/187/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.85986328125
            ],
            [
              482.4034423828125,
              60.85986328125
            ],
            [
              482.4034423828125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.85986328125,
            482.4034423828125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.568359375,
              60.66650390625
            ],
            [
              101.00390625,
              60.66650390625
            ],
            [
              101.00390625,
              69.65771484375
            ],
            [
              84.568359375,
              69.65771484375
            ]
          ],
          "bbox": [
            84.568359375,
            60.66650390625,
            101.00390625,
            69.65771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Download</i> <a href=\"http://thinkpython.com/code/BadKangaroo.py\">http:</a> <a href=\"http://thinkpython.com/code/BadKangaroo.py\">//</a> <a href=\"http://thinkpython.com/code/BadKangaroo.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/BadKangaroo.py\">com/</a> <a href=\"http://thinkpython.com/code/BadKangaroo.py\">code/</a> <a href=\"http://thinkpython.com/code/BadKangaroo.py\">BadKangaroo.</a> <a href=\"http://thinkpython.com/code/BadKangaroo.py\">py</a> <i>. It contains a solution to the</i> <i>previous problem with one big, nasty bug. Find and fix the bug.</i></p>",
          "polygon": [
            [
              85.46484375,
              88.5819091796875
            ],
            [
              483.205078125,
              88.5819091796875
            ],
            [
              483.205078125,
              110.81915283203125
            ],
            [
              85.46484375,
              110.81915283203125
            ]
          ],
          "bbox": [
            85.46484375,
            88.5819091796875,
            483.205078125,
            110.81915283203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If you get stuck, you can download</i> <a href=\"http://thinkpython.com/code/GoodKangaroo.py\">http:</a> <a href=\"http://thinkpython.com/code/GoodKangaroo.py\">//</a> <a href=\"http://thinkpython.com/code/GoodKangaroo.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/GoodKangaroo.py\">com/</a> <a href=\"http://thinkpython.com/code/GoodKangaroo.py\">code/</a> <a href=\"http://thinkpython.com/code/GoodKangaroo.py\">GoodKangaroo.</a> <a href=\"http://thinkpython.com/code/GoodKangaroo.py\">py</a> <i>,</i> <i>which explains the problem and demonstrates a solution.</i></p>",
          "polygon": [
            [
              85.3154296875,
              120.91387939453125
            ],
            [
              482.3996276855469,
              120.91387939453125
            ],
            [
              482.3996276855469,
              143.15118408203125
            ],
            [
              85.3154296875,
              143.15118408203125
            ]
          ],
          "bbox": [
            85.3154296875,
            120.91387939453125,
            482.3996276855469,
            143.15118408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 17.8.</b> <i>Visual is a Python module that provides 3-D graphics. It is not always included</i> <i>in a Python installation, so you might have to install it from your software repository or, if it's not</i> <i>there, from</i> <a href=\"http://vpython.org\">http:</a> <a href=\"http://vpython.org\">//</a> <a href=\"http://vpython.org\">vpython.</a> <a href=\"http://vpython.org\">org</a> <i>.</i></p>",
          "polygon": [
            [
              85.6142578125,
              145.382568359375
            ],
            [
              482.4033508300781,
              145.382568359375
            ],
            [
              482.4033508300781,
              179.73419189453125
            ],
            [
              85.6142578125,
              179.73419189453125
            ]
          ],
          "bbox": [
            85.6142578125,
            145.382568359375,
            482.4033508300781,
            179.73419189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The following example creates a 3-D space that is 256 units wide, long and high, and sets the</i> <i>\"center\" to be the point</i> (128, 128, 128)<i>. Then it draws a blue sphere.</i></p>",
          "polygon": [
            [
              85.3154296875,
              189.90863037109375
            ],
            [
              482.4032897949219,
              189.90863037109375
            ],
            [
              482.4032897949219,
              212.23895263671875
            ],
            [
              85.3154296875,
              212.23895263671875
            ]
          ],
          "bbox": [
            85.3154296875,
            189.90863037109375,
            482.4032897949219,
            212.23895263671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from visual import *</p>",
          "polygon": [
            [
              85.68896484375,
              218.29278564453125
            ],
            [
              191.0072784423828,
              218.29278564453125
            ],
            [
              191.0072784423828,
              228.25537109375
            ],
            [
              85.68896484375,
              228.25537109375
            ]
          ],
          "bbox": [
            85.68896484375,
            218.29278564453125,
            191.0072784423828,
            228.25537109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">scene.range = (256, 256, 256) scene.center = (128, 128, 128)</p>",
          "polygon": [
            [
              85.6142578125,
              242.666015625
            ],
            [
              262.8193359375,
              242.666015625
            ],
            [
              262.8193359375,
              265.095703125
            ],
            [
              85.6142578125,
              265.095703125
            ]
          ],
          "bbox": [
            85.6142578125,
            242.666015625,
            262.8193359375,
            265.095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">color = (0.1, 0.1, 0.9) # mostly blue sphere(pos=scene.center, radius=128, color=color)</p>",
          "polygon": [
            [
              85.763671875,
              278.630859375
            ],
            [
              342.70770263671875,
              278.630859375
            ],
            [
              342.70770263671875,
              301.42138671875
            ],
            [
              85.763671875,
              301.42138671875
            ]
          ],
          "bbox": [
            85.763671875,
            278.630859375,
            342.70770263671875,
            301.42138671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/TextInlineMath/8",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">color <i>is an RGB tuple; that is, the elements are Red-Green-Blue levels between 0.0 and 1.0 (see </i>http://en.wikipedia.org/wiki/RGB_color_model<i>). </i></p>",
          "polygon": [
            [
              85.6142578125,
              307.6006774902344
            ],
            [
              482.90625,
              307.6006774902344
            ],
            [
              482.90625,
              329.7582702636719
            ],
            [
              85.6142578125,
              329.7582702636719
            ]
          ],
          "bbox": [
            85.6142578125,
            307.6006774902344,
            482.90625,
            329.7582702636719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>If you run this code, you should see a window with a black background and a blue sphere. If you</i> <i>drag the middle button up and down, you can zoom in and out. You can also rotate the scene by</i> <i>dragging the right button, but with only one sphere in the world, it is hard to tell the difference.</i></p>",
          "polygon": [
            [
              85.46484375,
              339.93267822265625
            ],
            [
              482.607421875,
              339.93267822265625
            ],
            [
              482.607421875,
              374.2842712402344
            ],
            [
              85.46484375,
              374.2842712402344
            ]
          ],
          "bbox": [
            85.46484375,
            339.93267822265625,
            482.607421875,
            374.2842712402344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Caption/10",
          "block_type": "Caption",
          "html": "<p><i>The following loop creates a cube of spheres:</i></p>",
          "polygon": [
            [
              85.24072265625,
              384.01171875
            ],
            [
              262.072265625,
              384.01171875
            ],
            [
              262.072265625,
              394.4212646484375
            ],
            [
              85.24072265625,
              394.4212646484375
            ]
          ],
          "bbox": [
            85.24072265625,
            384.01171875,
            262.072265625,
            394.4212646484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/Code/11",
          "block_type": "Code",
          "html": "<pre>t = range(0, 256, 51)\nfor x in t:\n    for y in t:\n        for z in t:\n            pos = x, y, z\n            sphere(pos=pos, radius=10, color=color)</pre>",
          "polygon": [
            [
              84.94189453125,
              400.6478271484375
            ],
            [
              353.153076171875,
              400.6478271484375
            ],
            [
              353.153076171875,
              472.5703125
            ],
            [
              84.94189453125,
              472.5703125
            ]
          ],
          "bbox": [
            84.94189453125,
            400.6478271484375,
            353.153076171875,
            472.5703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/187/ListGroup/228",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/187/ListItem/12'></content-ref><content-ref src='/page/187/ListItem/13'></content-ref><content-ref src='/page/187/ListItem/14'></content-ref></ul></p>",
          "polygon": [
            [
              97.8662109375,
              485.33203125
            ],
            [
              482.4039001464844,
              485.33203125
            ],
            [
              482.4039001464844,
              584.8013305664062
            ],
            [
              97.8662109375,
              584.8013305664062
            ]
          ],
          "bbox": [
            97.8662109375,
            485.33203125,
            482.4039001464844,
            584.8013305664062
          ],
          "children": [
            {
              "id": "/page/187/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Put this code in a script and make sure it works for you.</i></li>",
              "polygon": [
                [
                  98.4638671875,
                  485.33203125
                ],
                [
                  334.8072509765625,
                  485.33203125
                ],
                [
                  334.8072509765625,
                  495.6953125
                ],
                [
                  98.4638671875,
                  495.6953125
                ]
              ],
              "bbox": [
                98.4638671875,
                485.33203125,
                334.8072509765625,
                495.6953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/187/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Modify the program so that each sphere in the cube has the color that corresponds to its</i> <i>position in RGB space. Notice that the coordinates are in the range 0–255, but the RGB</i> <i>tuples are in the range 0.0–1.0.</i></li>",
              "polygon": [
                [
                  98.1650390625,
                  505.44140625
                ],
                [
                  482.40386962890625,
                  505.44140625
                ],
                [
                  482.40386962890625,
                  540.2483215332031
                ],
                [
                  98.1650390625,
                  540.2483215332031
                ]
              ],
              "bbox": [
                98.1650390625,
                505.44140625,
                482.40386962890625,
                540.2483215332031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/187/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. Download</i> <a href=\"http://thinkpython.com/code/color_list.py\">http:</a> <a href=\"http://thinkpython.com/code/color_list.py\">//</a> <a href=\"http://thinkpython.com/code/color_list.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/color_list.py\">com/</a> <a href=\"http://thinkpython.com/code/color_list.py\">code/</a> <a href=\"http://thinkpython.com/code/color_list.py\">color_</a> <a href=\"http://thinkpython.com/code/color_list.py\">list.</a> <a href=\"http://thinkpython.com/code/color_list.py\">py</a> <i>and use the function</i> read_colors <i>to generate a list of the available colors on your system, their names and RGB</i> <i>values. For each named color draw a sphere in the position that corresponds to its RGB values.</i></li>",
              "polygon": [
                [
                  97.8662109375,
                  550.3690338134766
                ],
                [
                  482.4039001464844,
                  550.3690338134766
                ],
                [
                  482.4039001464844,
                  584.8013305664062
                ],
                [
                  97.8662109375,
                  584.8013305664062
                ]
              ],
              "bbox": [
                97.8662109375,
                550.3690338134766,
                482.4039001464844,
                584.8013305664062
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/178/SectionHeader/1",
                "2": "/page/185/SectionHeader/10",
                "4": "/page/186/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/187/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You can see my solution at</i> <a href=\"http://thinkpython.com/code/color_space.py\">http:</a> <a href=\"http://thinkpython.com/code/color_space.py\">//</a> <a href=\"http://thinkpython.com/code/color_space.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/color_space.py\">com/</a> <a href=\"http://thinkpython.com/code/color_space.py\">code/</a> <a href=\"http://thinkpython.com/code/color_space.py\">color_</a> <a href=\"http://thinkpython.com/code/color_space.py\">space.</a> <a href=\"http://thinkpython.com/code/color_space.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              85.9130859375,
              598.89404296875
            ],
            [
              431.5656433105469,
              598.89404296875
            ],
            [
              431.5656433105469,
              608.9373321533203
            ],
            [
              85.9130859375,
              608.9373321533203
            ]
          ],
          "bbox": [
            85.9130859375,
            598.89404296875,
            431.5656433105469,
            608.9373321533203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/185/SectionHeader/10",
            "4": "/page/186/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/178/SectionHeader/1",
        "2": "/page/185/SectionHeader/10",
        "4": "/page/186/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/188/Page/163",
      "block_type": "Page",
      "html": "<content-ref src='/page/188/SectionHeader/0'></content-ref><content-ref src='/page/188/SectionHeader/1'></content-ref><content-ref src='/page/188/Text/2'></content-ref><content-ref src='/page/188/Text/3'></content-ref><content-ref src='/page/188/SectionHeader/4'></content-ref><content-ref src='/page/188/Text/5'></content-ref><content-ref src='/page/188/Text/6'></content-ref><content-ref src='/page/188/Text/7'></content-ref><content-ref src='/page/188/Text/8'></content-ref><content-ref src='/page/188/Table/9'></content-ref><content-ref src='/page/188/Text/10'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/188/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-188-0\"></span><b>Chapter 18</b></h2>",
          "polygon": [
            [
              129.09375,
              163.1953125
            ],
            [
              233.68359375,
              163.1953125
            ],
            [
              233.68359375,
              184.29296875
            ],
            [
              129.09375,
              184.29296875
            ]
          ],
          "bbox": [
            129.09375,
            163.1953125,
            233.68359375,
            184.29296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/178/SectionHeader/1",
            "2": "/page/188/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/188/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Inheritance</b></h1>",
          "polygon": [
            [
              128.9443359375,
              218.302734375
            ],
            [
              259.8310546875,
              218.302734375
            ],
            [
              259.8310546875,
              243.2823486328125
            ],
            [
              128.9443359375,
              243.2823486328125
            ]
          ],
          "bbox": [
            128.9443359375,
            218.302734375,
            259.8310546875,
            243.2823486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/188/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this chapter I present classes to represent playing cards, decks of cards, and poker hands. If you don't play poker, you can read about it at <a href=\"http://en.wikipedia.org/wiki/Poker\">http://en.wikipedia.org/wiki/Poker</a>, but you don't have to; I'll tell you what you need to know for the exercises. Code examples from this chapter are available from <a href=\"http://thinkpython.com/code/Card.py\">http://thinkpython.com/code/Card.py</a>.</p>",
          "polygon": [
            [
              128.9443359375,
              288.8653259277344
            ],
            [
              526.53515625,
              288.8653259277344
            ],
            [
              526.53515625,
              335.4109191894531
            ],
            [
              128.9443359375,
              335.4109191894531
            ]
          ],
          "bbox": [
            128.9443359375,
            288.8653259277344,
            526.53515625,
            335.4109191894531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/188/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not familiar with Anglo-American playing cards, you can read about them at <a href=\"http://en.wikipedia.org/wiki/Playing_cards\">http://en.wikipedia.org/wiki/Playing_cards</a>.</p>",
          "polygon": [
            [
              128.6455078125,
              345.0943298339844
            ],
            [
              525.9375,
              345.0943298339844
            ],
            [
              525.9375,
              367.576171875
            ],
            [
              128.6455078125,
              367.576171875
            ]
          ],
          "bbox": [
            128.6455078125,
            345.0943298339844,
            525.9375,
            367.576171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/188/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-188-1\"></span><b>18.1 Card objects</b></h4>",
          "polygon": [
            [
              128.6455078125,
              395.9047546386719
            ],
            [
              250.8662109375,
              395.9047546386719
            ],
            [
              250.8662109375,
              410.30859375
            ],
            [
              128.6455078125,
              410.30859375
            ]
          ],
          "bbox": [
            128.6455078125,
            395.9047546386719,
            250.8662109375,
            410.30859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/188/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are fifty-two cards in a deck, each of which belongs to one of four suits and one of thirteen ranks. The suits are Spades, Hearts, Diamonds, and Clubs (in descending order in bridge). The ranks are Ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, Jack, Queen, and King. Depending on the game that you are playing, an Ace may be higher than King or lower than 2.</p>",
          "polygon": [
            [
              129.2431640625,
              421.91015625
            ],
            [
              526.53515625,
              421.91015625
            ],
            [
              526.53515625,
              468.6509094238281
            ],
            [
              129.2431640625,
              468.6509094238281
            ]
          ],
          "bbox": [
            129.2431640625,
            421.91015625,
            526.53515625,
            468.6509094238281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/188/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we want to define a new object to represent a playing card, it is obvious what the attributes should be: rank and suit. It is not as obvious what type the attributes should be. One possibility is to use strings containing words like 'Spade' for suits and 'Queen' for ranks. One problem with this implementation is that it would not be easy to compare cards to see which had a higher rank or suit.</p>",
          "polygon": [
            [
              129.392578125,
              477.984375
            ],
            [
              526.236328125,
              477.984375
            ],
            [
              526.236328125,
              537.0749206542969
            ],
            [
              129.392578125,
              537.0749206542969
            ]
          ],
          "bbox": [
            129.392578125,
            477.984375,
            526.236328125,
            537.0749206542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/188/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An alternative is to use integers to <b>encode</b> the ranks and suits. In this context, \"encode\" means that we are going to define a mapping between numbers and suits, or between numbers and ranks. This kind of encoding is not meant to be a secret (that would be \"encryption\").</p>",
          "polygon": [
            [
              129.5419921875,
              546.6612091064453
            ],
            [
              525.9375,
              546.6612091064453
            ],
            [
              525.9375,
              593.3039245605469
            ],
            [
              129.5419921875,
              593.3039245605469
            ]
          ],
          "bbox": [
            129.5419921875,
            546.6612091064453,
            525.9375,
            593.3039245605469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/188/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, this table shows the suits and the corresponding integer codes:</p>",
          "polygon": [
            [
              128.6455078125,
              602.89453125
            ],
            [
              464.9765625,
              602.89453125
            ],
            [
              464.9765625,
              612.9499206542969
            ],
            [
              128.6455078125,
              612.9499206542969
            ]
          ],
          "bbox": [
            128.6455078125,
            602.89453125,
            464.9765625,
            612.9499206542969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/188/Table/9",
          "block_type": "Table",
          "html": "<table><tbody><tr><th>Spades</th><th>→</th><th>3</th></tr><tr><th>Hearts</th><th>→</th><th>2</th></tr><tr><th>Diamonds</th><th>→</th><th>1</th></tr><tr><th>Clubs</th><th>→</th><th>0</th></tr></tbody></table>",
          "polygon": [
            [
              134.3232421875,
              621.6783294677734
            ],
            [
              226.0634765625,
              621.6783294677734
            ],
            [
              226.0634765625,
              669.41015625
            ],
            [
              134.3232421875,
              669.41015625
            ]
          ],
          "bbox": [
            134.3232421875,
            621.6783294677734,
            226.0634765625,
            669.41015625
          ],
          "children": [
            {
              "id": "/page/188/TableCell/150",
              "block_type": "TableCell",
              "html": "<th>Spades</th>",
              "polygon": [
                [
                  134.3232421875,
                  621.6783294677734
                ],
                [
                  135.3232421875,
                  621.6783294677734
                ],
                [
                  135.3232421875,
                  622.6783294677734
                ],
                [
                  134.3232421875,
                  622.6783294677734
                ]
              ],
              "bbox": [
                134.3232421875,
                621.6783294677734,
                135.3232421875,
                622.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/151",
              "block_type": "TableCell",
              "html": "<th>→</th>",
              "polygon": [
                [
                  135.3232421875,
                  621.6783294677734
                ],
                [
                  136.3232421875,
                  621.6783294677734
                ],
                [
                  136.3232421875,
                  622.6783294677734
                ],
                [
                  135.3232421875,
                  622.6783294677734
                ]
              ],
              "bbox": [
                135.3232421875,
                621.6783294677734,
                136.3232421875,
                622.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/152",
              "block_type": "TableCell",
              "html": "<th>3</th>",
              "polygon": [
                [
                  136.3232421875,
                  621.6783294677734
                ],
                [
                  137.3232421875,
                  621.6783294677734
                ],
                [
                  137.3232421875,
                  622.6783294677734
                ],
                [
                  136.3232421875,
                  622.6783294677734
                ]
              ],
              "bbox": [
                136.3232421875,
                621.6783294677734,
                137.3232421875,
                622.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/153",
              "block_type": "TableCell",
              "html": "<th>Hearts</th>",
              "polygon": [
                [
                  134.3232421875,
                  622.6783294677734
                ],
                [
                  135.3232421875,
                  622.6783294677734
                ],
                [
                  135.3232421875,
                  623.6783294677734
                ],
                [
                  134.3232421875,
                  623.6783294677734
                ]
              ],
              "bbox": [
                134.3232421875,
                622.6783294677734,
                135.3232421875,
                623.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/154",
              "block_type": "TableCell",
              "html": "<th>→</th>",
              "polygon": [
                [
                  135.3232421875,
                  622.6783294677734
                ],
                [
                  136.3232421875,
                  622.6783294677734
                ],
                [
                  136.3232421875,
                  623.6783294677734
                ],
                [
                  135.3232421875,
                  623.6783294677734
                ]
              ],
              "bbox": [
                135.3232421875,
                622.6783294677734,
                136.3232421875,
                623.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/155",
              "block_type": "TableCell",
              "html": "<th>2</th>",
              "polygon": [
                [
                  136.3232421875,
                  622.6783294677734
                ],
                [
                  137.3232421875,
                  622.6783294677734
                ],
                [
                  137.3232421875,
                  623.6783294677734
                ],
                [
                  136.3232421875,
                  623.6783294677734
                ]
              ],
              "bbox": [
                136.3232421875,
                622.6783294677734,
                137.3232421875,
                623.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/156",
              "block_type": "TableCell",
              "html": "<th>Diamonds</th>",
              "polygon": [
                [
                  134.3232421875,
                  623.6783294677734
                ],
                [
                  135.3232421875,
                  623.6783294677734
                ],
                [
                  135.3232421875,
                  624.6783294677734
                ],
                [
                  134.3232421875,
                  624.6783294677734
                ]
              ],
              "bbox": [
                134.3232421875,
                623.6783294677734,
                135.3232421875,
                624.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/157",
              "block_type": "TableCell",
              "html": "<th>→</th>",
              "polygon": [
                [
                  135.3232421875,
                  623.6783294677734
                ],
                [
                  136.3232421875,
                  623.6783294677734
                ],
                [
                  136.3232421875,
                  624.6783294677734
                ],
                [
                  135.3232421875,
                  624.6783294677734
                ]
              ],
              "bbox": [
                135.3232421875,
                623.6783294677734,
                136.3232421875,
                624.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/158",
              "block_type": "TableCell",
              "html": "<th>1</th>",
              "polygon": [
                [
                  136.3232421875,
                  623.6783294677734
                ],
                [
                  137.3232421875,
                  623.6783294677734
                ],
                [
                  137.3232421875,
                  624.6783294677734
                ],
                [
                  136.3232421875,
                  624.6783294677734
                ]
              ],
              "bbox": [
                136.3232421875,
                623.6783294677734,
                137.3232421875,
                624.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/159",
              "block_type": "TableCell",
              "html": "<th>Clubs</th>",
              "polygon": [
                [
                  134.3232421875,
                  624.6783294677734
                ],
                [
                  135.3232421875,
                  624.6783294677734
                ],
                [
                  135.3232421875,
                  625.6783294677734
                ],
                [
                  134.3232421875,
                  625.6783294677734
                ]
              ],
              "bbox": [
                134.3232421875,
                624.6783294677734,
                135.3232421875,
                625.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/160",
              "block_type": "TableCell",
              "html": "<th>→</th>",
              "polygon": [
                [
                  135.3232421875,
                  624.6783294677734
                ],
                [
                  136.3232421875,
                  624.6783294677734
                ],
                [
                  136.3232421875,
                  625.6783294677734
                ],
                [
                  135.3232421875,
                  625.6783294677734
                ]
              ],
              "bbox": [
                135.3232421875,
                624.6783294677734,
                136.3232421875,
                625.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            },
            {
              "id": "/page/188/TableCell/161",
              "block_type": "TableCell",
              "html": "<th>0</th>",
              "polygon": [
                [
                  136.3232421875,
                  624.6783294677734
                ],
                [
                  137.3232421875,
                  624.6783294677734
                ],
                [
                  137.3232421875,
                  625.6783294677734
                ],
                [
                  136.3232421875,
                  625.6783294677734
                ]
              ],
              "bbox": [
                136.3232421875,
                624.6783294677734,
                137.3232421875,
                625.6783294677734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/188/SectionHeader/4"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": null
        },
        {
          "id": "/page/188/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This code makes it easy to compare cards; because higher suits map to higher numbers, we can compare suits by comparing their codes.</p>",
          "polygon": [
            [
              128.197265625,
              677.91796875
            ],
            [
              525.638671875,
              677.91796875
            ],
            [
              525.638671875,
              700.8349380493164
            ],
            [
              128.197265625,
              700.8349380493164
            ]
          ],
          "bbox": [
            128.197265625,
            677.91796875,
            525.638671875,
            700.8349380493164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "4": "/page/188/SectionHeader/4"
      },
      "images": null
    },
    {
      "id": "/page/189/Page/240",
      "block_type": "Page",
      "html": "<content-ref src='/page/189/PageHeader/0'></content-ref><content-ref src='/page/189/PageHeader/17'></content-ref><content-ref src='/page/189/Text/1'></content-ref><content-ref src='/page/189/Text/2'></content-ref><content-ref src='/page/189/Text/3'></content-ref><content-ref src='/page/189/Text/4'></content-ref><content-ref src='/page/189/Code/5'></content-ref><content-ref src='/page/189/Text/6'></content-ref><content-ref src='/page/189/Text/7'></content-ref><content-ref src='/page/189/Code/8'></content-ref><content-ref src='/page/189/SectionHeader/9'></content-ref><content-ref src='/page/189/Text/10'></content-ref><content-ref src='/page/189/Code/11'></content-ref><content-ref src='/page/189/Code/12'></content-ref><content-ref src='/page/189/Text/13'></content-ref><content-ref src='/page/189/Text/14'></content-ref><content-ref src='/page/189/Text/15'></content-ref><content-ref src='/page/189/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/189/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.171142578125
            ],
            [
              482.40338134765625,
              61.171142578125
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.171142578125,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.908203125
            ],
            [
              102.19921875,
              60.908203125
            ],
            [
              102.19921875,
              70.2861328125
            ],
            [
              85.763671875,
              70.2861328125
            ]
          ],
          "bbox": [
            85.763671875,
            60.908203125,
            102.19921875,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The mapping for ranks is fairly obvious; each of the numerical ranks maps to the corresponding integer, and for face cards:</p>",
          "polygon": [
            [
              85.9130859375,
              88.80029296875
            ],
            [
              483.50390625,
              88.80029296875
            ],
            [
              483.50390625,
              110.99188232421875
            ],
            [
              85.9130859375,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.9130859375,
            88.80029296875,
            483.50390625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Jack 7→ 11 Queen 7→ 12 King 7→ 13</p>",
          "polygon": [
            [
              89.2001953125,
              119.1822509765625
            ],
            [
              171.52734375,
              119.1822509765625
            ],
            [
              171.52734375,
              154.63690185546875
            ],
            [
              89.2001953125,
              154.63690185546875
            ]
          ],
          "bbox": [
            89.2001953125,
            119.1822509765625,
            171.52734375,
            154.63690185546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I am using the 7→ symbol to make it clear that these mappings are not part of the Python program. They are part of the program design, but they don't appear explicitly in the code.</p>",
          "polygon": [
            [
              85.46484375,
              162.3482666015625
            ],
            [
              483.50390625,
              162.3482666015625
            ],
            [
              483.50390625,
              185.818359375
            ],
            [
              85.46484375,
              185.818359375
            ]
          ],
          "bbox": [
            85.46484375,
            162.3482666015625,
            483.50390625,
            185.818359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The class definition for Card looks like this:</p>",
          "polygon": [
            [
              85.6142578125,
              205.541015625
            ],
            [
              276.1513977050781,
              205.541015625
            ],
            [
              276.1513977050781,
              216.91082763671875
            ],
            [
              85.6142578125,
              216.91082763671875
            ]
          ],
          "bbox": [
            85.6142578125,
            205.541015625,
            276.1513977050781,
            216.91082763671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Code/5",
          "block_type": "Code",
          "html": "<pre>class Card(object):\n    \"\"\"Represents a standard playing card.\"\"\"\n    def __init__(self, suit=0, rank=2):\n        self.suit = suit\n        self.rank = rank</pre>",
          "polygon": [
            [
              86.39998626708984,
              221.9366455078125
            ],
            [
              321.837890625,
              221.9366455078125
            ],
            [
              321.837890625,
              294.486328125
            ],
            [
              86.39998626708984,
              294.486328125
            ]
          ],
          "bbox": [
            86.39998626708984,
            221.9366455078125,
            321.837890625,
            294.486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As usual, the init method takes an optional parameter for each attribute. The default card is the 2 of Clubs.</p>",
          "polygon": [
            [
              85.9130859375,
              297.966796875
            ],
            [
              482.4033203125,
              297.966796875
            ],
            [
              482.4033203125,
              320.3518371582031
            ],
            [
              85.9130859375,
              320.3518371582031
            ]
          ],
          "bbox": [
            85.9130859375,
            297.966796875,
            482.4033203125,
            320.3518371582031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To create a Card, you call Card with the suit and rank of the card you want.</p>",
          "polygon": [
            [
              85.9130859375,
              328.7109375
            ],
            [
              417.1640625,
              328.7109375
            ],
            [
              417.1640625,
              339.4608459472656
            ],
            [
              85.9130859375,
              339.4608459472656
            ]
          ],
          "bbox": [
            85.9130859375,
            328.7109375,
            417.1640625,
            339.4608459472656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/Code/8",
          "block_type": "Code",
          "html": "<pre>queen_of_diamonds = Card(1, 12)</pre>",
          "polygon": [
            [
              85.763671875,
              344.4856872558594
            ],
            [
              248.5512237548828,
              344.4856872558594
            ],
            [
              248.5512237548828,
              354.4482727050781
            ],
            [
              85.763671875,
              354.4482727050781
            ]
          ],
          "bbox": [
            85.763671875,
            344.4856872558594,
            248.5512237548828,
            354.4482727050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/188/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/189/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-189-0\"></span><b>18.2 Class attributes</b></h4>",
          "polygon": [
            [
              85.763671875,
              382.49969482421875
            ],
            [
              227.42312622070312,
              382.49969482421875
            ],
            [
              227.42312622070312,
              396.8459167480469
            ],
            [
              85.763671875,
              396.8459167480469
            ]
          ],
          "bbox": [
            85.763671875,
            382.49969482421875,
            227.42312622070312,
            396.8459167480469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In order to print Card objects in a way that people can easily read, we need a mapping from the integer codes to the corresponding ranks and suits. A natural way to do that is with lists of strings. We assign these lists to <b>class attributes</b>:</p>",
          "polygon": [
            [
              85.9130859375,
              407.6015625
            ],
            [
              482.40338134765625,
              407.6015625
            ],
            [
              482.40338134765625,
              442.51385498046875
            ],
            [
              85.9130859375,
              442.51385498046875
            ]
          ],
          "bbox": [
            85.9130859375,
            407.6015625,
            482.40338134765625,
            442.51385498046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/189/Code/11",
          "block_type": "Code",
          "html": "<pre># inside class Card:</pre>",
          "polygon": [
            [
              86.2119140625,
              447.5386962890625
            ],
            [
              191.0072479248047,
              447.5386962890625
            ],
            [
              191.0072479248047,
              457.50128173828125
            ],
            [
              86.2119140625,
              457.50128173828125
            ]
          ],
          "bbox": [
            86.2119140625,
            447.5386962890625,
            191.0072479248047,
            457.50128173828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/189/Code/12",
          "block_type": "Code",
          "html": "<pre>suit_names = ['Clubs', 'Diamonds', 'Hearts', 'Spades']\nrank_names = [None, 'Ace', '2', '3', '4', '5', '6', '7',\n          '8', '9', '10', 'Jack', 'Queen', 'King']\ndef __str__(self):\n    return '%s of %s' % (Card.rank_names[self.rank],\n                         Card.suit_names[self.suit])</pre>",
          "polygon": [
            [
              107.31596374511719,
              471.796875
            ],
            [
              401.326171875,
              471.796875
            ],
            [
              401.326171875,
              555.0563201904297
            ],
            [
              107.31596374511719,
              555.0563201904297
            ]
          ],
          "bbox": [
            107.31596374511719,
            471.796875,
            401.326171875,
            555.0563201904297
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Variables like suit_names and rank_names, which are defined inside a class but outside of any method, are called class attributes because they are associated with the class object Card.</p>",
          "polygon": [
            [
              85.763671875,
              560.230712890625
            ],
            [
              482.40350341796875,
              560.230712890625
            ],
            [
              482.40350341796875,
              594.7318725585938
            ],
            [
              85.763671875,
              594.7318725585938
            ]
          ],
          "bbox": [
            85.763671875,
            560.230712890625,
            482.40350341796875,
            594.7318725585938
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This term distinguishes them from variables like suit and rank, which are called <b>instance</b> <b>attributes</b> because they are associated with a particular instance.</p>",
          "polygon": [
            [
              85.6142578125,
              603.66796875
            ],
            [
              482.39996337890625,
              603.66796875
            ],
            [
              482.39996337890625,
              626.0348815917969
            ],
            [
              85.6142578125,
              626.0348815917969
            ]
          ],
          "bbox": [
            85.6142578125,
            603.66796875,
            482.39996337890625,
            626.0348815917969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Both kinds of attribute are accessed using dot notation. For example, in __str__, self is a Card object, and self.rank is its rank. Similarly, Card is a class object, and Card.rank_names is a list of strings associated with the class.</p>",
          "polygon": [
            [
              85.6142578125,
              634.9921875
            ],
            [
              482.40570068359375,
              634.9921875
            ],
            [
              482.40570068359375,
              669.5318984985352
            ],
            [
              85.6142578125,
              669.5318984985352
            ]
          ],
          "bbox": [
            85.6142578125,
            634.9921875,
            482.40570068359375,
            669.5318984985352
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/189/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Every card has its own suit and rank, but there is only one copy of suit_names and rank_names.</p>",
          "polygon": [
            [
              85.46484375,
              678.3046875
            ],
            [
              482.607421875,
              678.3046875
            ],
            [
              482.607421875,
              700.8348999023438
            ],
            [
              85.46484375,
              700.8348999023438
            ]
          ],
          "bbox": [
            85.46484375,
            678.3046875,
            482.607421875,
            700.8348999023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "4": "/page/189/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/190/Page/223",
      "block_type": "Page",
      "html": "<content-ref src='/page/190/PageHeader/0'></content-ref><content-ref src='/page/190/PageHeader/14'></content-ref><content-ref src='/page/190/FigureGroup/221'></content-ref><content-ref src='/page/190/Text/3'></content-ref><content-ref src='/page/190/Text/4'></content-ref><content-ref src='/page/190/Text/5'></content-ref><content-ref src='/page/190/Code/6'></content-ref><content-ref src='/page/190/Text/7'></content-ref><content-ref src='/page/190/SectionHeader/8'></content-ref><content-ref src='/page/190/Text/9'></content-ref><content-ref src='/page/190/Text/10'></content-ref><content-ref src='/page/190/Text/11'></content-ref><content-ref src='/page/190/Text/12'></content-ref><content-ref src='/page/190/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/190/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              127.8984375,
              61.14990234375
            ],
            [
              525.6033935546875,
              61.14990234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              127.8984375,
              71.13372802734375
            ]
          ],
          "bbox": [
            127.8984375,
            61.14990234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/190/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.71484375
            ],
            [
              525.638671875,
              60.71484375
            ],
            [
              525.638671875,
              69.99609375
            ],
            [
              510.099609375,
              69.99609375
            ]
          ],
          "bbox": [
            510.099609375,
            60.71484375,
            525.638671875,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/190/FigureGroup/221",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/190/Figure/1'></content-ref><content-ref src='/page/190/Caption/2'></content-ref>",
          "polygon": [
            [
              246.9814453125,
              84.498046875
            ],
            [
              408.19921875,
              84.498046875
            ],
            [
              408.19921875,
              234.7529296875
            ],
            [
              246.9814453125,
              234.7529296875
            ]
          ],
          "bbox": [
            246.9814453125,
            84.498046875,
            408.19921875,
            234.7529296875
          ],
          "children": [
            {
              "id": "/page/190/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  246.9814453125,
                  84.498046875
                ],
                [
                  408.19921875,
                  84.498046875
                ],
                [
                  408.19921875,
                  211.1484375
                ],
                [
                  246.9814453125,
                  211.1484375
                ]
              ],
              "bbox": [
                246.9814453125,
                84.498046875,
                408.19921875,
                211.1484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/189/SectionHeader/9"
              },
              "images": {
                "/page/190/Figure/1": "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"
              }
            },
            {
              "id": "/page/190/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-190-1\"></span>Figure 18.1: Object diagram.</p>",
              "polygon": [
                [
                  262.8193359375,
                  224.296875
                ],
                [
                  389.7672424316406,
                  224.296875
                ],
                [
                  389.7672424316406,
                  234.7529296875
                ],
                [
                  262.8193359375,
                  234.7529296875
                ]
              ],
              "bbox": [
                262.8193359375,
                224.296875,
                389.7672424316406,
                234.7529296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "4": "/page/189/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/190/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Putting it all together, the expression Card.rank_names[self.rank] means \"use the attribute rank from the object self as an index into the list rank_names from the class Card, and select the appropriate string.\"</p>",
          "polygon": [
            [
              128.9443359375,
              256.974609375
            ],
            [
              525.9375,
              256.974609375
            ],
            [
              525.9375,
              292.284912109375
            ],
            [
              128.9443359375,
              292.284912109375
            ]
          ],
          "bbox": [
            128.9443359375,
            256.974609375,
            525.9375,
            292.284912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first element of rank_names is None because there is no card with rank zero. By including None as a place-keeper, we get a mapping with the nice property that the index 2 maps to the string '2', and so on. To avoid this tweak, we could have used a dictionary instead of a list.</p>",
          "polygon": [
            [
              128.3466796875,
              302.607421875
            ],
            [
              525.9375,
              302.607421875
            ],
            [
              525.9375,
              349.5279235839844
            ],
            [
              128.3466796875,
              349.5279235839844
            ]
          ],
          "bbox": [
            128.3466796875,
            302.607421875,
            525.9375,
            349.5279235839844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">With the methods we have so far, we can create and print cards:</p>",
          "polygon": [
            [
              127.7490234375,
              359.6484375
            ],
            [
              409.8777770996094,
              359.6484375
            ],
            [
              409.8777770996094,
              370.1889343261719
            ],
            [
              127.7490234375,
              370.1889343261719
            ]
          ],
          "bbox": [
            127.7490234375,
            359.6484375,
            409.8777770996094,
            370.1889343261719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/190/Code/6",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; card1 = Card(2, 11)\n&gt;&gt;&gt; print card1\nJack of Hearts</pre>",
          "polygon": [
            [
              129.16845703125,
              376.6640625
            ],
            [
              249.89834594726562,
              376.6640625
            ],
            [
              249.89834594726562,
              411.1163635253906
            ],
            [
              129.16845703125,
              411.1163635253906
            ]
          ],
          "bbox": [
            129.16845703125,
            376.6640625,
            249.89834594726562,
            411.1163635253906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-190-1\">18.1</a> is a diagram of the Card class object and one Card instance. Card is a class object, so it has type type. card1 has type Card. (To save space, I didn't draw the contents of suit_names and rank_names).</p>",
          "polygon": [
            [
              129.5419921875,
              417.65625
            ],
            [
              525.9375,
              417.65625
            ],
            [
              525.9375,
              452.3429260253906
            ],
            [
              129.5419921875,
              452.3429260253906
            ]
          ],
          "bbox": [
            129.5419921875,
            417.65625,
            525.9375,
            452.3429260253906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/189/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/190/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-190-0\"></span><b>18.3 Comparing cards</b></h4>",
          "polygon": [
            [
              128.3466796875,
              483.01171875
            ],
            [
              281.0240783691406,
              483.01171875
            ],
            [
              281.0240783691406,
              497.5999755859375
            ],
            [
              128.3466796875,
              497.5999755859375
            ]
          ],
          "bbox": [
            128.3466796875,
            483.01171875,
            281.0240783691406,
            497.5999755859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For built-in types, there are relational operators (&lt;, &gt;, ==, etc.) that compare values and determine when one is greater than, less than, or equal to another. For user-defined types, we can override the behavior of the built-in operators by providing a method named __cmp__.</p>",
          "polygon": [
            [
              129.09375,
              509.6953125
            ],
            [
              525.6034545898438,
              509.6953125
            ],
            [
              525.6034545898438,
              545.0279235839844
            ],
            [
              129.09375,
              545.0279235839844
            ]
          ],
          "bbox": [
            129.09375,
            509.6953125,
            525.6034545898438,
            545.0279235839844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">__cmp__ takes two parameters, self and other, and returns a positive number if the first object is greater, a negative number if the second object is greater, and 0 if they are equal to each other.</p>",
          "polygon": [
            [
              128.794921875,
              554.94140625
            ],
            [
              525.638671875,
              554.94140625
            ],
            [
              525.638671875,
              590.0769195556641
            ],
            [
              128.794921875,
              590.0769195556641
            ]
          ],
          "bbox": [
            128.794921875,
            554.94140625,
            525.638671875,
            590.0769195556641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The correct ordering for cards is not obvious. For example, which is better, the 3 of Clubs or the 2 of Diamonds? One has a higher rank, but the other has a higher suit. In order to compare cards, you have to decide whether rank or suit is more important.</p>",
          "polygon": [
            [
              128.0478515625,
              600.1875
            ],
            [
              525.9375,
              600.1875
            ],
            [
              525.9375,
              635.1259155273438
            ],
            [
              128.0478515625,
              635.1259155273438
            ]
          ],
          "bbox": [
            128.0478515625,
            600.1875,
            525.9375,
            635.1259155273438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The answer might depend on what game you are playing, but to keep things simple, we'll make the arbitrary choice that suit is more important, so all of the Spades outrank all of the Diamonds, and so on.</p>",
          "polygon": [
            [
              128.0478515625,
              645.43359375
            ],
            [
              525.9375,
              645.43359375
            ],
            [
              525.9375,
              680.1749267578125
            ],
            [
              128.0478515625,
              680.1749267578125
            ]
          ],
          "bbox": [
            128.0478515625,
            645.43359375,
            525.9375,
            680.1749267578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/190/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">With that decided, we can write __cmp__:</p>",
          "polygon": [
            [
              128.794921875,
              690.6796875
            ],
            [
              311.9765625,
              690.6796875
            ],
            [
              311.9765625,
              700.8349227905273
            ],
            [
              128.794921875,
              700.8349227905273
            ]
          ],
          "bbox": [
            128.794921875,
            690.6796875,
            311.9765625,
            700.8349227905273
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "4": "/page/190/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/191/Page/186",
      "block_type": "Page",
      "html": "<content-ref src='/page/191/PageHeader/0'></content-ref><content-ref src='/page/191/PageHeader/14'></content-ref><content-ref src='/page/191/Code/1'></content-ref><content-ref src='/page/191/Text/2'></content-ref><content-ref src='/page/191/Code/3'></content-ref><content-ref src='/page/191/Code/4'></content-ref><content-ref src='/page/191/Text/5'></content-ref><content-ref src='/page/191/Text/6'></content-ref><content-ref src='/page/191/Text/7'></content-ref><content-ref src='/page/191/SectionHeader/8'></content-ref><content-ref src='/page/191/Text/9'></content-ref><content-ref src='/page/191/Text/10'></content-ref><content-ref src='/page/191/Code/185'></content-ref><content-ref src='/page/191/Code/12'></content-ref><content-ref src='/page/191/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/191/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.40338134765625,
              60.71484375
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.85986328125
            ],
            [
              101.4521484375,
              60.85986328125
            ],
            [
              101.4521484375,
              70.33447265625
            ],
            [
              85.763671875,
              70.33447265625
            ]
          ],
          "bbox": [
            85.763671875,
            60.85986328125,
            101.4521484375,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Code/1",
          "block_type": "Code",
          "html": "<pre># inside class Card:\n    def __cmp__(self, other):\n        # check the suits\n        if self.suit &gt; other.suit: return 1\n        if self.suit &lt; other.suit: return -1\n        # suits are the same... check ranks\n        if self.rank &gt; other.rank: return 1\n        if self.rank &lt; other.rank: return -1\n        # ranks are the same... it's a tie\n        return 0</pre>",
          "polygon": [
            [
              86.4000015258789,
              88.68572998046875
            ],
            [
              321.240234375,
              88.68572998046875
            ],
            [
              321.240234375,
              247.88671875
            ],
            [
              86.4000015258789,
              247.88671875
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.68572998046875,
            321.240234375,
            247.88671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can write this more concisely using tuple comparison:</p>",
          "polygon": [
            [
              86.28662109375,
              251.173828125
            ],
            [
              343.65234375,
              251.173828125
            ],
            [
              343.65234375,
              261.324951171875
            ],
            [
              86.28662109375,
              261.324951171875
            ]
          ],
          "bbox": [
            86.28662109375,
            251.173828125,
            343.65234375,
            261.324951171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Code/3",
          "block_type": "Code",
          "html": "<pre># inside class Card:</pre>",
          "polygon": [
            [
              85.83837890625,
              267.40777587890625
            ],
            [
              191.00729370117188,
              267.40777587890625
            ],
            [
              191.00729370117188,
              277.370361328125
            ],
            [
              85.83837890625,
              277.370361328125
            ]
          ],
          "bbox": [
            85.83837890625,
            267.40777587890625,
            191.00729370117188,
            277.370361328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Code/4",
          "block_type": "Code",
          "html": "<pre>def __cmp__(self, other):\n    t1 = self.suit, self.rank\n    t2 = other.suit, other.rank\n    return cmp(t1, t2)</pre>",
          "polygon": [
            [
              107.31600952148438,
              291.779296875
            ],
            [
              270.140625,
              291.779296875
            ],
            [
              270.140625,
              338.34136962890625
            ],
            [
              107.31600952148438,
              338.34136962890625
            ]
          ],
          "bbox": [
            107.31600952148438,
            291.779296875,
            270.140625,
            338.34136962890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The built-in function cmp has the same interface as the method __cmp__: it takes two values and returns a positive number if the first is larger, a negative number if the second is larger, and 0 if they are equal.</p>",
          "polygon": [
            [
              85.763671875,
              343.79296875
            ],
            [
              482.607421875,
              343.79296875
            ],
            [
              482.607421875,
              379.074951171875
            ],
            [
              85.763671875,
              379.074951171875
            ]
          ],
          "bbox": [
            85.763671875,
            343.79296875,
            482.607421875,
            379.074951171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Python 3, cmp no longer exists, and the __cmp__ method is not supported. Instead you should provide __lt__, which returns True if self is less than other. You can implement __lt__ using tuples and the &lt; operator.</p>",
          "polygon": [
            [
              85.763671875,
              388.458984375
            ],
            [
              482.4022521972656,
              388.458984375
            ],
            [
              482.4022521972656,
              423.62994384765625
            ],
            [
              85.763671875,
              423.62994384765625
            ]
          ],
          "bbox": [
            85.763671875,
            388.458984375,
            482.4022521972656,
            423.62994384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 18.1.</b> <i>Write a</i> __cmp__ <i>method for Time objects. Hint: you can use tuple comparison, but</i> <i>you also might consider using integer subtraction.</i></p>",
          "polygon": [
            [
              85.6142578125,
              424.6171875
            ],
            [
              482.4032287597656,
              424.6171875
            ],
            [
              482.4032287597656,
              447.8452453613281
            ],
            [
              85.6142578125,
              447.8452453613281
            ]
          ],
          "bbox": [
            85.6142578125,
            424.6171875,
            482.4032287597656,
            447.8452453613281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/190/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-191-0\"></span><b>18.4 Decks</b></h4>",
          "polygon": [
            [
              85.763671875,
              477.44677734375
            ],
            [
              166.48049926757812,
              477.44677734375
            ],
            [
              166.48049926757812,
              491.7929992675781
            ],
            [
              85.763671875,
              491.7929992675781
            ]
          ],
          "bbox": [
            85.763671875,
            477.44677734375,
            166.48049926757812,
            491.7929992675781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now that we have Cards, the next step is to define Decks. Since a deck is made up of cards, it is natural for each Deck to contain a list of cards as an attribute.</p>",
          "polygon": [
            [
              85.763671875,
              504.1793518066406
            ],
            [
              482.40338134765625,
              504.1793518066406
            ],
            [
              482.40338134765625,
              526.3359375
            ],
            [
              85.763671875,
              526.3359375
            ]
          ],
          "bbox": [
            85.763671875,
            504.1793518066406,
            482.40338134765625,
            526.3359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following is a class definition for Deck. The init method creates the attribute cards and generates the standard set of fifty-two cards:</p>",
          "polygon": [
            [
              85.9130859375,
              535.9921875
            ],
            [
              482.3996887207031,
              535.9921875
            ],
            [
              482.3996887207031,
              558.6969299316406
            ],
            [
              85.9130859375,
              558.6969299316406
            ]
          ],
          "bbox": [
            85.9130859375,
            535.9921875,
            482.3996887207031,
            558.6969299316406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Code/185",
          "block_type": "Code",
          "html": "<pre>class Deck(object):</pre>",
          "polygon": [
            [
              85.98779296875,
              564.77978515625
            ],
            [
              185.87109375,
              564.77978515625
            ],
            [
              185.87109375,
              575.05078125
            ],
            [
              85.98779296875,
              575.05078125
            ]
          ],
          "bbox": [
            85.98779296875,
            564.77978515625,
            185.87109375,
            575.05078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Code/12",
          "block_type": "Code",
          "html": "<pre>def __init__(self):\n    self.cards = []\n    for suit in range(4):\n        for rank in range(1, 14):\n            card = Card(suit, rank)\n            self.cards.append(card)</pre>",
          "polygon": [
            [
              105.71044921875,
              587.8125
            ],
            [
              291.05859375,
              587.8125
            ],
            [
              291.05859375,
              660.1024017333984
            ],
            [
              105.71044921875,
              660.1024017333984
            ]
          ],
          "bbox": [
            105.71044921875,
            587.8125,
            291.05859375,
            660.1024017333984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/191/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The easiest way to populate the deck is with a nested loop. The outer loop enumerates the suits from 0 to 3. The inner loop enumerates the ranks from 1 to 13. Each iteration creates a new Card with the current suit and rank, and appends it to self.cards.</p>",
          "polygon": [
            [
              85.763671875,
              665.54296875
            ],
            [
              482.4033508300781,
              665.54296875
            ],
            [
              482.4033508300781,
              700.8349609375
            ],
            [
              85.763671875,
              700.8349609375
            ]
          ],
          "bbox": [
            85.763671875,
            665.54296875,
            482.4033508300781,
            700.8349609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "4": "/page/191/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/192/Page/178",
      "block_type": "Page",
      "html": "<content-ref src='/page/192/PageHeader/0'></content-ref><content-ref src='/page/192/PageHeader/15'></content-ref><content-ref src='/page/192/SectionHeader/1'></content-ref><content-ref src='/page/192/Text/2'></content-ref><content-ref src='/page/192/Text/3'></content-ref><content-ref src='/page/192/Text/4'></content-ref><content-ref src='/page/192/Code/5'></content-ref><content-ref src='/page/192/Text/6'></content-ref><content-ref src='/page/192/SectionHeader/7'></content-ref><content-ref src='/page/192/Text/8'></content-ref><content-ref src='/page/192/Text/9'></content-ref><content-ref src='/page/192/Code/10'></content-ref><content-ref src='/page/192/Text/11'></content-ref><content-ref src='/page/192/Text/12'></content-ref><content-ref src='/page/192/Text/13'></content-ref><content-ref src='/page/192/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/192/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.72021484375,
              60.76318359375
            ],
            [
              525.6033935546875,
              60.76318359375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.72021484375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.72021484375,
            60.76318359375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/192/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.3984375,
              60.71484375
            ],
            [
              525.9375,
              60.71484375
            ],
            [
              525.9375,
              70.4794921875
            ],
            [
              510.3984375,
              70.4794921875
            ]
          ],
          "bbox": [
            510.3984375,
            60.71484375,
            525.9375,
            70.4794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/191/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/192/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-192-0\"></span><b>18.5 Printing the deck</b></h4>",
          "polygon": [
            [
              127.82373046875,
              85.95379638671875
            ],
            [
              283.587890625,
              85.95379638671875
            ],
            [
              283.587890625,
              100.29998779296875
            ],
            [
              127.82373046875,
              100.29998779296875
            ]
          ],
          "bbox": [
            127.82373046875,
            85.95379638671875,
            283.587890625,
            100.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a __str__ method for Deck: #inside class Deck: def __str__(self): res = [] for card in self.cards: res.append(str(card)) return '\\n'.join(res)</p>",
          "polygon": [
            [
              129.16845703125,
              111.955078125
            ],
            [
              302.1966247558594,
              111.955078125
            ],
            [
              302.1966247558594,
              211.97137451171875
            ],
            [
              129.16845703125,
              211.97137451171875
            ]
          ],
          "bbox": [
            129.16845703125,
            111.955078125,
            302.1966247558594,
            211.97137451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This method demonstrates an efficient way to accumulate a large string: building a list of strings and then using join. The built-in function str invokes the __str__ method on each card and returns the string representation.</p>",
          "polygon": [
            [
              128.9443359375,
              218.109375
            ],
            [
              525.9375,
              218.109375
            ],
            [
              525.9375,
              252.74993896484375
            ],
            [
              128.9443359375,
              252.74993896484375
            ]
          ],
          "bbox": [
            128.9443359375,
            218.109375,
            525.9375,
            252.74993896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since we invoke join on a newline character, the cards are separated by newlines. Here's what the result looks like:</p>",
          "polygon": [
            [
              128.197265625,
              262.1953125
            ],
            [
              525.5950927734375,
              262.1953125
            ],
            [
              525.5950927734375,
              285.15692138671875
            ],
            [
              128.197265625,
              285.15692138671875
            ]
          ],
          "bbox": [
            128.197265625,
            262.1953125,
            525.5950927734375,
            285.15692138671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/192/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; deck = Deck()\n&gt;&gt;&gt; print deck\nAce of Clubs\n2 of Clubs\n3 of Clubs\n...\n10 of Spades\nJack of Spades\nQueen of Spades\nKing of Spades</pre>",
          "polygon": [
            [
              129.60000610351562,
              291.2857666015625
            ],
            [
              218.51620483398438,
              291.2857666015625
            ],
            [
              218.51620483398438,
              410.99737548828125
            ],
            [
              129.60000610351562,
              410.99737548828125
            ]
          ],
          "bbox": [
            129.60000610351562,
            291.2857666015625,
            218.51620483398438,
            410.99737548828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Even though the result appears on 52 lines, it is one long string that contains newlines.</p>",
          "polygon": [
            [
              129.60000610351562,
              416.49609375
            ],
            [
              509.60345458984375,
              416.49609375
            ],
            [
              509.60345458984375,
              427.387939453125
            ],
            [
              129.60000610351562,
              427.387939453125
            ]
          ],
          "bbox": [
            129.60000610351562,
            416.49609375,
            509.60345458984375,
            427.387939453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/192/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-192-1\"></span><b>18.6 Add, remove, shuffle and sort</b></h4>",
          "polygon": [
            [
              128.49609375,
              456.71484375
            ],
            [
              362.4675598144531,
              456.71484375
            ],
            [
              362.4675598144531,
              471.302001953125
            ],
            [
              128.49609375,
              471.302001953125
            ]
          ],
          "bbox": [
            128.49609375,
            456.71484375,
            362.4675598144531,
            471.302001953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To deal cards, we would like a method that removes a card from the deck and returns it. The list method pop provides a convenient way to do that:</p>",
          "polygon": [
            [
              129.5419921875,
              483.3984375
            ],
            [
              525.6033935546875,
              483.3984375
            ],
            [
              525.6033935546875,
              505.9099426269531
            ],
            [
              129.5419921875,
              505.9099426269531
            ]
          ],
          "bbox": [
            129.5419921875,
            483.3984375,
            525.6033935546875,
            505.9099426269531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">#inside class Deck:</p>",
          "polygon": [
            [
              128.197265625,
              512.015625
            ],
            [
              228.9868927001953,
              512.015625
            ],
            [
              228.9868927001953,
              522.0013732910156
            ],
            [
              128.197265625,
              522.0013732910156
            ]
          ],
          "bbox": [
            128.197265625,
            512.015625,
            228.9868927001953,
            522.0013732910156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/192/Code/10",
          "block_type": "Code",
          "html": "<pre>def pop_card(self):\n    return self.cards.pop()</pre>",
          "polygon": [
            [
              150.51600646972656,
              536.4267883300781
            ],
            [
              291.7413635253906,
              536.4267883300781
            ],
            [
              291.7413635253906,
              558.5843963623047
            ],
            [
              150.51600646972656,
              558.5843963623047
            ]
          ],
          "bbox": [
            150.51600646972656,
            536.4267883300781,
            291.7413635253906,
            558.5843963623047
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since pop removes the <i>last</i> card in the list, we are dealing from the bottom of the deck. In real life \"bottom dealing\" is frowned upon, but in this context it's ok.</p>",
          "polygon": [
            [
              128.197265625,
              564.609375
            ],
            [
              525.638671875,
              564.609375
            ],
            [
              525.638671875,
              587.1689453125
            ],
            [
              128.197265625,
              587.1689453125
            ]
          ],
          "bbox": [
            128.197265625,
            564.609375,
            525.638671875,
            587.1689453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To add a card, we can use the list method append:</p>",
          "polygon": [
            [
              128.197265625,
              597.09375
            ],
            [
              347.8359375,
              597.09375
            ],
            [
              347.8359375,
              607.3819427490234
            ],
            [
              128.197265625,
              607.3819427490234
            ]
          ],
          "bbox": [
            128.197265625,
            597.09375,
            347.8359375,
            607.3819427490234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">#inside class Deck: def add_card(self, card): self.cards.append(card)</p>",
          "polygon": [
            [
              129.60003662109375,
              613.5107879638672
            ],
            [
              291.74139404296875,
              613.5107879638672
            ],
            [
              291.74139404296875,
              660.12890625
            ],
            [
              129.60003662109375,
              660.12890625
            ]
          ],
          "bbox": [
            129.60003662109375,
            613.5107879638672,
            291.74139404296875,
            660.12890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/192/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A method like this that uses another function without doing much real work is sometimes called a <b>veneer</b>. The metaphor comes from woodworking, where it is common to glue a thin layer of good quality wood to the surface of a cheaper piece of wood.</p>",
          "polygon": [
            [
              129.2431640625,
              665.54296875
            ],
            [
              525.9375,
              665.54296875
            ],
            [
              525.9375,
              700.8349533081055
            ],
            [
              129.2431640625,
              700.8349533081055
            ]
          ],
          "bbox": [
            129.2431640625,
            665.54296875,
            525.9375,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "4": "/page/192/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/193/Page/213",
      "block_type": "Page",
      "html": "<content-ref src='/page/193/PageHeader/0'></content-ref><content-ref src='/page/193/PageHeader/20'></content-ref><content-ref src='/page/193/Text/1'></content-ref><content-ref src='/page/193/Text/2'></content-ref><content-ref src='/page/193/Code/3'></content-ref><content-ref src='/page/193/Text/4'></content-ref><content-ref src='/page/193/Text/21'></content-ref><content-ref src='/page/193/Text/5'></content-ref><content-ref src='/page/193/SectionHeader/6'></content-ref><content-ref src='/page/193/Text/7'></content-ref><content-ref src='/page/193/Text/8'></content-ref><content-ref src='/page/193/Text/9'></content-ref><content-ref src='/page/193/Text/10'></content-ref><content-ref src='/page/193/Text/11'></content-ref><content-ref src='/page/193/Text/12'></content-ref><content-ref src='/page/193/Code/13'></content-ref><content-ref src='/page/193/Text/14'></content-ref><content-ref src='/page/193/Text/15'></content-ref><content-ref src='/page/193/Text/16'></content-ref><content-ref src='/page/193/Text/17'></content-ref><content-ref src='/page/193/Text/18'></content-ref><content-ref src='/page/193/Code/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/193/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.40338134765625,
              60.8115234375
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.47314453125
            ],
            [
              102.19921875,
              60.47314453125
            ],
            [
              102.19921875,
              70.52783203125
            ],
            [
              85.763671875,
              70.52783203125
            ]
          ],
          "bbox": [
            85.763671875,
            60.47314453125,
            102.19921875,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this case we are defining a \"thin\" method that expresses a list operation in terms that are appropriate for decks.</p>",
          "polygon": [
            [
              85.3154296875,
              88.12353515625
            ],
            [
              483.50390625,
              88.12353515625
            ],
            [
              483.50390625,
              110.99188232421875
            ],
            [
              85.3154296875,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.3154296875,
            88.12353515625,
            483.50390625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As another example, we can write a Deck method named shuffle using the function shuffle from the random module:</p>",
          "polygon": [
            [
              85.46484375,
              120.5595703125
            ],
            [
              482.90625,
              120.5595703125
            ],
            [
              482.90625,
              143.40692138671875
            ],
            [
              85.46484375,
              143.40692138671875
            ]
          ],
          "bbox": [
            85.46484375,
            120.5595703125,
            482.90625,
            143.40692138671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/Code/3",
          "block_type": "Code",
          "html": "<pre>def shuffle(self):\n    random.shuffle(self.cards)</pre>",
          "polygon": [
            [
              94.8779296875,
              162.615234375
            ],
            [
              264.2324523925781,
              162.615234375
            ],
            [
              264.2324523925781,
              196.08935546875
            ],
            [
              94.8779296875,
              196.08935546875
            ]
          ],
          "bbox": [
            94.8779296875,
            162.615234375,
            264.2324523925781,
            196.08935546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Don't forget to import random.</p>",
          "polygon": [
            [
              85.9130859375,
              201.287109375
            ],
            [
              221.2822265625,
              201.287109375
            ],
            [
              221.2822265625,
              212.48797607421875
            ],
            [
              85.9130859375,
              212.48797607421875
            ]
          ],
          "bbox": [
            85.9130859375,
            201.287109375,
            221.2822265625,
            212.48797607421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/21",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"># inside class Deck:</p>",
          "polygon": [
            [
              86.39999389648438,
              149.54376220703125
            ],
            [
              191.0072784423828,
              149.54376220703125
            ],
            [
              191.0072784423828,
              159.50634765625
            ],
            [
              86.39999389648438,
              159.50634765625
            ]
          ],
          "bbox": [
            86.39999389648438,
            149.54376220703125,
            191.0072784423828,
            159.50634765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 18.2.</b> <i>Write a Deck method named</i> sort <i>that uses the list method</i> sort <i>to sort the cards</i> <i>in a</i> Deck<i>.</i> sort <i>uses the</i> __cmp__ <i>method we defined to determine sort order.</i></p>",
          "polygon": [
            [
              85.763671875,
              213.85546875
            ],
            [
              482.40118408203125,
              213.85546875
            ],
            [
              482.40118408203125,
              236.7274169921875
            ],
            [
              85.763671875,
              236.7274169921875
            ]
          ],
          "bbox": [
            85.763671875,
            213.85546875,
            482.40118408203125,
            236.7274169921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "4": "/page/192/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/193/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-193-0\"></span><b>18.7 Inheritance</b></h3>",
          "polygon": [
            [
              85.9130859375,
              265.482421875
            ],
            [
              200.8125,
              265.482421875
            ],
            [
              200.8125,
              280.8150634765625
            ],
            [
              85.9130859375,
              280.8150634765625
            ]
          ],
          "bbox": [
            85.9130859375,
            265.482421875,
            200.8125,
            280.8150634765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The language feature most often associated with object-oriented programming is <b>inher</b><b>itance</b>. Inheritance is the ability to define a new class that is a modified version of an existing class.</p>",
          "polygon": [
            [
              86.361328125,
              292.939453125
            ],
            [
              483.205078125,
              292.939453125
            ],
            [
              483.205078125,
              327.62799072265625
            ],
            [
              86.361328125,
              327.62799072265625
            ]
          ],
          "bbox": [
            86.361328125,
            292.939453125,
            483.205078125,
            327.62799072265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is called \"inheritance\" because the new class inherits the methods of the existing class. Extending this metaphor, the existing class is called the <b>parent</b> and the new class is called the <b>child</b>.</p>",
          "polygon": [
            [
              86.0625,
              337.21875
            ],
            [
              482.4034118652344,
              337.21875
            ],
            [
              482.4034118652344,
              372.2380065917969
            ],
            [
              86.0625,
              372.2380065917969
            ]
          ],
          "bbox": [
            86.0625,
            337.21875,
            482.4034118652344,
            372.2380065917969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As an example, let's say we want a class to represent a \"hand,\" that is, the set of cards held by one player. A hand is similar to a deck: both are made up of a set of cards, and both require operations like adding and removing cards.</p>",
          "polygon": [
            [
              85.9130859375,
              382.271484375
            ],
            [
              482.90625,
              382.271484375
            ],
            [
              482.90625,
              416.8828125
            ],
            [
              85.9130859375,
              416.8828125
            ]
          ],
          "bbox": [
            85.9130859375,
            382.271484375,
            482.90625,
            416.8828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A hand is also different from a deck; there are operations we want for hands that don't make sense for a deck. For example, in poker we might compare two hands to see which one wins. In bridge, we might compute a score for a hand in order to make a bid.</p>",
          "polygon": [
            [
              85.763671875,
              426.1640625
            ],
            [
              483.802734375,
              426.1640625
            ],
            [
              483.802734375,
              461.4560241699219
            ],
            [
              85.763671875,
              461.4560241699219
            ]
          ],
          "bbox": [
            85.763671875,
            426.1640625,
            483.802734375,
            461.4560241699219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This relationship between classes—similar, but different—lends itself to inheritance.</p>",
          "polygon": [
            [
              86.0625,
              470.25
            ],
            [
              455.49444580078125,
              470.25
            ],
            [
              455.49444580078125,
              481.6770324707031
            ],
            [
              86.0625,
              481.6770324707031
            ]
          ],
          "bbox": [
            86.0625,
            470.25,
            455.49444580078125,
            481.6770324707031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The definition of a child class is like other class definitions, but the name of the parent class appears in parentheses:</p>",
          "polygon": [
            [
              85.763671875,
              490.74609375
            ],
            [
              483.205078125,
              490.74609375
            ],
            [
              483.205078125,
              514.092041015625
            ],
            [
              85.763671875,
              514.092041015625
            ]
          ],
          "bbox": [
            85.763671875,
            490.74609375,
            483.205078125,
            514.092041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Code/13",
          "block_type": "Code",
          "html": "<pre>class Hand(Deck):</pre>",
          "polygon": [
            [
              85.98779296875,
              519.75
            ],
            [
              175.32618713378906,
              519.75
            ],
            [
              175.32618713378906,
              530.1914672851562
            ],
            [
              85.98779296875,
              530.1914672851562
            ]
          ],
          "bbox": [
            85.98779296875,
            519.75,
            175.32618713378906,
            530.1914672851562
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">\"\"\"Represents a hand of playing cards.\"\"\"</p>",
          "polygon": [
            [
              105.71044921875,
              532.125
            ],
            [
              322.435546875,
              532.125
            ],
            [
              322.435546875,
              542.3854827880859
            ],
            [
              105.71044921875,
              542.3854827880859
            ]
          ],
          "bbox": [
            105.71044921875,
            532.125,
            322.435546875,
            542.3854827880859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This definition indicates that Hand inherits from Deck; that means we can use methods like pop_card and add_card for Hands as well as Decks.</p>",
          "polygon": [
            [
              85.3154296875,
              547.98046875
            ],
            [
              484.1015625,
              547.98046875
            ],
            [
              484.1015625,
              570.9790344238281
            ],
            [
              85.3154296875,
              570.9790344238281
            ]
          ],
          "bbox": [
            85.3154296875,
            547.98046875,
            484.1015625,
            570.9790344238281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Hand also inherits __init__ from Deck, but it doesn't really do what we want: instead of populating the hand with 52 new cards, the init method for Hands should initialize cards with an empty list.</p>",
          "polygon": [
            [
              85.166015625,
              580.8515625
            ],
            [
              483.205078125,
              580.8515625
            ],
            [
              483.205078125,
              615.5880432128906
            ],
            [
              85.166015625,
              615.5880432128906
            ]
          ],
          "bbox": [
            85.166015625,
            580.8515625,
            483.205078125,
            615.5880432128906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If we provide an init method in the Hand class, it overrides the one in the Deck class:</p>",
          "polygon": [
            [
              85.166015625,
              624.9375
            ],
            [
              453.84783935546875,
              624.9375
            ],
            [
              453.84783935546875,
              635.8090515136719
            ],
            [
              85.166015625,
              635.8090515136719
            ]
          ],
          "bbox": [
            85.166015625,
            624.9375,
            453.84783935546875,
            635.8090515136719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"># inside class Hand:</p>",
          "polygon": [
            [
              85.39013671875,
              641.1796875
            ],
            [
              192.146484375,
              641.1796875
            ],
            [
              192.146484375,
              651.9085083007812
            ],
            [
              85.39013671875,
              651.9085083007812
            ]
          ],
          "bbox": [
            85.39013671875,
            641.1796875,
            192.146484375,
            651.9085083007812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/193/Code/19",
          "block_type": "Code",
          "html": "<pre>def __init__(self, label=''):\n    self.cards = []\n    self.label = label</pre>",
          "polygon": [
            [
              104.291015625,
              665.54296875
            ],
            [
              260.578125,
              665.54296875
            ],
            [
              260.578125,
              700.6855010986328
            ],
            [
              104.291015625,
              700.6855010986328
            ]
          ],
          "bbox": [
            104.291015625,
            665.54296875,
            260.578125,
            700.6855010986328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "3": "/page/193/SectionHeader/6"
      },
      "images": null
    },
    {
      "id": "/page/194/Page/188",
      "block_type": "Page",
      "html": "<content-ref src='/page/194/PageHeader/0'></content-ref><content-ref src='/page/194/PageHeader/16'></content-ref><content-ref src='/page/194/Text/1'></content-ref><content-ref src='/page/194/Code/2'></content-ref><content-ref src='/page/194/Text/3'></content-ref><content-ref src='/page/194/Code/4'></content-ref><content-ref src='/page/194/Text/5'></content-ref><content-ref src='/page/194/Text/6'></content-ref><content-ref src='/page/194/Code/7'></content-ref><content-ref src='/page/194/Text/8'></content-ref><content-ref src='/page/194/Text/9'></content-ref><content-ref src='/page/194/Text/10'></content-ref><content-ref src='/page/194/Text/11'></content-ref><content-ref src='/page/194/Text/12'></content-ref><content-ref src='/page/194/SectionHeader/13'></content-ref><content-ref src='/page/194/Text/14'></content-ref><content-ref src='/page/194/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/194/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.49609375,
              61.14990234375
            ],
            [
              525.6033935546875,
              61.14990234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.49609375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.49609375,
            61.14990234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.85986328125
            ],
            [
              526.236328125,
              60.85986328125
            ],
            [
              526.236328125,
              70.33447265625
            ],
            [
              510.099609375,
              70.33447265625
            ]
          ],
          "bbox": [
            510.099609375,
            60.85986328125,
            526.236328125,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So when you create a Hand, Python invokes this init method:</p>",
          "polygon": [
            [
              129.2431640625,
              88.171875
            ],
            [
              400.4296875,
              88.171875
            ],
            [
              400.4296875,
              98.79791259765625
            ],
            [
              129.2431640625,
              98.79791259765625
            ]
          ],
          "bbox": [
            129.2431640625,
            88.171875,
            400.4296875,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Code/2",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; hand = Hand('new hand')\n&gt;&gt;&gt; print hand.cards\n[]\n&gt;&gt;&gt; print hand.label\nnew hand</pre>",
          "polygon": [
            [
              128.3466796875,
              104.220703125
            ],
            [
              270.7873840332031,
              104.220703125
            ],
            [
              270.7873840332031,
              163.00030517578125
            ],
            [
              128.3466796875,
              163.00030517578125
            ]
          ],
          "bbox": [
            128.3466796875,
            104.220703125,
            270.7873840332031,
            163.00030517578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But the other methods are inherited from Deck, so we can use pop_card and add_card to deal a card:</p>",
          "polygon": [
            [
              128.197265625,
              168.5126953125
            ],
            [
              525.6004028320312,
              168.5126953125
            ],
            [
              525.6004028320312,
              190.9423828125
            ],
            [
              128.197265625,
              190.9423828125
            ]
          ],
          "bbox": [
            128.197265625,
            168.5126953125,
            525.6004028320312,
            190.9423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Code/4",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; deck = Deck()\n&gt;&gt;&gt; card = deck.pop_card()\n&gt;&gt;&gt; hand.add_card(card)\n&gt;&gt;&gt; print hand\nKing of Spades</pre>",
          "polygon": [
            [
              129.01904296875,
              196.259765625
            ],
            [
              265.5994567871094,
              196.259765625
            ],
            [
              265.5994567871094,
              255.120361328125
            ],
            [
              129.01904296875,
              255.120361328125
            ]
          ],
          "bbox": [
            129.01904296875,
            196.259765625,
            265.5994567871094,
            255.120361328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A natural next step is to encapsulate this code in a method called move_cards:</p>",
          "polygon": [
            [
              129.09375,
              259.875
            ],
            [
              473.34375,
              259.875
            ],
            [
              473.34375,
              270.844970703125
            ],
            [
              129.09375,
              270.844970703125
            ]
          ],
          "bbox": [
            129.09375,
            259.875,
            473.34375,
            270.844970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">#inside class Deck:</p>",
          "polygon": [
            [
              128.9443359375,
              276.3067626953125
            ],
            [
              228.98692321777344,
              276.3067626953125
            ],
            [
              228.98692321777344,
              286.2693786621094
            ],
            [
              128.9443359375,
              286.2693786621094
            ]
          ],
          "bbox": [
            128.9443359375,
            276.3067626953125,
            228.98692321777344,
            286.2693786621094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Code/7",
          "block_type": "Code",
          "html": "<pre>def move_cards(self, hand, num):\n    for i in range(num):\n        hand.add_card(self.pop_card())</pre>",
          "polygon": [
            [
              149.63818359375,
              300.69580078125
            ],
            [
              349.2699279785156,
              300.69580078125
            ],
            [
              349.2699279785156,
              335.04638671875
            ],
            [
              149.63818359375,
              335.04638671875
            ]
          ],
          "bbox": [
            149.63818359375,
            300.69580078125,
            349.2699279785156,
            335.04638671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">move_cards takes two arguments, a Hand object and the number of cards to deal. It modifies both self and hand, and returns None.</p>",
          "polygon": [
            [
              128.6455078125,
              339.92578125
            ],
            [
              525.6010131835938,
              339.92578125
            ],
            [
              525.6010131835938,
              362.9649658203125
            ],
            [
              128.6455078125,
              362.9649658203125
            ]
          ],
          "bbox": [
            128.6455078125,
            339.92578125,
            525.6010131835938,
            362.9649658203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In some games, cards are moved from one hand to another, or from a hand back to the deck. You can use move_cards for any of these operations: self can be either a Deck or a Hand, and hand, despite the name, can also be a Deck.</p>",
          "polygon": [
            [
              128.0478515625,
              372.216796875
            ],
            [
              525.9375,
              372.216796875
            ],
            [
              525.9375,
              406.89996337890625
            ],
            [
              128.0478515625,
              406.89996337890625
            ]
          ],
          "bbox": [
            128.0478515625,
            372.216796875,
            525.9375,
            406.89996337890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 18.3.</b> <i>Write a Deck method called</i> deal_hands <i>that takes two parameters, the number of</i> <i>hands and the number of cards per hand, and that creates new Hand objects, deals the appropriate</i> <i>number of cards per hand, and returns a list of Hand objects.</i></p>",
          "polygon": [
            [
              128.6455078125,
              408.375
            ],
            [
              525.9375,
              408.375
            ],
            [
              525.9375,
              443.3102722167969
            ],
            [
              128.6455078125,
              443.3102722167969
            ]
          ],
          "bbox": [
            128.6455078125,
            408.375,
            525.9375,
            443.3102722167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Inheritance is a useful feature. Some programs that would be repetitive without inheritance can be written more elegantly with it. Inheritance can facilitate code reuse, since you can customize the behavior of parent classes without having to modify them. In some cases, the inheritance structure reflects the natural structure of the problem, which makes the program easier to understand.</p>",
          "polygon": [
            [
              128.0478515625,
              452.07421875
            ],
            [
              525.9375,
              452.07421875
            ],
            [
              525.9375,
              511.80596923828125
            ],
            [
              128.0478515625,
              511.80596923828125
            ]
          ],
          "bbox": [
            128.0478515625,
            452.07421875,
            525.9375,
            511.80596923828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">On the other hand, inheritance can make programs difficult to read. When a method is invoked, it is sometimes not clear where to find its definition. The relevant code may be scattered among several modules. Also, many of the things that can be done using inheritance can be done as well or better without it.</p>",
          "polygon": [
            [
              128.3466796875,
              520.91015625
            ],
            [
              525.9375,
              520.91015625
            ],
            [
              525.9375,
              567.9349670410156
            ],
            [
              128.3466796875,
              567.9349670410156
            ]
          ],
          "bbox": [
            128.3466796875,
            520.91015625,
            525.9375,
            567.9349670410156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/194/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-194-0\"></span><b>18.8 Class diagrams</b></h4>",
          "polygon": [
            [
              127.4501953125,
              596.4488372802734
            ],
            [
              268.25604248046875,
              596.4488372802734
            ],
            [
              268.25604248046875,
              610.7950286865234
            ],
            [
              127.4501953125,
              610.7950286865234
            ]
          ],
          "bbox": [
            127.4501953125,
            596.4488372802734,
            268.25604248046875,
            610.7950286865234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So far we have seen stack diagrams, which show the state of a program, and object diagrams, which show the attributes of an object and their values. These diagrams represent a snapshot in the execution of a program, so they change as the program runs.</p>",
          "polygon": [
            [
              128.6455078125,
              622.5493774414062
            ],
            [
              525.9375,
              622.5493774414062
            ],
            [
              525.9375,
              656.9009857177734
            ],
            [
              128.6455078125,
              656.9009857177734
            ]
          ],
          "bbox": [
            128.6455078125,
            622.5493774414062,
            525.9375,
            656.9009857177734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/194/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">They are also highly detailed; for some purposes, too detailed. A class diagram is a more abstract representation of the structure of a program. Instead of showing individual objects, it shows classes and the relationships between them.</p>",
          "polygon": [
            [
              128.197265625,
              666.31640625
            ],
            [
              525.638671875,
              666.31640625
            ],
            [
              525.638671875,
              700.8349990844727
            ],
            [
              128.197265625,
              700.8349990844727
            ]
          ],
          "bbox": [
            128.197265625,
            666.31640625,
            525.638671875,
            700.8349990844727
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "3": "/page/193/SectionHeader/6",
        "4": "/page/194/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/195/Page/182",
      "block_type": "Page",
      "html": "<content-ref src='/page/195/PageHeader/0'></content-ref><content-ref src='/page/195/PageHeader/17'></content-ref><content-ref src='/page/195/FigureGroup/179'></content-ref><content-ref src='/page/195/Text/3'></content-ref><content-ref src='/page/195/ListGroup/180'></content-ref><content-ref src='/page/195/Text/7'></content-ref><content-ref src='/page/195/Text/8'></content-ref><content-ref src='/page/195/Text/9'></content-ref><content-ref src='/page/195/Text/10'></content-ref><content-ref src='/page/195/Text/11'></content-ref><content-ref src='/page/195/Text/12'></content-ref><content-ref src='/page/195/SectionHeader/13'></content-ref><content-ref src='/page/195/Text/14'></content-ref><content-ref src='/page/195/Text/15'></content-ref><content-ref src='/page/195/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/195/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.328125
            ],
            [
              482.90625,
              60.328125
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.328125,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              59.79638671875
            ],
            [
              102.19921875,
              59.79638671875
            ],
            [
              102.19921875,
              70.91455078125
            ],
            [
              85.3154296875,
              70.91455078125
            ]
          ],
          "bbox": [
            85.3154296875,
            59.79638671875,
            102.19921875,
            70.91455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/FigureGroup/179",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/195/Figure/1'></content-ref><content-ref src='/page/195/Caption/2'></content-ref>",
          "polygon": [
            [
              223.224609375,
              82.70947265625
            ],
            [
              344.84765625,
              82.70947265625
            ],
            [
              344.84765625,
              180.3529052734375
            ],
            [
              223.224609375,
              180.3529052734375
            ]
          ],
          "bbox": [
            223.224609375,
            82.70947265625,
            344.84765625,
            180.3529052734375
          ],
          "children": [
            {
              "id": "/page/195/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  223.224609375,
                  82.70947265625
                ],
                [
                  343.951171875,
                  82.70947265625
                ],
                [
                  343.951171875,
                  151.013671875
                ],
                [
                  223.224609375,
                  151.013671875
                ]
              ],
              "bbox": [
                223.224609375,
                82.70947265625,
                343.951171875,
                151.013671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/193/SectionHeader/6",
                "4": "/page/194/SectionHeader/13"
              },
              "images": {
                "/page/195/Figure/1": "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"
              }
            },
            {
              "id": "/page/195/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-195-1\"></span>Figure 18.2: Class diagram.</p>",
              "polygon": [
                [
                  224.59500122070312,
                  168.7060546875
                ],
                [
                  344.84765625,
                  168.7060546875
                ],
                [
                  344.84765625,
                  180.3529052734375
                ],
                [
                  224.59500122070312,
                  180.3529052734375
                ]
              ],
              "bbox": [
                224.59500122070312,
                168.7060546875,
                344.84765625,
                180.3529052734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/193/SectionHeader/6",
                "4": "/page/194/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": null
        },
        {
          "id": "/page/195/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are several kinds of relationship between classes:</p>",
          "polygon": [
            [
              86.361328125,
              200.513671875
            ],
            [
              330.205078125,
              200.513671875
            ],
            [
              330.205078125,
              212.34393310546875
            ],
            [
              86.361328125,
              212.34393310546875
            ]
          ],
          "bbox": [
            86.361328125,
            200.513671875,
            330.205078125,
            212.34393310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/ListGroup/180",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/195/ListItem/4'></content-ref><content-ref src='/page/195/ListItem/5'></content-ref><content-ref src='/page/195/ListItem/6'></content-ref></ul></p>",
          "polygon": [
            [
              100.28794860839844,
              223.5234375
            ],
            [
              484.400390625,
              223.5234375
            ],
            [
              484.400390625,
              335.95294189453125
            ],
            [
              100.28794860839844,
              335.95294189453125
            ]
          ],
          "bbox": [
            100.28794860839844,
            223.5234375,
            484.400390625,
            335.95294189453125
          ],
          "children": [
            {
              "id": "/page/195/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Objects in one class might contain references to objects in another class. For example, each Rectangle contains a reference to a Point, and each Deck contains references to many Cards. This kind of relationship is called <b>HAS-A</b>, as in, \"a Rectangle has a Point.\"</li>",
              "polygon": [
                [
                  100.28799438476562,
                  223.5234375
                ],
                [
                  483.802734375,
                  223.5234375
                ],
                [
                  483.802734375,
                  271.94195556640625
                ],
                [
                  100.28799438476562,
                  271.94195556640625
                ]
              ],
              "bbox": [
                100.28799438476562,
                223.5234375,
                483.802734375,
                271.94195556640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/193/SectionHeader/6",
                "4": "/page/194/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/195/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> One class might inherit from another. This relationship is called <b>IS-A</b>, as in, \"a Hand is a kind of a Deck.\"</li>",
              "polygon": [
                [
                  100.28797912597656,
                  279.404296875
                ],
                [
                  484.400390625,
                  279.404296875
                ],
                [
                  484.400390625,
                  303.9469299316406
                ],
                [
                  100.28797912597656,
                  303.9469299316406
                ]
              ],
              "bbox": [
                100.28797912597656,
                279.404296875,
                484.400390625,
                303.9469299316406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/193/SectionHeader/6",
                "4": "/page/194/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/195/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> One class might depend on another in the sense that changes in one class would require changes in the other.</li>",
              "polygon": [
                [
                  100.28794860839844,
                  311.30859375
                ],
                [
                  484.1015625,
                  311.30859375
                ],
                [
                  484.1015625,
                  335.95294189453125
                ],
                [
                  100.28794860839844,
                  335.95294189453125
                ]
              ],
              "bbox": [
                100.28794860839844,
                311.30859375,
                484.1015625,
                335.95294189453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/193/SectionHeader/6",
                "4": "/page/194/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": null
        },
        {
          "id": "/page/195/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>class diagram</b> is a graphical representation of these relationships. For example, Figure <a href=\"#page-195-1\">18.2</a> shows the relationships between Card, Deck and Hand.</p>",
          "polygon": [
            [
              86.0625,
              347.2734375
            ],
            [
              482.607421875,
              347.2734375
            ],
            [
              482.607421875,
              371.16192626953125
            ],
            [
              86.0625,
              371.16192626953125
            ]
          ],
          "bbox": [
            86.0625,
            347.2734375,
            482.607421875,
            371.16192626953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The arrow with a hollow triangle head represents an IS-A relationship; in this case it indicates that Hand inherits from Deck.</p>",
          "polygon": [
            [
              85.763671875,
              378.984375
            ],
            [
              483.50390625,
              378.984375
            ],
            [
              483.50390625,
              403.0799255371094
            ],
            [
              85.763671875,
              403.0799255371094
            ]
          ],
          "bbox": [
            85.763671875,
            378.984375,
            483.50390625,
            403.0799255371094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The standard arrow head represents a HAS-A relationship; in this case a Deck has references to Card objects.</p>",
          "polygon": [
            [
              85.9130859375,
              411.08203125
            ],
            [
              484.1015625,
              411.08203125
            ],
            [
              484.1015625,
              434.9969177246094
            ],
            [
              85.9130859375,
              434.9969177246094
            ]
          ],
          "bbox": [
            85.9130859375,
            411.08203125,
            484.1015625,
            434.9969177246094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The star (*) near the arrow head is a <b>multiplicity</b>; it indicates how many Cards a Deck has. A multiplicity can be a simple number, like 52, a range, like 5..7 or a star, which indicates that a Deck can have any number of Cards.</p>",
          "polygon": [
            [
              86.0625,
              443.1796875
            ],
            [
              484.400390625,
              443.1796875
            ],
            [
              484.400390625,
              479.1089172363281
            ],
            [
              86.0625,
              479.1089172363281
            ]
          ],
          "bbox": [
            86.0625,
            443.1796875,
            484.400390625,
            479.1089172363281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A more detailed diagram might show that a Deck actually contains a <i>list</i> of Cards, but built-in types like list and dict are usually not included in class diagrams.</p>",
          "polygon": [
            [
              85.763671875,
              486.87890625
            ],
            [
              483.50390625,
              486.87890625
            ],
            [
              483.50390625,
              511.02691650390625
            ],
            [
              85.763671875,
              511.02691650390625
            ]
          ],
          "bbox": [
            85.763671875,
            486.87890625,
            483.50390625,
            511.02691650390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 18.4.</b> <i>Read</i> TurtleWorld.py<i>,</i> World.py <i>and</i> Gui.py <i>and draw a class diagram that</i> <i>shows the relationships among the classes defined there.</i></p>",
          "polygon": [
            [
              85.6142578125,
              511.62890625
            ],
            [
              484.69921875,
              511.62890625
            ],
            [
              484.69921875,
              535.2422180175781
            ],
            [
              85.6142578125,
              535.2422180175781
            ]
          ],
          "bbox": [
            85.6142578125,
            511.62890625,
            484.69921875,
            535.2422180175781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/193/SectionHeader/6",
            "4": "/page/194/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-195-0\"></span><b>18.9 Debugging</b></h3>",
          "polygon": [
            [
              85.763671875,
              563.0625
            ],
            [
              202.0078125,
              563.0625
            ],
            [
              202.0078125,
              578.53125
            ],
            [
              85.763671875,
              578.53125
            ]
          ],
          "bbox": [
            85.763671875,
            563.0625,
            202.0078125,
            578.53125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Inheritance can make debugging a challenge because when you invoke a method on an object, you might not know which method will be invoked.</p>",
          "polygon": [
            [
              85.763671875,
              588.97265625
            ],
            [
              483.802734375,
              588.97265625
            ],
            [
              483.802734375,
              612.6119232177734
            ],
            [
              85.763671875,
              612.6119232177734
            ]
          ],
          "bbox": [
            85.763671875,
            588.97265625,
            483.802734375,
            612.6119232177734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Suppose you are writing a function that works with Hand objects. You would like it to work with all kinds of Hands, like PokerHands, BridgeHands, etc. If you invoke a method like shuffle, you might get the one defined in Deck, but if any of the subclasses override this method, you'll get that version instead.</p>",
          "polygon": [
            [
              85.6142578125,
              620.68359375
            ],
            [
              484.69921875,
              620.68359375
            ],
            [
              484.69921875,
              668.9179382324219
            ],
            [
              85.6142578125,
              668.9179382324219
            ]
          ],
          "bbox": [
            85.6142578125,
            620.68359375,
            484.69921875,
            668.9179382324219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/195/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\" class=\"has-continuation\">Any time you are unsure about the flow of execution through your program, the simplest solution is to add print statements at the beginning of the relevant methods. If</p>",
          "polygon": [
            [
              85.6142578125,
              677.14453125
            ],
            [
              484.69921875,
              677.14453125
            ],
            [
              484.69921875,
              700.8349380493164
            ],
            [
              85.6142578125,
              700.8349380493164
            ]
          ],
          "bbox": [
            85.6142578125,
            677.14453125,
            484.69921875,
            700.8349380493164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "3": "/page/195/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/196/Page/192",
      "block_type": "Page",
      "html": "<content-ref src='/page/196/PageHeader/0'></content-ref><content-ref src='/page/196/PageHeader/17'></content-ref><content-ref src='/page/196/Text/1'></content-ref><content-ref src='/page/196/Text/2'></content-ref><content-ref src='/page/196/TextInlineMath/3'></content-ref><content-ref src='/page/196/Text/4'></content-ref><content-ref src='/page/196/Code/5'></content-ref><content-ref src='/page/196/Text/6'></content-ref><content-ref src='/page/196/Text/7'></content-ref><content-ref src='/page/196/Text/8'></content-ref><content-ref src='/page/196/Text/9'></content-ref><content-ref src='/page/196/SectionHeader/10'></content-ref><content-ref src='/page/196/Text/11'></content-ref><content-ref src='/page/196/Text/12'></content-ref><content-ref src='/page/196/Text/13'></content-ref><content-ref src='/page/196/TextInlineMath/14'></content-ref><content-ref src='/page/196/Text/15'></content-ref><content-ref src='/page/196/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/196/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.794921875,
              60.95654296875
            ],
            [
              525.6033935546875,
              60.95654296875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.794921875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.794921875,
            60.95654296875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.501953125,
              60.908203125
            ],
            [
              525.638671875,
              60.908203125
            ],
            [
              525.638671875,
              70.2861328125
            ],
            [
              509.501953125,
              70.2861328125
            ]
          ],
          "bbox": [
            509.501953125,
            60.908203125,
            525.638671875,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Deck.shuffle prints a message that says something like Running Deck.shuffle, then as the program runs it traces the flow of execution.</p>",
          "polygon": [
            [
              127.4501953125,
              88.0751953125
            ],
            [
              525.6044311523438,
              88.0751953125
            ],
            [
              525.6044311523438,
              110.99188232421875
            ],
            [
              127.4501953125,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.4501953125,
            88.0751953125,
            525.6044311523438,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As an alternative, you could use this function, which takes an object and a method name (as a string) and returns the class that provides the definition of the method:</p>",
          "polygon": [
            [
              127.8984375,
              120.5595703125
            ],
            [
              525.9375,
              120.5595703125
            ],
            [
              525.9375,
              143.63482666015625
            ],
            [
              127.8984375,
              143.63482666015625
            ]
          ],
          "bbox": [
            127.8984375,
            120.5595703125,
            525.9375,
            143.63482666015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/TextInlineMath/3",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">def find_defining_class(obj, meth_name):     for ty in type(obj).mro():         if meth_name in ty.__dict__: return ty</p>",
          "polygon": [
            [
              128.86962890625,
              149.853515625
            ],
            [
              338.83447265625,
              149.853515625
            ],
            [
              338.83447265625,
              196.83984375
            ],
            [
              128.86962890625,
              196.83984375
            ]
          ],
          "bbox": [
            128.86962890625,
            149.853515625,
            338.83447265625,
            196.83984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's an example:</p>",
          "polygon": [
            [
              128.3466796875,
              202.640625
            ],
            [
              213.7839813232422,
              202.640625
            ],
            [
              213.7839813232422,
              213.1728515625
            ],
            [
              128.3466796875,
              213.1728515625
            ]
          ],
          "bbox": [
            128.3466796875,
            202.640625,
            213.7839813232422,
            213.1728515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; hand = Hand()\n&gt;&gt;&gt; print find_defining_class(hand, 'shuffle')\n&lt;class 'Card.Deck'&gt;</pre>",
          "polygon": [
            [
              128.27197265625,
              219.5386962890625
            ],
            [
              370.845703125,
              219.5386962890625
            ],
            [
              370.845703125,
              254.07421875
            ],
            [
              128.27197265625,
              254.07421875
            ]
          ],
          "bbox": [
            128.27197265625,
            219.5386962890625,
            370.845703125,
            254.07421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So the shuffle method for this Hand is the one in Deck.</p>",
          "polygon": [
            [
              128.49609375,
              260.26171875
            ],
            [
              375.30267333984375,
              260.26171875
            ],
            [
              375.30267333984375,
              270.51690673828125
            ],
            [
              128.49609375,
              270.51690673828125
            ]
          ],
          "bbox": [
            128.49609375,
            260.26171875,
            375.30267333984375,
            270.51690673828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">find_defining_class uses the mro method to get the list of class objects (types) that will be searched for methods. \"MRO\" stands for \"method resolution order.\"</p>",
          "polygon": [
            [
              128.794921875,
              280.564453125
            ],
            [
              525.6015014648438,
              280.564453125
            ],
            [
              525.6015014648438,
              303.1598815917969
            ],
            [
              128.794921875,
              303.1598815917969
            ]
          ],
          "bbox": [
            128.794921875,
            280.564453125,
            525.6015014648438,
            303.1598815917969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's a program design suggestion: whenever you override a method, the interface of the new method should be the same as the old. It should take the same parameters, return the same type, and obey the same preconditions and postconditions. If you obey this rule, you will find that any function designed to work with an instance of a superclass, like a Deck, will also work with instances of subclasses like a Hand or PokerHand.</p>",
          "polygon": [
            [
              128.9443359375,
              313.62890625
            ],
            [
              525.6034545898438,
              313.62890625
            ],
            [
              525.6034545898438,
              372.41015625
            ],
            [
              128.9443359375,
              372.41015625
            ]
          ],
          "bbox": [
            128.9443359375,
            313.62890625,
            525.6034545898438,
            372.41015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you violate this rule, your code will collapse like (sorry) a house of cards.</p>",
          "polygon": [
            [
              128.49609375,
              382.8515625
            ],
            [
              461.091796875,
              382.8515625
            ],
            [
              461.091796875,
              392.83489990234375
            ],
            [
              128.49609375,
              392.83489990234375
            ]
          ],
          "bbox": [
            128.49609375,
            382.8515625,
            461.091796875,
            392.83489990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/196/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-196-0\"></span><b>18.10 Data encapsulation</b></h4>",
          "polygon": [
            [
              129.01904296875,
              423.11175537109375
            ],
            [
              302.5148010253906,
              423.11175537109375
            ],
            [
              302.5148010253906,
              437.4579772949219
            ],
            [
              129.01904296875,
              437.4579772949219
            ]
          ],
          "bbox": [
            129.01904296875,
            423.11175537109375,
            302.5148010253906,
            437.4579772949219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Chapter <a href=\"#page-172-0\">16</a> demonstrates a development plan we might call \"object-oriented design.\" We identified objects we needed—Time, Point and Rectangle—and defined classes to represent them. In each case there is an obvious correspondence between the object and some entity in the real world (or at least a mathematical world).</p>",
          "polygon": [
            [
              128.6455078125,
              449.75390625
            ],
            [
              525.9375,
              449.75390625
            ],
            [
              525.9375,
              496.784912109375
            ],
            [
              128.6455078125,
              496.784912109375
            ]
          ],
          "bbox": [
            128.6455078125,
            449.75390625,
            525.9375,
            496.784912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But sometimes it is less obvious what objects you need and how they should interact. In that case you need a different development plan. In the same way that we discovered function interfaces by encapsulation and generalization, we can discover class interfaces by <b>data encapsulation</b>.</p>",
          "polygon": [
            [
              128.9443359375,
              506.6015625
            ],
            [
              525.9375,
              506.6015625
            ],
            [
              525.9375,
              553.8169250488281
            ],
            [
              128.9443359375,
              553.8169250488281
            ]
          ],
          "bbox": [
            128.9443359375,
            506.6015625,
            525.9375,
            553.8169250488281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Markov analysis, from Section <a href=\"#page-149-0\">13.8,</a> provides a good example. If you download my code from <a href=\"http://thinkpython.com/code/markov.py\">http://thinkpython.com/code/markov.py</a>, you'll see that it uses two global variables—suffix_map and prefix—that are read and written from several functions.</p>",
          "polygon": [
            [
              128.6455078125,
              564.3033294677734
            ],
            [
              526.53515625,
              564.3033294677734
            ],
            [
              526.53515625,
              598.6539306640625
            ],
            [
              128.6455078125,
              598.6539306640625
            ]
          ],
          "bbox": [
            128.6455078125,
            564.3033294677734,
            526.53515625,
            598.6539306640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/196/TextInlineMath/14",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">suffix_map = {} prefix = ()</p>",
          "polygon": [
            [
              128.57080078125,
              605.019775390625
            ],
            [
              208.05560302734375,
              605.019775390625
            ],
            [
              208.05560302734375,
              627.1763763427734
            ],
            [
              128.57080078125,
              627.1763763427734
            ]
          ],
          "bbox": [
            128.57080078125,
            605.019775390625,
            208.05560302734375,
            627.1763763427734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Because these variables are global we can only run one analysis at a time. If we read two texts, their prefixes and suffixes would be added to the same data structures (which makes for some interesting generated text).</p>",
          "polygon": [
            [
              128.6455078125,
              633.4453125
            ],
            [
              525.9375,
              633.4453125
            ],
            [
              525.9375,
              668.1919479370117
            ],
            [
              128.6455078125,
              668.1919479370117
            ]
          ],
          "bbox": [
            128.6455078125,
            633.4453125,
            525.9375,
            668.1919479370117
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/196/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To run multiple analyses, and keep them separate, we can encapsulate the state of each analysis in an object. Here's what that looks like:</p>",
          "polygon": [
            [
              128.794921875,
              678.678352355957
            ],
            [
              525.6033935546875,
              678.678352355957
            ],
            [
              525.6033935546875,
              700.8349533081055
            ],
            [
              128.794921875,
              700.8349533081055
            ]
          ],
          "bbox": [
            128.794921875,
            678.678352355957,
            525.6033935546875,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "3": "/page/195/SectionHeader/13",
        "4": "/page/196/SectionHeader/10"
      },
      "images": null
    },
    {
      "id": "/page/197/Page/183",
      "block_type": "Page",
      "html": "<content-ref src='/page/197/PageHeader/0'></content-ref><content-ref src='/page/197/PageHeader/18'></content-ref><content-ref src='/page/197/Code/1'></content-ref><content-ref src='/page/197/Code/2'></content-ref><content-ref src='/page/197/Text/3'></content-ref><content-ref src='/page/197/Code/4'></content-ref><content-ref src='/page/197/Text/5'></content-ref><content-ref src='/page/197/Text/6'></content-ref><content-ref src='/page/197/ListGroup/181'></content-ref><content-ref src='/page/197/Text/11'></content-ref><content-ref src='/page/197/SectionHeader/12'></content-ref><content-ref src='/page/197/ListGroup/182'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/197/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              61.0048828125
            ],
            [
              482.40338134765625,
              61.0048828125
            ],
            [
              482.40338134765625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            61.0048828125,
            482.40338134765625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.73486328125,
              61.63330078125
            ],
            [
              103.02099609375,
              61.63330078125
            ],
            [
              103.02099609375,
              71.20458984375
            ],
            [
              86.73486328125,
              71.20458984375
            ]
          ],
          "bbox": [
            86.73486328125,
            61.63330078125,
            103.02099609375,
            71.20458984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/Code/1",
          "block_type": "Code",
          "html": "<pre>class Markov(object):</pre>",
          "polygon": [
            [
              86.4000015258789,
              88.22021484375
            ],
            [
              197.525390625,
              88.22021484375
            ],
            [
              197.525390625,
              98.6483154296875
            ],
            [
              86.4000015258789,
              98.6483154296875
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.22021484375,
            197.525390625,
            98.6483154296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/Code/2",
          "block_type": "Code",
          "html": "<pre>def __init__(self):\n    self.suffix_map = {}\n    self.prefix = ()</pre>",
          "polygon": [
            [
              107.31600189208984,
              110.98828125
            ],
            [
              232.85025024414062,
              110.98828125
            ],
            [
              232.85025024414062,
              147.42529296875
            ],
            [
              107.31600189208984,
              147.42529296875
            ]
          ],
          "bbox": [
            107.31600189208984,
            110.98828125,
            232.85025024414062,
            147.42529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Next, we transform the functions into methods. For example, here's process_word:</p>",
          "polygon": [
            [
              84.568359375,
              152.2705078125
            ],
            [
              453.0234375,
              152.2705078125
            ],
            [
              453.0234375,
              163.534912109375
            ],
            [
              84.568359375,
              163.534912109375
            ]
          ],
          "bbox": [
            84.568359375,
            152.2705078125,
            453.0234375,
            163.534912109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/Code/4",
          "block_type": "Code",
          "html": "<pre>def process_word(self, word, order=2):\n    if len(self.prefix) &lt; order:\n        self.prefix += (word,)\n        return\n    try:\n        self.suffix_map[self.prefix].append(word)\n    except KeyError:\n        # if there is no entry for this prefix, make one\n        self.suffix_map[self.prefix] = [word]\n    self.prefix = shift(self.prefix, word)</pre>",
          "polygon": [
            [
              107.3160400390625,
              169.3817138671875
            ],
            [
              410.291015625,
              169.3817138671875
            ],
            [
              410.291015625,
              313.4813232421875
            ],
            [
              107.3160400390625,
              313.4813232421875
            ]
          ],
          "bbox": [
            107.3160400390625,
            169.3817138671875,
            410.291015625,
            313.4813232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Transforming a program like this—changing the design without changing the function—is another example of refactoring (see Section <a href=\"#page-57-0\">4.7)</a>.</p>",
          "polygon": [
            [
              84.568359375,
              318.65625
            ],
            [
              482.4033508300781,
              318.65625
            ],
            [
              482.4033508300781,
              341.7848815917969
            ],
            [
              84.568359375,
              341.7848815917969
            ]
          ],
          "bbox": [
            84.568359375,
            318.65625,
            482.4033508300781,
            341.7848815917969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example suggests a development plan for designing objects and methods:</p>",
          "polygon": [
            [
              85.9130859375,
              351.52734375
            ],
            [
              432.703125,
              351.52734375
            ],
            [
              432.703125,
              361.71588134765625
            ],
            [
              85.9130859375,
              361.71588134765625
            ]
          ],
          "bbox": [
            85.9130859375,
            351.52734375,
            432.703125,
            361.71588134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/ListGroup/181",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/197/ListItem/7'></content-ref><content-ref src='/page/197/ListItem/8'></content-ref><content-ref src='/page/197/ListItem/9'></content-ref><content-ref src='/page/197/ListItem/10'></content-ref></ul></p>",
          "polygon": [
            [
              97.64208984375,
              374.537109375
            ],
            [
              482.90625,
              374.537109375
            ],
            [
              482.90625,
              457.451904296875
            ],
            [
              97.64208984375,
              457.451904296875
            ]
          ],
          "bbox": [
            97.64208984375,
            374.537109375,
            482.90625,
            457.451904296875
          ],
          "children": [
            {
              "id": "/page/197/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">1. Start by writing functions that read and write global variables (when necessary).</li>",
              "polygon": [
                [
                  98.85304260253906,
                  374.537109375
                ],
                [
                  464.677734375,
                  374.537109375
                ],
                [
                  464.677734375,
                  385.2928771972656
                ],
                [
                  98.85304260253906,
                  385.2928771972656
                ]
              ],
              "bbox": [
                98.85304260253906,
                374.537109375,
                464.677734375,
                385.2928771972656
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/196/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/197/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. Once you get the program working, look for associations between global variables and the functions that use them.</li>",
              "polygon": [
                [
                  98.4638671875,
                  395.31829833984375
                ],
                [
                  482.90625,
                  395.31829833984375
                ],
                [
                  482.90625,
                  417.4748840332031
                ],
                [
                  98.4638671875,
                  417.4748840332031
                ]
              ],
              "bbox": [
                98.4638671875,
                395.31829833984375,
                482.90625,
                417.4748840332031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/196/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/197/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">3. Encapsulate related variables as attributes of an object.</li>",
              "polygon": [
                [
                  97.64208984375,
                  427.5013122558594
                ],
                [
                  351.5244140625,
                  427.5013122558594
                ],
                [
                  351.5244140625,
                  437.4638977050781
                ],
                [
                  97.64208984375,
                  437.4638977050781
                ]
              ],
              "bbox": [
                97.64208984375,
                427.5013122558594,
                351.5244140625,
                437.4638977050781
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/196/SectionHeader/10"
              },
              "images": {}
            },
            {
              "id": "/page/197/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">4. Transform the associated functions into methods of the new class.</li>",
              "polygon": [
                [
                  98.38916015625,
                  447.43359375
                ],
                [
                  400.062255859375,
                  447.43359375
                ],
                [
                  400.062255859375,
                  457.451904296875
                ],
                [
                  98.38916015625,
                  457.451904296875
                ]
              ],
              "bbox": [
                98.38916015625,
                447.43359375,
                400.062255859375,
                457.451904296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/196/SectionHeader/10"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": null
        },
        {
          "id": "/page/197/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 18.5.</b> <i>Download my code from Section </i><i><a href=\"#page-149-0\">13.8</a></i><i> (</i><a href=\"http://thinkpython.com/code/markov.py\">http:</a> <a href=\"http://thinkpython.com/code/markov.py\">//</a> <a href=\"http://thinkpython.com/code/markov.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/markov.py\">com/</a> <a href=\"http://thinkpython.com/code/markov.py\">code/</a> <a href=\"http://thinkpython.com/code/markov.py\">markov.</a> <a href=\"http://thinkpython.com/code/markov.py\">py</a> <i>), and follow the steps described above to encapsulate the global variables as attributes</i> <i>of a new class called</i> Markov<i>. Solution:</i> <a href=\"http://thinkpython.com/code/Markov.py\">http:</a> <a href=\"http://thinkpython.com/code/Markov.py\">//</a> <a href=\"http://thinkpython.com/code/Markov.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/Markov.py\">com/</a> <a href=\"http://thinkpython.com/code/Markov.py\">code/</a> <a href=\"http://thinkpython.com/code/Markov.py\">Markov.</a> <a href=\"http://thinkpython.com/code/Markov.py\">py</a> <i>(note</i> <i>the capital M).</i></p>",
          "polygon": [
            [
              85.0166015625,
              463.0758972167969
            ],
            [
              482.4031677246094,
              463.0758972167969
            ],
            [
              482.4031677246094,
              509.70220947265625
            ],
            [
              85.0166015625,
              509.70220947265625
            ]
          ],
          "bbox": [
            85.0166015625,
            463.0758972167969,
            482.4031677246094,
            509.70220947265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/196/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/197/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-197-0\"></span><b>18.11 Glossary</b></h4>",
          "polygon": [
            [
              85.46484375,
              538.9277648925781
            ],
            [
              191.19908142089844,
              538.9277648925781
            ],
            [
              191.19908142089844,
              553.2739562988281
            ],
            [
              85.46484375,
              553.2739562988281
            ]
          ],
          "bbox": [
            85.46484375,
            538.9277648925781,
            191.19908142089844,
            553.2739562988281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/197/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/197/ListGroup/182",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/197/ListItem/13'></content-ref><content-ref src='/page/197/ListItem/14'></content-ref><content-ref src='/page/197/ListItem/15'></content-ref><content-ref src='/page/197/ListItem/16'></content-ref><content-ref src='/page/197/ListItem/17'></content-ref></ul></p>",
          "polygon": [
            [
              85.6142578125,
              562.0451965332031
            ],
            [
              482.40362548828125,
              562.0451965332031
            ],
            [
              482.40362548828125,
              700.8349227905273
            ],
            [
              85.6142578125,
              700.8349227905273
            ]
          ],
          "bbox": [
            85.6142578125,
            562.0451965332031,
            482.40362548828125,
            700.8349227905273
          ],
          "children": [
            {
              "id": "/page/197/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>encode:</b> To represent one set of values using another set of values by constructing a mapping between them.</li>",
              "polygon": [
                [
                  85.6142578125,
                  562.0451965332031
                ],
                [
                  482.4029846191406,
                  562.0451965332031
                ],
                [
                  482.4029846191406,
                  584.2989044189453
                ],
                [
                  85.6142578125,
                  584.2989044189453
                ]
              ],
              "bbox": [
                85.6142578125,
                562.0451965332031,
                482.4029846191406,
                584.2989044189453
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/197/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>class attribute:</b> An attribute associated with a class object. Class attributes are defined inside a class definition but outside any method.</li>",
              "polygon": [
                [
                  85.763671875,
                  594.0
                ],
                [
                  482.4033508300781,
                  594.0
                ],
                [
                  482.4033508300781,
                  616.4819030761719
                ],
                [
                  85.763671875,
                  616.4819030761719
                ]
              ],
              "bbox": [
                85.763671875,
                594.0,
                482.4033508300781,
                616.4819030761719
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/197/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>instance attribute:</b> An attribute associated with an instance of a class.</li>",
              "polygon": [
                [
                  85.9130859375,
                  626.4102020263672
                ],
                [
                  394.0252685546875,
                  626.4102020263672
                ],
                [
                  394.0252685546875,
                  636.4699096679688
                ],
                [
                  85.9130859375,
                  636.4699096679688
                ]
              ],
              "bbox": [
                85.9130859375,
                626.4102020263672,
                394.0252685546875,
                636.4699096679688
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/197/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>veneer:</b> A method or function that provides a different interface to another function without doing much computation.</li>",
              "polygon": [
                [
                  85.763671875,
                  646.3982086181641
                ],
                [
                  482.40362548828125,
                  646.3982086181641
                ],
                [
                  482.40362548828125,
                  668.6529235839844
                ],
                [
                  85.763671875,
                  668.6529235839844
                ]
              ],
              "bbox": [
                85.763671875,
                646.3982086181641,
                482.40362548828125,
                668.6529235839844
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/197/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>inheritance:</b> The ability to define a new class that is a modified version of a previously defined class.</li>",
              "polygon": [
                [
                  85.9130859375,
                  678.5812072753906
                ],
                [
                  482.4035949707031,
                  678.5812072753906
                ],
                [
                  482.4035949707031,
                  700.8349227905273
                ],
                [
                  85.9130859375,
                  700.8349227905273
                ]
              ],
              "bbox": [
                85.9130859375,
                678.5812072753906,
                482.4035949707031,
                700.8349227905273
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/197/SectionHeader/12"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "3": "/page/195/SectionHeader/13",
        "4": "/page/197/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/198/Page/225",
      "block_type": "Page",
      "html": "<content-ref src='/page/198/PageHeader/0'></content-ref><content-ref src='/page/198/PageHeader/24'></content-ref><content-ref src='/page/198/Text/1'></content-ref><content-ref src='/page/198/ListGroup/222'></content-ref><content-ref src='/page/198/SectionHeader/7'></content-ref><content-ref src='/page/198/Text/8'></content-ref><content-ref src='/page/198/Text/9'></content-ref><content-ref src='/page/198/Text/10'></content-ref><content-ref src='/page/198/Text/11'></content-ref><content-ref src='/page/198/Text/12'></content-ref><content-ref src='/page/198/Text/13'></content-ref><content-ref src='/page/198/Text/14'></content-ref><content-ref src='/page/198/Text/15'></content-ref><content-ref src='/page/198/Text/16'></content-ref><content-ref src='/page/198/Text/17'></content-ref><content-ref src='/page/198/ListItem/18'></content-ref><content-ref src='/page/198/Text/19'></content-ref><content-ref src='/page/198/ListGroup/223'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/198/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/197/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/198/PageHeader/24",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              61.34326171875
            ],
            [
              525.638671875,
              61.34326171875
            ],
            [
              525.638671875,
              70.14111328125
            ],
            [
              510.099609375,
              70.14111328125
            ]
          ],
          "bbox": [
            510.099609375,
            61.34326171875,
            525.638671875,
            70.14111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/197/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>parent class:</b> The class from which a child class inherits.</p>",
          "polygon": [
            [
              129.60000610351562,
              88.7381591796875
            ],
            [
              378.31640625,
              88.7381591796875
            ],
            [
              378.31640625,
              98.79791259765625
            ],
            [
              129.60000610351562,
              98.79791259765625
            ]
          ],
          "bbox": [
            129.60000610351562,
            88.7381591796875,
            378.31640625,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/197/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/198/ListGroup/222",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/198/ListItem/2'></content-ref><content-ref src='/page/198/ListItem/3'></content-ref><content-ref src='/page/198/ListItem/4'></content-ref><content-ref src='/page/198/ListItem/5'></content-ref><content-ref src='/page/198/ListItem/6'></content-ref></ul></p>",
          "polygon": [
            [
              127.30078125,
              108.87115478515625
            ],
            [
              525.6031494140625,
              108.87115478515625
            ],
            [
              525.6031494140625,
              248.23895263671875
            ],
            [
              127.30078125,
              248.23895263671875
            ]
          ],
          "bbox": [
            127.30078125,
            108.87115478515625,
            525.6031494140625,
            248.23895263671875
          ],
          "children": [
            {
              "id": "/page/198/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>child class:</b> A new class created by inheriting from an existing class; also called a \"subclass.\"</li>",
              "polygon": [
                [
                  128.0478515625,
                  108.87115478515625
                ],
                [
                  525.6029663085938,
                  108.87115478515625
                ],
                [
                  525.6029663085938,
                  131.12493896484375
                ],
                [
                  128.0478515625,
                  131.12493896484375
                ]
              ],
              "bbox": [
                128.0478515625,
                108.87115478515625,
                525.6029663085938,
                131.12493896484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/198/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>IS-A relationship:</b> The relationship between a child class and its parent class.</li>",
              "polygon": [
                [
                  128.197265625,
                  141.19818115234375
                ],
                [
                  471.7654724121094,
                  141.19818115234375
                ],
                [
                  471.7654724121094,
                  151.2579345703125
                ],
                [
                  128.197265625,
                  151.2579345703125
                ]
              ],
              "bbox": [
                128.197265625,
                141.19818115234375,
                471.7654724121094,
                151.2579345703125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/198/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>HAS-A relationship:</b> The relationship between two classes where instances of one class contain references to instances of the other.</li>",
              "polygon": [
                [
                  127.8984375,
                  161.3302001953125
                ],
                [
                  525.6031494140625,
                  161.3302001953125
                ],
                [
                  525.6031494140625,
                  183.5849609375
                ],
                [
                  127.8984375,
                  183.5849609375
                ]
              ],
              "bbox": [
                127.8984375,
                161.3302001953125,
                525.6031494140625,
                183.5849609375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/198/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>class diagram:</b> A diagram that shows the classes in a program and the relationships between them.</li>",
              "polygon": [
                [
                  127.7490234375,
                  193.6572265625
                ],
                [
                  525.6030883789062,
                  193.6572265625
                ],
                [
                  525.6030883789062,
                  215.9119873046875
                ],
                [
                  127.7490234375,
                  215.9119873046875
                ]
              ],
              "bbox": [
                127.7490234375,
                193.6572265625,
                525.6030883789062,
                215.9119873046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/198/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>multiplicity:</b> A notation in a class diagram that shows, for a HAS-A relationship, how many references there are to instances of another class.</li>",
              "polygon": [
                [
                  127.30078125,
                  225.9852294921875
                ],
                [
                  525.60302734375,
                  225.9852294921875
                ],
                [
                  525.60302734375,
                  248.23895263671875
                ],
                [
                  127.30078125,
                  248.23895263671875
                ]
              ],
              "bbox": [
                127.30078125,
                225.9852294921875,
                525.60302734375,
                248.23895263671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/197/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/197/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/198/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-198-0\"></span><b>18.12 Exercises</b></h4>",
          "polygon": [
            [
              128.9443359375,
              277.52880859375
            ],
            [
              235.97714233398438,
              277.52880859375
            ],
            [
              235.97714233398438,
              291.875
            ],
            [
              128.9443359375,
              291.875
            ]
          ],
          "bbox": [
            128.9443359375,
            277.52880859375,
            235.97714233398438,
            291.875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-198-1\"></span><b>Exercise 18.6.</b> <i>The following are the possible hands in poker, in increasing order of value (and</i> <i>decreasing order of probability):</i></p>",
          "polygon": [
            [
              128.6455078125,
              304.0106506347656
            ],
            [
              526.53515625,
              304.0106506347656
            ],
            [
              526.53515625,
              326.167236328125
            ],
            [
              128.6455078125,
              326.167236328125
            ]
          ],
          "bbox": [
            128.6455078125,
            304.0106506347656,
            526.53515625,
            326.167236328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>pair:</b> <i>two cards with the same rank</i></p>",
          "polygon": [
            [
              128.6455078125,
              339.92578125
            ],
            [
              272.5530090332031,
              339.92578125
            ],
            [
              272.5530090332031,
              350.2788391113281
            ],
            [
              128.6455078125,
              350.2788391113281
            ]
          ],
          "bbox": [
            128.6455078125,
            339.92578125,
            272.5530090332031,
            350.2788391113281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>two pair:</b> <i>two pairs of cards with the same rank</i></p>",
          "polygon": [
            [
              128.3466796875,
              356.16796875
            ],
            [
              324.52734375,
              356.16796875
            ],
            [
              324.52734375,
              366.81085205078125
            ],
            [
              128.3466796875,
              366.81085205078125
            ]
          ],
          "bbox": [
            128.3466796875,
            356.16796875,
            324.52734375,
            366.81085205078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>three of a kind:</b> <i>three cards with the same rank</i></p>",
          "polygon": [
            [
              128.3466796875,
              372.990234375
            ],
            [
              325.79290771484375,
              372.990234375
            ],
            [
              325.79290771484375,
              383.3438415527344
            ],
            [
              128.3466796875,
              383.3438415527344
            ]
          ],
          "bbox": [
            128.3466796875,
            372.990234375,
            325.79290771484375,
            383.3438415527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>straight:</b> <i>five cards with ranks in sequence (aces can be high or low, so</i> Ace-2-3-4-5 <i>is a straight</i> <i>and so is</i> 10-Jack-Queen-King-Ace<i>, but</i> Queen-King-Ace-2-3 <i>is not.)</i></p>",
          "polygon": [
            [
              128.0478515625,
              389.8376770019531
            ],
            [
              525.9375,
              389.8376770019531
            ],
            [
              525.9375,
              412.01739501953125
            ],
            [
              128.0478515625,
              412.01739501953125
            ]
          ],
          "bbox": [
            128.0478515625,
            389.8376770019531,
            525.9375,
            412.01739501953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>flush:</b> <i>five cards with the same suit</i></p>",
          "polygon": [
            [
              128.6455078125,
              418.5646667480469
            ],
            [
              273.400390625,
              418.5646667480469
            ],
            [
              273.400390625,
              428.60284423828125
            ],
            [
              128.6455078125,
              428.60284423828125
            ]
          ],
          "bbox": [
            128.6455078125,
            418.5646667480469,
            273.400390625,
            428.60284423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>full house:</b> <i>three cards with one rank, two cards with another</i></p>",
          "polygon": [
            [
              128.794921875,
              435.0966796875
            ],
            [
              381.8525695800781,
              435.0966796875
            ],
            [
              381.8525695800781,
              445.1348571777344
            ],
            [
              128.794921875,
              445.1348571777344
            ]
          ],
          "bbox": [
            128.794921875,
            435.0966796875,
            381.8525695800781,
            445.1348571777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>four of a kind:</b> <i>four cards with the same rank</i></p>",
          "polygon": [
            [
              129.392578125,
              451.6296691894531
            ],
            [
              318.849609375,
              451.6296691894531
            ],
            [
              318.849609375,
              461.6678466796875
            ],
            [
              129.392578125,
              461.6678466796875
            ]
          ],
          "bbox": [
            129.392578125,
            451.6296691894531,
            318.849609375,
            461.6678466796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>straight flush:</b> <i>five cards in sequence (as defined above) and with the same suit</i></p>",
          "polygon": [
            [
              129.60003662109375,
              468.16168212890625
            ],
            [
              449.9568176269531,
              468.16168212890625
            ],
            [
              449.9568176269531,
              478.1998596191406
            ],
            [
              129.60003662109375,
              478.1998596191406
            ]
          ],
          "bbox": [
            129.60003662109375,
            468.16168212890625,
            449.9568176269531,
            478.1998596191406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The goal of these exercises is to estimate the probability of drawing these various hands.</i></p>",
          "polygon": [
            [
              129.60003662109375,
              488.42578125
            ],
            [
              478.1915283203125,
              488.42578125
            ],
            [
              478.1915283203125,
              498.5602722167969
            ],
            [
              129.60003662109375,
              498.5602722167969
            ]
          ],
          "bbox": [
            129.60003662109375,
            488.42578125,
            478.1915283203125,
            498.5602722167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/ListItem/18",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>1. Download the following files from</i> <a href=\"http://thinkpython.com/code\">http:</a> <a href=\"http://thinkpython.com/code\">//</a> <a href=\"http://thinkpython.com/code\">thinkpython.</a> <a href=\"http://thinkpython.com/code\">com/</a> <a href=\"http://thinkpython.com/code\">code</a> <i>:</i></li>",
          "polygon": [
            [
              141.046875,
              512.40234375
            ],
            [
              445.8515625,
              512.40234375
            ],
            [
              445.8515625,
              522.5952758789062
            ],
            [
              141.046875,
              522.5952758789062
            ]
          ],
          "bbox": [
            141.046875,
            512.40234375,
            445.8515625,
            522.5952758789062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Card.py <i>: A complete version of the</i> Card<i>,</i> Deck <i>and</i> Hand <i>classes in this chapter.</i></p>",
          "polygon": [
            [
              151.9541015625,
              528.7936706542969
            ],
            [
              483.9549255371094,
              528.7936706542969
            ],
            [
              483.9549255371094,
              538.7794189453125
            ],
            [
              151.9541015625,
              538.7794189453125
            ]
          ],
          "bbox": [
            151.9541015625,
            528.7936706542969,
            483.9549255371094,
            538.7794189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/198/ListGroup/223",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/198/ListItem/20'></content-ref><content-ref src='/page/198/ListItem/21'></content-ref><content-ref src='/page/198/ListItem/22'></content-ref><content-ref src='/page/198/ListItem/23'></content-ref></ul></p>",
          "polygon": [
            [
              139.4033203125,
              544.5
            ],
            [
              526.236328125,
              544.5
            ],
            [
              526.236328125,
              700.6622772216797
            ],
            [
              139.4033203125,
              700.6622772216797
            ]
          ],
          "bbox": [
            139.4033203125,
            544.5,
            526.236328125,
            700.6622772216797
          ],
          "children": [
            {
              "id": "/page/198/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">PokerHand.py <i>: An incomplete implementation of a class that represents a poker hand, and</i> <i>some code that tests it.</i></li>",
              "polygon": [
                [
                  151.8046875,
                  544.5
                ],
                [
                  525.598388671875,
                  544.5
                ],
                [
                  525.598388671875,
                  567.0982666015625
                ],
                [
                  151.8046875,
                  567.0982666015625
                ]
              ],
              "bbox": [
                151.8046875,
                544.5,
                525.598388671875,
                567.0982666015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/198/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. If you run</i> PokerHand.py<i>, it deals seven 7-card poker hands and checks to see if any of them</i> <i>contains a flush. Read this code carefully before you go on.</i></li>",
              "polygon": [
                [
                  139.4033203125,
                  576.984375
                ],
                [
                  525.9375,
                  576.984375
                ],
                [
                  525.9375,
                  599.4252624511719
                ],
                [
                  139.4033203125,
                  599.4252624511719
                ]
              ],
              "bbox": [
                139.4033203125,
                576.984375,
                525.9375,
                599.4252624511719
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/198/ListItem/22",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. Add methods to</i> PokerHand.py <i>named</i> has_pair<i>,</i> has_twopair<i>, etc. that return True or</i> <i>False according to whether or not the hand meets the relevant criteria. Your code should</i> <i>work correctly for \"hands\" that contain any number of cards (although 5 and 7 are the most</i> <i>common sizes).</i></li>",
              "polygon": [
                [
                  140.748046875,
                  609.5956573486328
                ],
                [
                  526.236328125,
                  609.5956573486328
                ],
                [
                  526.236328125,
                  656.1412658691406
                ],
                [
                  140.748046875,
                  656.1412658691406
                ]
              ],
              "bbox": [
                140.748046875,
                609.5956573486328,
                526.236328125,
                656.1412658691406
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/198/ListItem/23",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. Write a method named</i> classify <i>that figures out the highest-value classification for a hand</i> <i>and sets the</i> label <i>attribute accordingly. For example, a 7-card hand might contain a flush</i> <i>and a pair; it should be labeled \"flush\".</i></li>",
              "polygon": [
                [
                  140.44921875,
                  666.3116760253906
                ],
                [
                  525.9375,
                  666.3116760253906
                ],
                [
                  525.9375,
                  700.6622772216797
                ],
                [
                  140.44921875,
                  700.6622772216797
                ]
              ],
              "bbox": [
                140.44921875,
                666.3116760253906,
                525.9375,
                700.6622772216797
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "3": "/page/195/SectionHeader/13",
        "4": "/page/198/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/199/Page/347",
      "block_type": "Page",
      "html": "<content-ref src='/page/199/PageHeader/0'></content-ref><content-ref src='/page/199/PageHeader/15'></content-ref><content-ref src='/page/199/ListGroup/345'></content-ref><content-ref src='/page/199/Text/3'></content-ref><content-ref src='/page/199/Text/4'></content-ref><content-ref src='/page/199/ListGroup/346'></content-ref><content-ref src='/page/199/Text/7'></content-ref><content-ref src='/page/199/ListGroup/347'></content-ref><content-ref src='/page/199/Text/13'></content-ref><content-ref src='/page/199/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/199/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.37646484375
            ],
            [
              482.90625,
              60.37646484375
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.37646484375,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/199/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.46484375,
              61.1015625
            ],
            [
              102.3486328125,
              61.1015625
            ],
            [
              102.3486328125,
              70.576171875
            ],
            [
              85.46484375,
              70.576171875
            ]
          ],
          "bbox": [
            85.46484375,
            61.1015625,
            102.3486328125,
            70.576171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/199/ListGroup/345",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/199/ListItem/1'></content-ref><content-ref src='/page/199/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              98.015625,
              88.171875
            ],
            [
              483.50390625,
              88.171875
            ],
            [
              483.50390625,
              191.95513916015625
            ],
            [
              98.015625,
              191.95513916015625
            ]
          ],
          "bbox": [
            98.015625,
            88.171875,
            483.50390625,
            191.95513916015625
          ],
          "children": [
            {
              "id": "/page/199/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>5. When you are convinced that your classification methods are working, the next step is to esti</i><i>mate the probabilities of the various hands. Write a function in</i> PokerHand.py <i>that shuffles</i> <i>a deck of cards, divides it into hands, classifies the hands, and counts the number of times</i> <i>various classifications appear.</i></li>",
              "polygon": [
                [
                  98.61328125,
                  88.171875
                ],
                [
                  483.50390625,
                  88.171875
                ],
                [
                  483.50390625,
                  135.20819091796875
                ],
                [
                  98.61328125,
                  135.20819091796875
                ]
              ],
              "bbox": [
                98.61328125,
                88.171875,
                483.50390625,
                135.20819091796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/199/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>6. Print a table of the classifications and their probabilities. Run your program with larger and</i> <i>larger numbers of hands until the output values converge to a reasonable degree of accu</i><i>racy. Compare your results to the values at</i> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">//</a> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">Hand_</a> <a href=\"http://en.wikipedia.org/wiki/Hand_rankings\">rankings</a> <i>.</i></li>",
              "polygon": [
                [
                  98.015625,
                  144.9228515625
                ],
                [
                  482.40399169921875,
                  144.9228515625
                ],
                [
                  482.40399169921875,
                  191.95513916015625
                ],
                [
                  98.015625,
                  191.95513916015625
                ]
              ],
              "bbox": [
                98.015625,
                144.9228515625,
                482.40399169921875,
                191.95513916015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/199/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/PokerHandSoln.py\">http:</a> <a href=\"http://thinkpython.com/code/PokerHandSoln.py\">//</a> <a href=\"http://thinkpython.com/code/PokerHandSoln.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/PokerHandSoln.py\">com/</a> <a href=\"http://thinkpython.com/code/PokerHandSoln.py\">code/</a> <a href=\"http://thinkpython.com/code/PokerHandSoln.py\">PokerHandSoln.</a> <a href=\"http://thinkpython.com/code/PokerHandSoln.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              84.79248046875,
              205.734375
            ],
            [
              370.9757080078125,
              205.734375
            ],
            [
              370.9757080078125,
              216.09112548828125
            ],
            [
              84.79248046875,
              216.09112548828125
            ]
          ],
          "bbox": [
            84.79248046875,
            205.734375,
            370.9757080078125,
            216.09112548828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/199/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 18.7.</b> <i>This exercise uses TurtleWorld from Chapter </i><i><a href=\"#page-52-0\">4.</a></i><i> You will write code that makes</i> <i>Turtles play tag. If you are not familiar with the rules of tag, see</i> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">//</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">Tag_</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">(</a> <a href=\"http://en.wikipedia.org/wiki/Tag_(game)\">game)</a> <i>.</i></p>",
          "polygon": [
            [
              85.3154296875,
              218.302734375
            ],
            [
              482.90625,
              218.302734375
            ],
            [
              482.90625,
              252.67413330078125
            ],
            [
              85.3154296875,
              252.67413330078125
            ]
          ],
          "bbox": [
            85.3154296875,
            218.302734375,
            482.90625,
            252.67413330078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/199/ListGroup/346",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/199/ListItem/5'></content-ref><content-ref src='/page/199/ListItem/6'></content-ref></ul></p>",
          "polygon": [
            [
              97.5673828125,
              266.44921875
            ],
            [
              483.205078125,
              266.44921875
            ],
            [
              483.205078125,
              321.3862609863281
            ],
            [
              97.5673828125,
              321.3862609863281
            ]
          ],
          "bbox": [
            97.5673828125,
            266.44921875,
            483.205078125,
            321.3862609863281
          ],
          "children": [
            {
              "id": "/page/199/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Download</i> <a href=\"http://thinkpython.com/code/Wobbler.py\">http:</a> <a href=\"http://thinkpython.com/code/Wobbler.py\">//</a> <a href=\"http://thinkpython.com/code/Wobbler.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/Wobbler.py\">com/</a> <a href=\"http://thinkpython.com/code/Wobbler.py\">code/</a> <a href=\"http://thinkpython.com/code/Wobbler.py\">Wobbler.</a> <a href=\"http://thinkpython.com/code/Wobbler.py\">py</a> <i>and run it. You should see a</i> <i>TurtleWorld with three Turtles. If you press the</i> Run <i>button, the Turtles wander at random.</i></li>",
              "polygon": [
                [
                  98.314453125,
                  266.44921875
                ],
                [
                  483.205078125,
                  266.44921875
                ],
                [
                  483.205078125,
                  289.005126953125
                ],
                [
                  98.314453125,
                  289.005126953125
                ]
              ],
              "bbox": [
                98.314453125,
                266.44921875,
                483.205078125,
                289.005126953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/199/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. Read the code and make sure you understand how it works. The</i> Wobbler <i>class inherits from</i> Turtle<i>, which means that the</i> Turtle <i>methods</i> lt<i>,</i> rt<i>,</i> fd <i>and</i> bk <i>work on Wobblers.</i></li>",
              "polygon": [
                [
                  97.5673828125,
                  298.93359375
                ],
                [
                  482.90625,
                  298.93359375
                ],
                [
                  482.90625,
                  321.3862609863281
                ],
                [
                  97.5673828125,
                  321.3862609863281
                ]
              ],
              "bbox": [
                97.5673828125,
                298.93359375,
                482.90625,
                321.3862609863281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/199/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The</i> step <i>method gets invoked by TurtleWorld. It invokes</i> steer<i>, which turns the Turtle</i> <i>in the desired direction,</i> wobble<i>, which makes a random turn in proportion to the Turtle's</i> <i>clumsiness, and</i> move<i>, which moves forward a few pixels, depending on the Turtle's speed.</i></p>",
          "polygon": [
            [
              109.37109375,
              327.55078125
            ],
            [
              483.205078125,
              327.55078125
            ],
            [
              483.205078125,
              361.9542541503906
            ],
            [
              109.37109375,
              361.9542541503906
            ]
          ],
          "bbox": [
            109.37109375,
            327.55078125,
            483.205078125,
            361.9542541503906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/199/ListGroup/347",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/199/ListItem/8'></content-ref><content-ref src='/page/199/ListItem/9'></content-ref><content-ref src='/page/199/ListItem/10'></content-ref><content-ref src='/page/199/ListItem/11'></content-ref><content-ref src='/page/199/ListItem/12'></content-ref></ul></p>",
          "polygon": [
            [
              97.41796875,
              371.830078125
            ],
            [
              483.50390625,
              371.830078125
            ],
            [
              483.50390625,
              572.5252990722656
            ],
            [
              97.41796875,
              572.5252990722656
            ]
          ],
          "bbox": [
            97.41796875,
            371.830078125,
            483.50390625,
            572.5252990722656
          ],
          "children": [
            {
              "id": "/page/199/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. Create a file named</i> Tagger.py<i>. Import everything from</i> Wobbler<i>, then define a class named</i> Tagger <i>that inherits from</i> Wobbler<i>. Call</i> make_world <i>passing the</i> Tagger <i>class object as an</i> <i>argument.</i></li>",
              "polygon": [
                [
                  98.015625,
                  371.830078125
                ],
                [
                  483.205078125,
                  371.830078125
                ],
                [
                  483.205078125,
                  406.484130859375
                ],
                [
                  98.015625,
                  406.484130859375
                ]
              ],
              "bbox": [
                98.015625,
                371.830078125,
                483.205078125,
                406.484130859375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/199/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. Add a</i> steer <i>method to</i> Tagger <i>to override the one in</i> Wobbler<i>. As a starting place, write a</i> <i>version that always points the Turtle toward the origin. Hint: use the math function</i> atan2 <i>and the Turtle attributes</i> x<i>,</i> y <i>and</i> heading<i>.</i></li>",
              "polygon": [
                [
                  98.4638671875,
                  416.109375
                ],
                [
                  482.90625,
                  416.109375
                ],
                [
                  482.90625,
                  451.061279296875
                ],
                [
                  98.4638671875,
                  451.061279296875
                ]
              ],
              "bbox": [
                98.4638671875,
                416.109375,
                482.90625,
                451.061279296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/199/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>5. Modify</i> steer <i>so that the Turtles stay in bounds. For debugging, you might want to use the</i> Step <i>button, which invokes</i> step <i>once on each Turtle.</i></li>",
              "polygon": [
                [
                  97.8662109375,
                  460.58203125
                ],
                [
                  482.90625,
                  460.58203125
                ],
                [
                  482.90625,
                  483.4192810058594
                ],
                [
                  97.8662109375,
                  483.4192810058594
                ]
              ],
              "bbox": [
                97.8662109375,
                460.58203125,
                482.90625,
                483.4192810058594
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/199/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>6. Modify</i> steer <i>so that each Turtle points toward its nearest neighbor. Hint: Turtles have an</i> <i>attribute,</i> world<i>, that is a reference to the TurtleWorld they live in, and the TurtleWorld has</i> <i>an attribute,</i> animals<i>, that is a list of all Turtles in the world.</i></li>",
              "polygon": [
                [
                  97.716796875,
                  493.453125
                ],
                [
                  483.205078125,
                  493.453125
                ],
                [
                  483.205078125,
                  527.9722900390625
                ],
                [
                  97.716796875,
                  527.9722900390625
                ]
              ],
              "bbox": [
                97.716796875,
                493.453125,
                483.205078125,
                527.9722900390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/199/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>7. Modify</i> steer <i>so the Turtles play tag. You can add methods to</i> Tagger <i>and you can override</i> steer <i>and</i> __init__<i>, but you may not modify or override</i> step<i>,</i> wobble <i>or</i> move<i>. Also,</i> steer <i>is allowed to change the heading of the Turtle but not the position.</i></li>",
              "polygon": [
                [
                  97.41796875,
                  537.5390625
                ],
                [
                  483.50390625,
                  537.5390625
                ],
                [
                  483.50390625,
                  572.5252990722656
                ],
                [
                  97.41796875,
                  572.5252990722656
                ]
              ],
              "bbox": [
                97.41796875,
                537.5390625,
                483.50390625,
                572.5252990722656
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/188/SectionHeader/1",
                "3": "/page/195/SectionHeader/13",
                "4": "/page/198/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/199/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Adjust the rules and your</i> steer <i>method for good quality play; for example, it should be</i> <i>possible for the slow Turtle to tag the faster Turtles eventually.</i></p>",
          "polygon": [
            [
              110.4169921875,
              578.14453125
            ],
            [
              484.1015625,
              578.14453125
            ],
            [
              484.1015625,
              600.8761596679688
            ],
            [
              110.4169921875,
              600.8761596679688
            ]
          ],
          "bbox": [
            110.4169921875,
            578.14453125,
            484.1015625,
            600.8761596679688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/199/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/Tagger.py\">http:</a> <a href=\"http://thinkpython.com/code/Tagger.py\">//</a> <a href=\"http://thinkpython.com/code/Tagger.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/Tagger.py\">com/</a> <a href=\"http://thinkpython.com/code/Tagger.py\">code/</a> <a href=\"http://thinkpython.com/code/Tagger.py\">Tagger.</a> <a href=\"http://thinkpython.com/code/Tagger.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              86.40000915527344,
              614.9688720703125
            ],
            [
              334.6875,
              614.9688720703125
            ],
            [
              334.6875,
              625.32421875
            ],
            [
              86.40000915527344,
              625.32421875
            ]
          ],
          "bbox": [
            86.40000915527344,
            614.9688720703125,
            334.6875,
            625.32421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "3": "/page/195/SectionHeader/13",
            "4": "/page/198/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/188/SectionHeader/1",
        "3": "/page/195/SectionHeader/13",
        "4": "/page/198/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/200/Page/120",
      "block_type": "Page",
      "html": "<content-ref src='/page/200/SectionHeader/0'></content-ref><content-ref src='/page/200/SectionHeader/1'></content-ref><content-ref src='/page/200/SectionHeader/2'></content-ref><content-ref src='/page/200/Text/3'></content-ref><content-ref src='/page/200/Text/4'></content-ref><content-ref src='/page/200/Text/5'></content-ref><content-ref src='/page/200/Text/6'></content-ref><content-ref src='/page/200/Text/7'></content-ref><content-ref src='/page/200/Text/8'></content-ref><content-ref src='/page/200/Text/9'></content-ref><content-ref src='/page/200/Text/10'></content-ref><content-ref src='/page/200/Text/11'></content-ref><content-ref src='/page/200/Text/12'></content-ref><content-ref src='/page/200/Text/13'></content-ref><content-ref src='/page/200/Code/14'></content-ref><content-ref src='/page/200/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/200/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-200-0\"></span><b>Chapter 19</b></h2>",
          "polygon": [
            [
              128.9443359375,
              163.58203125
            ],
            [
              232.0400390625,
              163.58203125
            ],
            [
              232.0400390625,
              185.2369384765625
            ],
            [
              128.9443359375,
              185.2369384765625
            ]
          ],
          "bbox": [
            128.9443359375,
            163.58203125,
            232.0400390625,
            185.2369384765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/188/SectionHeader/1",
            "2": "/page/200/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/200/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Case study: Tkinter</b></h1>",
          "polygon": [
            [
              128.27197265625,
              220.236328125
            ],
            [
              352.318359375,
              220.236328125
            ],
            [
              352.318359375,
              245.17132568359375
            ],
            [
              128.27197265625,
              245.17132568359375
            ]
          ],
          "bbox": [
            128.27197265625,
            220.236328125,
            352.318359375,
            245.17132568359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/200/SectionHeader/2",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-200-1\"></span><b>19.1 GUI</b></h4>",
          "polygon": [
            [
              128.794921875,
              294.5127258300781
            ],
            [
              198.421875,
              294.5127258300781
            ],
            [
              198.421875,
              308.85894775390625
            ],
            [
              128.794921875,
              308.85894775390625
            ]
          ],
          "bbox": [
            128.794921875,
            294.5127258300781,
            198.421875,
            308.85894775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most of the programs we have seen so far are text-based, but many programs use <b>graphical</b> <b>user interfaces</b>, also known as <b>GUIs</b>.</p>",
          "polygon": [
            [
              128.9443359375,
              321.7421569824219
            ],
            [
              526.53515625,
              321.7421569824219
            ],
            [
              526.53515625,
              343.9958801269531
            ],
            [
              128.9443359375,
              343.9958801269531
            ]
          ],
          "bbox": [
            128.9443359375,
            321.7421569824219,
            526.53515625,
            343.9958801269531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Python provides several choices for writing GUI-based programs, including wxPython, Tkinter, and Qt. Each has pros and cons, which is why Python has not converged on a standard.</p>",
          "polygon": [
            [
              128.794921875,
              354.041015625
            ],
            [
              526.833984375,
              354.041015625
            ],
            [
              526.833984375,
              388.97589111328125
            ],
            [
              128.794921875,
              388.97589111328125
            ]
          ],
          "bbox": [
            128.794921875,
            354.041015625,
            526.833984375,
            388.97589111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The one I will present in this chapter is Tkinter because I think it is the easiest to get started with. Most of the concepts in this chapter apply to the other GUI modules, too.</p>",
          "polygon": [
            [
              128.49609375,
              399.09375
            ],
            [
              526.53515625,
              399.09375
            ],
            [
              526.53515625,
              421.7608947753906
            ],
            [
              128.49609375,
              421.7608947753906
            ]
          ],
          "bbox": [
            128.49609375,
            399.09375,
            526.53515625,
            421.7608947753906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are several books and web pages about Tkinter. One of the best online resources is <i>An Introduction to Tkinter</i> by Fredrik Lundh.</p>",
          "polygon": [
            [
              127.8984375,
              431.578125
            ],
            [
              526.53515625,
              431.578125
            ],
            [
              526.53515625,
              454.5458984375
            ],
            [
              127.8984375,
              454.5458984375
            ]
          ],
          "bbox": [
            127.8984375,
            431.578125,
            526.53515625,
            454.5458984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I have written a module called Gui.py that comes with Swampy. It provides a simplified interface to the functions and classes in Tkinter. The examples in this chapter are based on this module.</p>",
          "polygon": [
            [
              128.49609375,
              464.8359375
            ],
            [
              526.53515625,
              464.8359375
            ],
            [
              526.53515625,
              499.52490234375
            ],
            [
              128.49609375,
              499.52490234375
            ]
          ],
          "bbox": [
            128.49609375,
            464.8359375,
            526.53515625,
            499.52490234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is a simple example that creates and displays a Gui:</p>",
          "polygon": [
            [
              128.197265625,
              510.08203125
            ],
            [
              381.603515625,
              510.08203125
            ],
            [
              381.603515625,
              520.13671875
            ],
            [
              128.197265625,
              520.13671875
            ]
          ],
          "bbox": [
            128.197265625,
            510.08203125,
            381.603515625,
            520.13671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To create a GUI, you have to import Gui from Swampy:</p>",
          "polygon": [
            [
              128.27197265625,
              530.19140625
            ],
            [
              374.1328125,
              530.19140625
            ],
            [
              374.1328125,
              540.7069091796875
            ],
            [
              128.27197265625,
              540.7069091796875
            ]
          ],
          "bbox": [
            128.27197265625,
            530.19140625,
            374.1328125,
            540.7069091796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from swampy.Gui import *</p>",
          "polygon": [
            [
              128.27197265625,
              551.1857604980469
            ],
            [
              255.19921875,
              551.1857604980469
            ],
            [
              255.19921875,
              561.1483612060547
            ],
            [
              128.27197265625,
              561.1483612060547
            ]
          ],
          "bbox": [
            128.27197265625,
            551.1857604980469,
            255.19921875,
            561.1483612060547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Or, depending on how you installed Swampy, like this:</p>",
          "polygon": [
            [
              128.12255859375,
              571.18359375
            ],
            [
              371.7421875,
              571.18359375
            ],
            [
              371.7421875,
              581.888916015625
            ],
            [
              128.12255859375,
              581.888916015625
            ]
          ],
          "bbox": [
            128.12255859375,
            571.18359375,
            371.7421875,
            581.888916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from Gui import *</p>",
          "polygon": [
            [
              128.42138671875,
              592.3677673339844
            ],
            [
              218.51617431640625,
              592.3677673339844
            ],
            [
              218.51617431640625,
              602.3303680419922
            ],
            [
              128.42138671875,
              602.3303680419922
            ]
          ],
          "bbox": [
            128.42138671875,
            592.3677673339844,
            218.51617431640625,
            602.3303680419922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Then instantiate a Gui object:</p>",
          "polygon": [
            [
              128.49609375,
              612.5625
            ],
            [
              259.681640625,
              612.5625
            ],
            [
              259.681640625,
              623.0709228515625
            ],
            [
              128.49609375,
              623.0709228515625
            ]
          ],
          "bbox": [
            128.49609375,
            612.5625,
            259.681640625,
            623.0709228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Code/14",
          "block_type": "Code",
          "html": "<pre>g = Gui()\ng.title('Gui')\ng.mainloop()</pre>",
          "polygon": [
            [
              128.6455078125,
              633.5487670898438
            ],
            [
              202.80833435058594,
              633.5487670898438
            ],
            [
              202.80833435058594,
              667.9003677368164
            ],
            [
              128.6455078125,
              667.9003677368164
            ]
          ],
          "bbox": [
            128.6455078125,
            633.5487670898438,
            202.80833435058594,
            667.9003677368164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/200/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\" class=\"has-continuation\">When you run this code, a window should appear with an empty gray square and the title Gui. mainloop runs the <b>event loop</b>, which waits for the user to do something and</p>",
          "polygon": [
            [
              128.197265625,
              677.91796875
            ],
            [
              526.833984375,
              677.91796875
            ],
            [
              526.833984375,
              700.8349380493164
            ],
            [
              128.197265625,
              700.8349380493164
            ]
          ],
          "bbox": [
            128.197265625,
            677.91796875,
            526.833984375,
            700.8349380493164
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/200/SectionHeader/2"
      },
      "images": null
    },
    {
      "id": "/page/201/Page/170",
      "block_type": "Page",
      "html": "<content-ref src='/page/201/PageHeader/0'></content-ref><content-ref src='/page/201/PageHeader/22'></content-ref><content-ref src='/page/201/Text/1'></content-ref><content-ref src='/page/201/Text/2'></content-ref><content-ref src='/page/201/Text/3'></content-ref><content-ref src='/page/201/Text/4'></content-ref><content-ref src='/page/201/Text/5'></content-ref><content-ref src='/page/201/Text/6'></content-ref><content-ref src='/page/201/Text/7'></content-ref><content-ref src='/page/201/Text/8'></content-ref><content-ref src='/page/201/SectionHeader/9'></content-ref><content-ref src='/page/201/Text/10'></content-ref><content-ref src='/page/201/Text/11'></content-ref><content-ref src='/page/201/Text/12'></content-ref><content-ref src='/page/201/Text/13'></content-ref><content-ref src='/page/201/Text/14'></content-ref><content-ref src='/page/201/Text/15'></content-ref><content-ref src='/page/201/Text/16'></content-ref><content-ref src='/page/201/Text/17'></content-ref><content-ref src='/page/201/Text/18'></content-ref><content-ref src='/page/201/Text/19'></content-ref><content-ref src='/page/201/Code/20'></content-ref><content-ref src='/page/201/Text/21'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/201/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.18310546875
            ],
            [
              482.607421875,
              60.18310546875
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.18310546875,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/PageHeader/22",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.4248046875
            ],
            [
              102.42333984375,
              60.4248046875
            ],
            [
              102.42333984375,
              70.0927734375
            ],
            [
              85.53955078125,
              70.0927734375
            ]
          ],
          "bbox": [
            85.53955078125,
            60.4248046875,
            102.42333984375,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">responds accordingly. It is an infinite loop; it runs until the user closes the window, or presses Control-C, or does something that causes the program to quit.</p>",
          "polygon": [
            [
              85.0166015625,
              87.8818359375
            ],
            [
              483.50390625,
              87.8818359375
            ],
            [
              483.50390625,
              110.99188232421875
            ],
            [
              85.0166015625,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.0166015625,
            87.8818359375,
            483.50390625,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This Gui doesn't do much because it doesn't have any <b>widgets</b>. Widgets are the elements that make up a GUI; they include:</p>",
          "polygon": [
            [
              85.166015625,
              119.8828125
            ],
            [
              483.50390625,
              119.8828125
            ],
            [
              483.50390625,
              143.5609130859375
            ],
            [
              85.166015625,
              143.5609130859375
            ]
          ],
          "bbox": [
            85.166015625,
            119.8828125,
            483.50390625,
            143.5609130859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Button:</b> A widget, containing text or an image, that performs an action when pressed.</p>",
          "polygon": [
            [
              84.7177734375,
              156.7177734375
            ],
            [
              464.9593200683594,
              156.7177734375
            ],
            [
              464.9593200683594,
              168.13592529296875
            ],
            [
              84.7177734375,
              168.13592529296875
            ]
          ],
          "bbox": [
            84.7177734375,
            156.7177734375,
            464.9593200683594,
            168.13592529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Canvas:</b> A region that can display lines, rectangles, circles and other shapes.</p>",
          "polygon": [
            [
              85.0166015625,
              178.083984375
            ],
            [
              423.140625,
              178.083984375
            ],
            [
              423.140625,
              188.70391845703125
            ],
            [
              85.0166015625,
              188.70391845703125
            ]
          ],
          "bbox": [
            85.0166015625,
            178.083984375,
            423.140625,
            188.70391845703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Entry:</b> A region where users can type text.</p>",
          "polygon": [
            [
              85.09130859375,
              198.193359375
            ],
            [
              273.89569091796875,
              198.193359375
            ],
            [
              273.89569091796875,
              209.27191162109375
            ],
            [
              85.09130859375,
              209.27191162109375
            ]
          ],
          "bbox": [
            85.09130859375,
            198.193359375,
            273.89569091796875,
            209.27191162109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Scrollbar:</b> A widget that controls the visible part of another widget.</p>",
          "polygon": [
            [
              84.64306640625,
              219.26953125
            ],
            [
              385.787109375,
              219.26953125
            ],
            [
              385.787109375,
              229.84088134765625
            ],
            [
              84.64306640625,
              229.84088134765625
            ]
          ],
          "bbox": [
            84.64306640625,
            219.26953125,
            385.787109375,
            229.84088134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Frame:</b> A container, often invisible, that contains other widgets.</p>",
          "polygon": [
            [
              85.166015625,
              239.572265625
            ],
            [
              367.7836608886719,
              239.572265625
            ],
            [
              367.7836608886719,
              250.40887451171875
            ],
            [
              85.166015625,
              250.40887451171875
            ]
          ],
          "bbox": [
            85.166015625,
            239.572265625,
            367.7836608886719,
            250.40887451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The empty gray square you see when you create a Gui is a Frame. When you create a new widget, it is added to this Frame.</p>",
          "polygon": [
            [
              85.46484375,
              264.12890625
            ],
            [
              482.90625,
              264.12890625
            ],
            [
              482.90625,
              287.1778564453125
            ],
            [
              85.46484375,
              287.1778564453125
            ]
          ],
          "bbox": [
            85.46484375,
            264.12890625,
            482.90625,
            287.1778564453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/200/SectionHeader/2"
          },
          "images": {}
        },
        {
          "id": "/page/201/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-201-0\"></span><b>19.2 Buttons and callbacks</b></h4>",
          "polygon": [
            [
              85.68896484375,
              316.916015625
            ],
            [
              269.2710266113281,
              316.916015625
            ],
            [
              269.2710266113281,
              331.5769348144531
            ],
            [
              85.68896484375,
              331.5769348144531
            ]
          ],
          "bbox": [
            85.68896484375,
            316.916015625,
            269.2710266113281,
            331.5769348144531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The method bu creates a Button widget:</p>",
          "polygon": [
            [
              85.98779296875,
              343.986328125
            ],
            [
              260.95184326171875,
              343.986328125
            ],
            [
              260.95184326171875,
              354.21588134765625
            ],
            [
              85.98779296875,
              354.21588134765625
            ]
          ],
          "bbox": [
            85.98779296875,
            343.986328125,
            260.95184326171875,
            354.21588134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">button = g.bu(text='Press me.')</p>",
          "polygon": [
            [
              85.98779296875,
              360.228515625
            ],
            [
              248.50340270996094,
              360.228515625
            ],
            [
              248.50340270996094,
              370.46929931640625
            ],
            [
              85.98779296875,
              370.46929931640625
            ]
          ],
          "bbox": [
            85.98779296875,
            360.228515625,
            248.50340270996094,
            370.46929931640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The return value from bu is a Button object. The button that appears in the Frame is a graphical representation of this object; you can control the button by invoking methods on it.</p>",
          "polygon": [
            [
              86.2119140625,
              376.6640625
            ],
            [
              483.50390625,
              376.6640625
            ],
            [
              483.50390625,
              411.46875
            ],
            [
              86.2119140625,
              411.46875
            ]
          ],
          "bbox": [
            86.2119140625,
            376.6640625,
            483.50390625,
            411.46875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">bu takes up to 32 parameters that control the appearance and function of the button. These parameters are called <b>options</b>. Instead of providing values for all 32 options, you can use keyword arguments, like text='Press me.', to specify only the options you need and use the default values for the rest.</p>",
          "polygon": [
            [
              86.0625,
              420.75
            ],
            [
              483.802734375,
              420.75
            ],
            [
              483.802734375,
              468.36688232421875
            ],
            [
              86.0625,
              468.36688232421875
            ]
          ],
          "bbox": [
            86.0625,
            420.75,
            483.802734375,
            468.36688232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you add a widget to the Frame, it gets \"shrink-wrapped;\" that is, the Frame shrinks to the size of the Button. If you add more widgets, the Frame grows to accommodate them.</p>",
          "polygon": [
            [
              86.2119140625,
              478.37109375
            ],
            [
              482.90625,
              478.37109375
            ],
            [
              482.90625,
              500.9358825683594
            ],
            [
              86.2119140625,
              500.9358825683594
            ]
          ],
          "bbox": [
            86.2119140625,
            478.37109375,
            482.90625,
            500.9358825683594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The method la creates a Label widget:</p>",
          "polygon": [
            [
              86.28662109375,
              522.84375
            ],
            [
              256.693359375,
              522.84375
            ],
            [
              256.693359375,
              533.5048828125
            ],
            [
              86.28662109375,
              533.5048828125
            ]
          ],
          "bbox": [
            86.28662109375,
            522.84375,
            256.693359375,
            533.5048828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">label = g.la(text='Press the button.')</p>",
          "polygon": [
            [
              86.28662109375,
              539.47265625
            ],
            [
              285.380859375,
              539.47265625
            ],
            [
              285.380859375,
              549.7573394775391
            ],
            [
              86.28662109375,
              549.7573394775391
            ]
          ],
          "bbox": [
            86.28662109375,
            539.47265625,
            285.380859375,
            549.7573394775391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">By default, Tkinter stacks the widgets top-to-bottom and centers them. We'll see how to override that behavior soon.</p>",
          "polygon": [
            [
              86.0625,
              555.71484375
            ],
            [
              484.1015625,
              555.71484375
            ],
            [
              484.1015625,
              578.5038909912109
            ],
            [
              86.0625,
              578.5038909912109
            ]
          ],
          "bbox": [
            86.0625,
            555.71484375,
            484.1015625,
            578.5038909912109
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you press the button, you will see that it doesn't do much. That's because you haven't \"wired it up;\" that is, you haven't told it what to do!</p>",
          "polygon": [
            [
              85.6142578125,
              588.5859375
            ],
            [
              483.50390625,
              588.5859375
            ],
            [
              483.50390625,
              611.0728912353516
            ],
            [
              85.6142578125,
              611.0728912353516
            ]
          ],
          "bbox": [
            85.6142578125,
            588.5859375,
            483.50390625,
            611.0728912353516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The option that controls the behavior of a button is command. The value of command is a function that gets executed when the button is pressed. For example, here is a function that creates a new Label:</p>",
          "polygon": [
            [
              86.0625,
              620.68359375
            ],
            [
              483.802734375,
              620.68359375
            ],
            [
              483.802734375,
              655.8358917236328
            ],
            [
              86.0625,
              655.8358917236328
            ]
          ],
          "bbox": [
            86.0625,
            620.68359375,
            483.802734375,
            655.8358917236328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Code/20",
          "block_type": "Code",
          "html": "<pre>def make_label():\n    g.la(text='Thank you.')</pre>",
          "polygon": [
            [
              86.39999389648438,
              662.125732421875
            ],
            [
              227.58737182617188,
              662.125732421875
            ],
            [
              227.58737182617188,
              684.283332824707
            ],
            [
              86.39999389648438,
              684.283332824707
            ]
          ],
          "bbox": [
            86.39999389648438,
            662.125732421875,
            227.58737182617188,
            684.283332824707
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/201/Text/21",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now we can create a button with this function as its command:</p>",
          "polygon": [
            [
              86.40000915527344,
              690.29296875
            ],
            [
              364.5703125,
              690.29296875
            ],
            [
              364.5703125,
              700.8348999023438
            ],
            [
              86.40000915527344,
              700.8348999023438
            ]
          ],
          "bbox": [
            86.40000915527344,
            690.29296875,
            364.5703125,
            700.8348999023438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/201/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/202/Page/242",
      "block_type": "Page",
      "html": "<content-ref src='/page/202/PageHeader/0'></content-ref><content-ref src='/page/202/PageHeader/23'></content-ref><content-ref src='/page/202/Text/1'></content-ref><content-ref src='/page/202/Text/2'></content-ref><content-ref src='/page/202/Text/3'></content-ref><content-ref src='/page/202/Text/4'></content-ref><content-ref src='/page/202/Text/5'></content-ref><content-ref src='/page/202/Text/6'></content-ref><content-ref src='/page/202/Text/7'></content-ref><content-ref src='/page/202/SectionHeader/8'></content-ref><content-ref src='/page/202/Text/9'></content-ref><content-ref src='/page/202/Text/10'></content-ref><content-ref src='/page/202/Code/241'></content-ref><content-ref src='/page/202/Text/12'></content-ref><content-ref src='/page/202/Text/13'></content-ref><content-ref src='/page/202/Code/14'></content-ref><content-ref src='/page/202/Text/15'></content-ref><content-ref src='/page/202/Text/16'></content-ref><content-ref src='/page/202/Text/17'></content-ref><content-ref src='/page/202/Text/18'></content-ref><content-ref src='/page/202/Text/19'></content-ref><content-ref src='/page/202/Text/20'></content-ref><content-ref src='/page/202/Text/21'></content-ref><content-ref src='/page/202/Text/22'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/202/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.392578125,
              61.0048828125
            ],
            [
              525.6033935546875,
              61.0048828125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.392578125,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.392578125,
            61.0048828125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/PageHeader/23",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              61.0048828125
            ],
            [
              525.638671875,
              61.0048828125
            ],
            [
              525.638671875,
              70.189453125
            ],
            [
              510.099609375,
              70.189453125
            ]
          ],
          "bbox": [
            510.099609375,
            61.0048828125,
            525.638671875,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">button2 = g.bu(text='No, press me!', command=make_label)</p>",
          "polygon": [
            [
              128.27197265625,
              88.68572998046875
            ],
            [
              428.818359375,
              88.68572998046875
            ],
            [
              428.818359375,
              98.9033203125
            ],
            [
              128.27197265625,
              98.9033203125
            ]
          ],
          "bbox": [
            128.27197265625,
            88.68572998046875,
            428.818359375,
            98.9033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you press this button, it should execute make_label and a new label should appear.</p>",
          "polygon": [
            [
              128.197265625,
              103.060546875
            ],
            [
              523.248046875,
              103.060546875
            ],
            [
              523.248046875,
              113.2689208984375
            ],
            [
              128.197265625,
              113.2689208984375
            ]
          ],
          "bbox": [
            128.197265625,
            103.060546875,
            523.248046875,
            113.2689208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The value of the command option is a function object, which is known as a <b>callback</b> because after you call bu to create the button, the flow of execution \"calls back\" when the user presses the button.</p>",
          "polygon": [
            [
              128.794921875,
              121.5997314453125
            ],
            [
              525.638671875,
              121.5997314453125
            ],
            [
              525.638671875,
              156.09991455078125
            ],
            [
              128.794921875,
              156.09991455078125
            ]
          ],
          "bbox": [
            128.794921875,
            121.5997314453125,
            525.638671875,
            156.09991455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This kind of flow is characteristic of <b>event-driven programming</b>. User actions, like button presses and key strokes, are called <b>events</b>. In event-driven programming, the flow of execution is determined by user actions rather than by the programmer.</p>",
          "polygon": [
            [
              128.9443359375,
              164.4521484375
            ],
            [
              525.602783203125,
              164.4521484375
            ],
            [
              525.602783203125,
              198.93084716796875
            ],
            [
              128.9443359375,
              198.93084716796875
            ]
          ],
          "bbox": [
            128.9443359375,
            164.4521484375,
            525.602783203125,
            198.93084716796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The challenge of event-driven programming is to construct a set of widgets and callbacks that work correctly (or at least generate appropriate error messages) for any sequence of user actions.</p>",
          "polygon": [
            [
              128.6455078125,
              207.28125
            ],
            [
              525.9375,
              207.28125
            ],
            [
              525.9375,
              241.7628173828125
            ],
            [
              128.6455078125,
              241.7628173828125
            ]
          ],
          "bbox": [
            128.6455078125,
            207.28125,
            525.9375,
            241.7628173828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 19.1.</b> <i>Write a program that creates a GUI with a single button. When the button is</i> <i>pressed it should create a second button. When</i> that <i>button is pressed, it should create a label that</i> <i>says, \"Nice job!\".</i></p>",
          "polygon": [
            [
              129.2431640625,
              243.821533203125
            ],
            [
              525.6007690429688,
              243.821533203125
            ],
            [
              525.6007690429688,
              278.173095703125
            ],
            [
              129.2431640625,
              278.173095703125
            ]
          ],
          "bbox": [
            129.2431640625,
            243.821533203125,
            525.6007690429688,
            278.173095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>What happens if you press the buttons more than once? Solution:</i> <a href=\"http://thinkpython.com/code/button_demo.py\">http:</a> <a href=\"http://thinkpython.com/code/button_demo.py\">//</a> <a href=\"http://thinkpython.com/code/button_demo.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/button_demo.py\">com/</a> <a href=\"http://thinkpython.com/code/button_demo.py\">code/</a> <a href=\"http://thinkpython.com/code/button_demo.py\">button_</a> <a href=\"http://thinkpython.com/code/button_demo.py\">demo.</a> <a href=\"http://thinkpython.com/code/button_demo.py\">py</a></p>",
          "polygon": [
            [
              129.5419921875,
              286.5718078613281
            ],
            [
              524.14453125,
              286.5718078613281
            ],
            [
              524.14453125,
              308.72943115234375
            ],
            [
              129.5419921875,
              308.72943115234375
            ]
          ],
          "bbox": [
            129.5419921875,
            286.5718078613281,
            524.14453125,
            308.72943115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/201/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/202/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-202-0\"></span><b>19.3 Canvas widgets</b></h4>",
          "polygon": [
            [
              128.6455078125,
              335.95166015625
            ],
            [
              272.3818359375,
              335.95166015625
            ],
            [
              272.3818359375,
              350.2978820800781
            ],
            [
              128.6455078125,
              350.2978820800781
            ]
          ],
          "bbox": [
            128.6455078125,
            335.95166015625,
            272.3818359375,
            350.2978820800781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the most versatile widgets is the Canvas, which creates a region for drawing lines, circles and other shapes. If you did Exercise <a href=\"#page-170-2\">15.4</a> you are already familiar with canvases.</p>",
          "polygon": [
            [
              129.60000610351562,
              360.9482421875
            ],
            [
              525.6034545898438,
              360.9482421875
            ],
            [
              525.6034545898438,
              383.1048278808594
            ],
            [
              129.60000610351562,
              383.1048278808594
            ]
          ],
          "bbox": [
            129.60000610351562,
            360.9482421875,
            525.6034545898438,
            383.1048278808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The method ca creates a new Canvas:</p>",
          "polygon": [
            [
              128.72021484375,
              391.359375
            ],
            [
              295.0260925292969,
              391.359375
            ],
            [
              295.0260925292969,
              401.5478210449219
            ],
            [
              128.72021484375,
              401.5478210449219
            ]
          ],
          "bbox": [
            128.72021484375,
            391.359375,
            295.0260925292969,
            401.5478210449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Code/241",
          "block_type": "Code",
          "html": "<pre>canvas = g.ca(width=500, height=500)</pre>",
          "polygon": [
            [
              129.01904296875,
              405.66796875
            ],
            [
              319.447265625,
              405.66796875
            ],
            [
              319.447265625,
              415.8692626953125
            ],
            [
              129.01904296875,
              415.8692626953125
            ]
          ],
          "bbox": [
            129.01904296875,
            405.66796875,
            319.447265625,
            415.8692626953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">width and height are the dimensions of the canvas in pixels.</p>",
          "polygon": [
            [
              128.0478515625,
              419.9765625
            ],
            [
              397.44140625,
              419.9765625
            ],
            [
              397.44140625,
              430.4898376464844
            ],
            [
              128.0478515625,
              430.4898376464844
            ]
          ],
          "bbox": [
            128.0478515625,
            419.9765625,
            397.44140625,
            430.4898376464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">After you create a widget, you can still change the values of the options with the config method. For example, the bg option changes the background color:</p>",
          "polygon": [
            [
              128.6455078125,
              438.8206787109375
            ],
            [
              525.607177734375,
              438.8206787109375
            ],
            [
              525.607177734375,
              461.1268310546875
            ],
            [
              128.6455078125,
              461.1268310546875
            ]
          ],
          "bbox": [
            128.6455078125,
            438.8206787109375,
            525.607177734375,
            461.1268310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Code/14",
          "block_type": "Code",
          "html": "<pre>canvas.config(bg='white')</pre>",
          "polygon": [
            [
              128.6455078125,
              465.22265625
            ],
            [
              260.3293762207031,
              465.22265625
            ],
            [
              260.3293762207031,
              475.4482727050781
            ],
            [
              128.6455078125,
              475.4482727050781
            ]
          ],
          "bbox": [
            128.6455078125,
            465.22265625,
            260.3293762207031,
            475.4482727050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The value of bg is a string that names a color. The set of legal color names is different for different implementations of Python, but all implementations provide at least:</p>",
          "polygon": [
            [
              129.60000610351562,
              479.9566955566406
            ],
            [
              525.5967407226562,
              479.9566955566406
            ],
            [
              525.5967407226562,
              502.2628479003906
            ],
            [
              129.60000610351562,
              502.2628479003906
            ]
          ],
          "bbox": [
            129.60000610351562,
            479.9566955566406,
            525.5967407226562,
            502.2628479003906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">white black red green blue cyan yellow magenta</p>",
          "polygon": [
            [
              128.9443359375,
              506.6217041015625
            ],
            [
              255.1287384033203,
              506.6217041015625
            ],
            [
              255.1287384033203,
              540.9733123779297
            ],
            [
              128.9443359375,
              540.9733123779297
            ]
          ],
          "bbox": [
            128.9443359375,
            506.6217041015625,
            255.1287384033203,
            540.9733123779297
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Shapes on a Canvas are called <b>items</b>. For example, the Canvas method circle draws (you guessed it) a circle:</p>",
          "polygon": [
            [
              129.392578125,
              545.2734375
            ],
            [
              525.638671875,
              545.2734375
            ],
            [
              525.638671875,
              567.7878570556641
            ],
            [
              129.392578125,
              567.7878570556641
            ]
          ],
          "bbox": [
            129.392578125,
            545.2734375,
            525.638671875,
            567.7878570556641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">item = canvas.circle([0,0], 100, fill='red')</p>",
          "polygon": [
            [
              128.27197265625,
              572.1466979980469
            ],
            [
              359.682373046875,
              572.1466979980469
            ],
            [
              359.682373046875,
              582.1092987060547
            ],
            [
              128.27197265625,
              582.1092987060547
            ]
          ],
          "bbox": [
            128.27197265625,
            572.1466979980469,
            359.682373046875,
            582.1092987060547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first argument is a coordinate pair that specifies the center of the circle; the second is the radius.</p>",
          "polygon": [
            [
              128.9443359375,
              586.65234375
            ],
            [
              525.6033325195312,
              586.65234375
            ],
            [
              525.6033325195312,
              608.9248504638672
            ],
            [
              128.9443359375,
              608.9248504638672
            ]
          ],
          "bbox": [
            128.9443359375,
            586.65234375,
            525.6033325195312,
            608.9248504638672
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/20",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Gui.py provides a standard Cartesian coordinate system with the origin at the center of the Canvas and the positive <i>y</i> axis pointing up. This is different from some other graphics systems where the origin is in the upper left corner, with the <i>y</i> axis pointing down.</p>",
          "polygon": [
            [
              128.6455078125,
              617.2546997070312
            ],
            [
              525.9375,
              617.2546997070312
            ],
            [
              525.9375,
              651.755859375
            ],
            [
              128.6455078125,
              651.755859375
            ]
          ],
          "bbox": [
            128.6455078125,
            617.2546997070312,
            525.9375,
            651.755859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/21",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The fill option specifies that the circle should be filled in with red.</p>",
          "polygon": [
            [
              128.3466796875,
              660.0867004394531
            ],
            [
              426.9684143066406,
              660.0867004394531
            ],
            [
              426.9684143066406,
              670.1988677978516
            ],
            [
              128.3466796875,
              670.1988677978516
            ]
          ],
          "bbox": [
            128.3466796875,
            660.0867004394531,
            426.9684143066406,
            670.1988677978516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/202/Text/22",
          "block_type": "Text",
          "html": "<p block-type=\"Text\" class=\"has-continuation\">The return value from circle is an Item object that provides methods for modifying the item on the canvas. For example, you can use config to change any of the circle's options:</p>",
          "polygon": [
            [
              128.0478515625,
              678.5287017822266
            ],
            [
              525.9375,
              678.5287017822266
            ],
            [
              525.9375,
              700.8348693847656
            ],
            [
              128.0478515625,
              700.8348693847656
            ]
          ],
          "bbox": [
            128.0478515625,
            678.5287017822266,
            525.9375,
            700.8348693847656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/202/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/203/Page/182",
      "block_type": "Page",
      "html": "<content-ref src='/page/203/PageHeader/0'></content-ref><content-ref src='/page/203/PageHeader/24'></content-ref><content-ref src='/page/203/Text/1'></content-ref><content-ref src='/page/203/Text/2'></content-ref><content-ref src='/page/203/SectionHeader/3'></content-ref><content-ref src='/page/203/Text/4'></content-ref><content-ref src='/page/203/Code/5'></content-ref><content-ref src='/page/203/Text/6'></content-ref><content-ref src='/page/203/Text/7'></content-ref><content-ref src='/page/203/Text/8'></content-ref><content-ref src='/page/203/Text/9'></content-ref><content-ref src='/page/203/Text/10'></content-ref><content-ref src='/page/203/Text/11'></content-ref><content-ref src='/page/203/Text/12'></content-ref><content-ref src='/page/203/SectionHeader/13'></content-ref><content-ref src='/page/203/Text/14'></content-ref><content-ref src='/page/203/Text/15'></content-ref><content-ref src='/page/203/Text/16'></content-ref><content-ref src='/page/203/Text/17'></content-ref><content-ref src='/page/203/Code/18'></content-ref><content-ref src='/page/203/Text/19'></content-ref><content-ref src='/page/203/Text/20'></content-ref><content-ref src='/page/203/Text/21'></content-ref><content-ref src='/page/203/Text/22'></content-ref><content-ref src='/page/203/Code/23'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/203/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.607421875,
              60.71484375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/203/PageHeader/24",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.09130859375,
              60.6181640625
            ],
            [
              101.37744140625,
              60.6181640625
            ],
            [
              101.37744140625,
              70.0927734375
            ],
            [
              85.09130859375,
              70.0927734375
            ]
          ],
          "bbox": [
            85.09130859375,
            60.6181640625,
            101.37744140625,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">item.config(fill='yellow', outline='orange', width=10)</p>",
          "polygon": [
            [
              84.49365234375,
              88.55859375
            ],
            [
              368.7860412597656,
              88.55859375
            ],
            [
              368.7860412597656,
              98.6483154296875
            ],
            [
              84.49365234375,
              98.6483154296875
            ]
          ],
          "bbox": [
            84.49365234375,
            88.55859375,
            368.7860412597656,
            98.6483154296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-203-2\"></span>width is the thickness of the outline in pixels; outline is the color. <b>Exercise 19.2.</b> <i>Write a program that creates a Canvas and a Button. When the user presses the</i> <i>Button, it should draw a circle on the canvas.</i></p>",
          "polygon": [
            [
              85.46484375,
              105.62774658203125
            ],
            [
              484.998046875,
              105.62774658203125
            ],
            [
              484.998046875,
              139.95623779296875
            ],
            [
              85.46484375,
              139.95623779296875
            ]
          ],
          "bbox": [
            85.46484375,
            105.62774658203125,
            484.998046875,
            139.95623779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/202/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/203/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-203-0\"></span><b>19.4 Coordinate sequences</b></h4>",
          "polygon": [
            [
              85.53955078125,
              171.6064453125
            ],
            [
              269.6870422363281,
              171.6064453125
            ],
            [
              269.6870422363281,
              186.14697265625
            ],
            [
              85.53955078125,
              186.14697265625
            ]
          ],
          "bbox": [
            85.53955078125,
            171.6064453125,
            269.6870422363281,
            186.14697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The rectangle method takes a sequence of coordinates that specify opposite corners of the rectangle. This example draws a blue rectangle with the lower left corner at the origin and the upper right corner at (200, 100):</p>",
          "polygon": [
            [
              85.3154296875,
              198.966796875
            ],
            [
              482.4034118652344,
              198.966796875
            ],
            [
              482.4034118652344,
              233.93096923828125
            ],
            [
              85.3154296875,
              233.93096923828125
            ]
          ],
          "bbox": [
            85.3154296875,
            198.966796875,
            482.4034118652344,
            233.93096923828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Code/5",
          "block_type": "Code",
          "html": "<pre>canvas.rectangle([[0, 0], [200, 100]],\n                 fill='blue', outline='orange', width=10)</pre>",
          "polygon": [
            [
              85.24072265625,
              240.345703125
            ],
            [
              384.4730529785156,
              240.345703125
            ],
            [
              384.4730529785156,
              262.91839599609375
            ],
            [
              85.24072265625,
              262.91839599609375
            ]
          ],
          "bbox": [
            85.24072265625,
            240.345703125,
            384.4730529785156,
            262.91839599609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This way of specifying corners is called a <b>bounding box</b> because the two points bound the rectangle.</p>",
          "polygon": [
            [
              85.6142578125,
              269.9296875
            ],
            [
              483.50390625,
              269.9296875
            ],
            [
              483.50390625,
              292.2039794921875
            ],
            [
              85.6142578125,
              292.2039794921875
            ]
          ],
          "bbox": [
            85.6142578125,
            269.9296875,
            483.50390625,
            292.2039794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">oval takes a bounding box and draws an oval within the specified rectangle:</p>",
          "polygon": [
            [
              85.166015625,
              302.80078125
            ],
            [
              423.439453125,
              302.80078125
            ],
            [
              423.439453125,
              313.11798095703125
            ],
            [
              85.166015625,
              313.11798095703125
            ]
          ],
          "bbox": [
            85.166015625,
            302.80078125,
            423.439453125,
            313.11798095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">canvas.oval([[0, 0], [200, 100]], outline='orange', width=10)</p>",
          "polygon": [
            [
              85.3154296875,
              319.236328125
            ],
            [
              405.80859375,
              319.236328125
            ],
            [
              405.80859375,
              329.9114074707031
            ],
            [
              85.3154296875,
              329.9114074707031
            ]
          ],
          "bbox": [
            85.3154296875,
            319.236328125,
            405.80859375,
            329.9114074707031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">line takes a sequence of coordinates and draws a line that connects the points. This example draws two legs of a triangle:</p>",
          "polygon": [
            [
              85.46484375,
              336.638671875
            ],
            [
              482.3957824707031,
              336.638671875
            ],
            [
              482.3957824707031,
              359.1979675292969
            ],
            [
              85.46484375,
              359.1979675292969
            ]
          ],
          "bbox": [
            85.46484375,
            336.638671875,
            482.3957824707031,
            359.1979675292969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">canvas.line([[0, 100], [100, 200], [200, 100]], width=10)</p>",
          "polygon": [
            [
              85.68896484375,
              366.02783203125
            ],
            [
              384.5508117675781,
              366.02783203125
            ],
            [
              384.5508117675781,
              375.99041748046875
            ],
            [
              85.68896484375,
              375.99041748046875
            ]
          ],
          "bbox": [
            85.68896484375,
            366.02783203125,
            384.5508117675781,
            375.99041748046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">polygon takes the same arguments, but it draws the last leg of the polygon (if necessary) and fills it in:</p>",
          "polygon": [
            [
              85.3154296875,
              382.658203125
            ],
            [
              482.3980407714844,
              382.658203125
            ],
            [
              482.3980407714844,
              405.2769775390625
            ],
            [
              85.3154296875,
              405.2769775390625
            ]
          ],
          "bbox": [
            85.3154296875,
            382.658203125,
            482.3980407714844,
            405.2769775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">canvas.polygon([[0, 100], [100, 200], [200, 100]], fill='red', outline='orange', width=10)</p>",
          "polygon": [
            [
              85.763671875,
              411.85546875
            ],
            [
              369.94921875,
              411.85546875
            ],
            [
              369.94921875,
              434.264404296875
            ],
            [
              85.763671875,
              434.264404296875
            ]
          ],
          "bbox": [
            85.763671875,
            411.85546875,
            369.94921875,
            434.264404296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/203/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-203-1\"></span><b>19.5 More widgets</b></h4>",
          "polygon": [
            [
              85.6142578125,
              465.609375
            ],
            [
              216.30496215820312,
              465.609375
            ],
            [
              216.30496215820312,
              480.4320373535156
            ],
            [
              85.6142578125,
              480.4320373535156
            ]
          ],
          "bbox": [
            85.6142578125,
            465.609375,
            216.30496215820312,
            480.4320373535156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Tkinter provides two widgets that let users type text: an Entry, which is a single line, and a Text widget, which has multiple lines.</p>",
          "polygon": [
            [
              85.763671875,
              493.06640625
            ],
            [
              482.40350341796875,
              493.06640625
            ],
            [
              482.40350341796875,
              516.0209655761719
            ],
            [
              85.763671875,
              516.0209655761719
            ]
          ],
          "bbox": [
            85.763671875,
            493.06640625,
            482.40350341796875,
            516.0209655761719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">en creates a new Entry:</p>",
          "polygon": [
            [
              86.0625,
              526.7109375
            ],
            [
              190.5029296875,
              526.7109375
            ],
            [
              190.5029296875,
              536.9349670410156
            ],
            [
              86.0625,
              536.9349670410156
            ]
          ],
          "bbox": [
            86.0625,
            526.7109375,
            190.5029296875,
            536.9349670410156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">entry = g.en(text='Default text.')</p>",
          "polygon": [
            [
              85.39013671875,
              543.7658081054688
            ],
            [
              264.1914978027344,
              543.7658081054688
            ],
            [
              264.1914978027344,
              553.78125
            ],
            [
              85.39013671875,
              553.78125
            ]
          ],
          "bbox": [
            85.39013671875,
            543.7658081054688,
            264.1914978027344,
            553.78125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The text option allows you to put text into the entry when it is created. The get method returns the contents of the Entry (which may have been changed by the user):</p>",
          "polygon": [
            [
              85.6142578125,
              560.35546875
            ],
            [
              482.90625,
              560.35546875
            ],
            [
              482.90625,
              583.0149688720703
            ],
            [
              85.6142578125,
              583.0149688720703
            ]
          ],
          "bbox": [
            85.6142578125,
            560.35546875,
            482.90625,
            583.0149688720703
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Code/18",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; entry.get()\n'Default text.'</pre>",
          "polygon": [
            [
              85.9130859375,
              589.359375
            ],
            [
              168.6884765625,
              589.359375
            ],
            [
              168.6884765625,
              612.0014190673828
            ],
            [
              85.9130859375,
              612.0014190673828
            ]
          ],
          "bbox": [
            85.9130859375,
            589.359375,
            168.6884765625,
            612.0014190673828
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">te creates a Text widget:</p>",
          "polygon": [
            [
              85.68896484375,
              618.36328125
            ],
            [
              195.43359375,
              618.36328125
            ],
            [
              195.43359375,
              629.0939636230469
            ],
            [
              85.68896484375,
              629.0939636230469
            ]
          ],
          "bbox": [
            85.68896484375,
            618.36328125,
            195.43359375,
            629.0939636230469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/20",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">text = g.te(width=100, height=5)</p>",
          "polygon": [
            [
              85.763671875,
              635.9238128662109
            ],
            [
              253.78172302246094,
              635.9238128662109
            ],
            [
              253.78172302246094,
              645.8864135742188
            ],
            [
              85.763671875,
              645.8864135742188
            ]
          ],
          "bbox": [
            85.763671875,
            635.9238128662109,
            253.78172302246094,
            645.8864135742188
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/21",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">width and height are the dimensions of the widget in characters and lines.</p>",
          "polygon": [
            [
              85.9130859375,
              652.39453125
            ],
            [
              415.96875,
              652.39453125
            ],
            [
              415.96875,
              662.9789733886719
            ],
            [
              85.9130859375,
              662.9789733886719
            ]
          ],
          "bbox": [
            85.9130859375,
            652.39453125,
            415.96875,
            662.9789733886719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Text/22",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">insert puts text into the Text widget:</p>",
          "polygon": [
            [
              86.2119140625,
              673.27734375
            ],
            [
              253.5556640625,
              673.27734375
            ],
            [
              253.5556640625,
              683.8929824829102
            ],
            [
              86.2119140625,
              683.8929824829102
            ]
          ],
          "bbox": [
            86.2119140625,
            673.27734375,
            253.5556640625,
            683.8929824829102
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/203/Code/23",
          "block_type": "Code",
          "html": "<pre>text.insert(END, 'A line of text.')</pre>",
          "polygon": [
            [
              86.361328125,
              690.6796875
            ],
            [
              269.4205017089844,
              690.6796875
            ],
            [
              269.4205017089844,
              700.734375
            ],
            [
              86.361328125,
              700.734375
            ]
          ],
          "bbox": [
            86.361328125,
            690.6796875,
            269.4205017089844,
            700.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/203/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/204/Page/202",
      "block_type": "Page",
      "html": "<content-ref src='/page/204/PageHeader/0'></content-ref><content-ref src='/page/204/PageHeader/19'></content-ref><content-ref src='/page/204/Text/1'></content-ref><content-ref src='/page/204/Text/2'></content-ref><content-ref src='/page/204/Text/3'></content-ref><content-ref src='/page/204/Text/4'></content-ref><content-ref src='/page/204/Code/5'></content-ref><content-ref src='/page/204/Text/6'></content-ref><content-ref src='/page/204/Code/7'></content-ref><content-ref src='/page/204/Text/8'></content-ref><content-ref src='/page/204/Text/9'></content-ref><content-ref src='/page/204/Text/10'></content-ref><content-ref src='/page/204/SectionHeader/11'></content-ref><content-ref src='/page/204/Text/12'></content-ref><content-ref src='/page/204/Text/13'></content-ref><content-ref src='/page/204/Text/14'></content-ref><content-ref src='/page/204/Code/15'></content-ref><content-ref src='/page/204/Text/16'></content-ref><content-ref src='/page/204/Text/17'></content-ref><content-ref src='/page/204/Text/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/204/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.794921875,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.794921875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.794921875,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.76318359375
            ],
            [
              525.9375,
              60.76318359375
            ],
            [
              525.9375,
              69.94775390625
            ],
            [
              509.80078125,
              69.94775390625
            ]
          ],
          "bbox": [
            509.80078125,
            60.76318359375,
            525.9375,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">END is a special index that indicates the last character in the Text widget.</p>",
          "polygon": [
            [
              127.599609375,
              88.68572998046875
            ],
            [
              445.552734375,
              88.68572998046875
            ],
            [
              445.552734375,
              98.79791259765625
            ],
            [
              127.599609375,
              98.79791259765625
            ]
          ],
          "bbox": [
            127.599609375,
            88.68572998046875,
            445.552734375,
            98.79791259765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can also specify a character using a dotted index, like 1.1, which has the line number before the dot and the column number after. The following example adds the letters 'nother' after the first character of the first line.</p>",
          "polygon": [
            [
              127.8984375,
              107.314453125
            ],
            [
              525.6033935546875,
              107.314453125
            ],
            [
              525.6033935546875,
              141.92486572265625
            ],
            [
              127.8984375,
              141.92486572265625
            ]
          ],
          "bbox": [
            127.8984375,
            107.314453125,
            525.6033935546875,
            141.92486572265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">&gt;&gt;&gt; text.insert(1.1, 'nother')</p>",
          "polygon": [
            [
              127.8984375,
              146.1796875
            ],
            [
              286.4743957519531,
              146.1796875
            ],
            [
              286.4743957519531,
              156.54229736328125
            ],
            [
              127.8984375,
              156.54229736328125
            ]
          ],
          "bbox": [
            127.8984375,
            146.1796875,
            286.4743957519531,
            156.54229736328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The get method reads the text in the widget; it takes a start and end index as arguments. The following example returns all the text in the widget, including the newline character:</p>",
          "polygon": [
            [
              127.7490234375,
              160.48828125
            ],
            [
              525.5955200195312,
              160.48828125
            ],
            [
              525.5955200195312,
              183.6539306640625
            ],
            [
              127.7490234375,
              183.6539306640625
            ]
          ],
          "bbox": [
            127.7490234375,
            160.48828125,
            525.5955200195312,
            183.6539306640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Code/5",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; text.get(0.0, END)\n'Another line of text.\\n'</pre>",
          "polygon": [
            [
              128.794921875,
              188.30877685546875
            ],
            [
              260.32940673828125,
              188.30877685546875
            ],
            [
              260.32940673828125,
              210.46533203125
            ],
            [
              128.794921875,
              210.46533203125
            ]
          ],
          "bbox": [
            128.794921875,
            188.30877685546875,
            260.32940673828125,
            210.46533203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The delete method removes text from the widget; the following example deletes all but the first two characters:</p>",
          "polygon": [
            [
              128.3466796875,
              214.62890625
            ],
            [
              525.603515625,
              214.62890625
            ],
            [
              525.603515625,
              237.57696533203125
            ],
            [
              128.3466796875,
              237.57696533203125
            ]
          ],
          "bbox": [
            128.3466796875,
            214.62890625,
            525.603515625,
            237.57696533203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Code/7",
          "block_type": "Code",
          "html": "<pre>&gt;&gt;&gt; text.delete(1.2, END)\n&gt;&gt;&gt; text.get(0.0, END)\n'An\\n'</pre>",
          "polygon": [
            [
              128.49609375,
              242.2318115234375
            ],
            [
              260.36907958984375,
              242.2318115234375
            ],
            [
              260.36907958984375,
              276.5823974609375
            ],
            [
              128.49609375,
              276.5823974609375
            ]
          ],
          "bbox": [
            128.49609375,
            242.2318115234375,
            260.36907958984375,
            276.5823974609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-204-1\"></span><b>Exercise 19.3.</b> <i>Modify your solution to Exercise </i><i><a href=\"#page-203-2\">19.2</a></i><i> by adding an Entry widget and a second</i> <i>button. When the user presses the second button, it should read a color name from the Entry and</i> <i>use it to change the fill color of the circle. Use</i> config <i>to modify the existing circle; don't create a</i> <i>new one.</i></p>",
          "polygon": [
            [
              128.6455078125,
              278.79168701171875
            ],
            [
              525.6036376953125,
              278.79168701171875
            ],
            [
              525.6036376953125,
              325.3372802734375
            ],
            [
              128.6455078125,
              325.3372802734375
            ]
          ],
          "bbox": [
            128.6455078125,
            278.79168701171875,
            525.6036376953125,
            325.3372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Your program should handle the case where the user tries to change the color of a circle that hasn't</i> <i>been created, and the case where the color name is invalid.</i></p>",
          "polygon": [
            [
              128.794921875,
              333.73828125
            ],
            [
              525.6034545898438,
              333.73828125
            ],
            [
              525.6034545898438,
              356.2702941894531
            ],
            [
              128.794921875,
              356.2702941894531
            ]
          ],
          "bbox": [
            128.794921875,
            333.73828125,
            525.6034545898438,
            356.2702941894531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You can see my solution at</i> <a href=\"http://thinkpython.com/code/circle_demo.py\">http:</a> <a href=\"http://thinkpython.com/code/circle_demo.py\">//</a> <a href=\"http://thinkpython.com/code/circle_demo.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/circle_demo.py\">com/</a> <a href=\"http://thinkpython.com/code/circle_demo.py\">code/</a> <a href=\"http://thinkpython.com/code/circle_demo.py\">circle_</a> <a href=\"http://thinkpython.com/code/circle_demo.py\">demo.</a> <a href=\"http://thinkpython.com/code/circle_demo.py\">py</a> <i>.</i></p>",
          "polygon": [
            [
              127.8984375,
              364.9649963378906
            ],
            [
              474.76568603515625,
              364.9649963378906
            ],
            [
              474.76568603515625,
              375.00830078125
            ],
            [
              127.8984375,
              375.00830078125
            ]
          ],
          "bbox": [
            127.8984375,
            364.9649963378906,
            474.76568603515625,
            375.00830078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/203/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/204/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-204-0\"></span><b>19.6 Packing widgets</b></h4>",
          "polygon": [
            [
              128.3466796875,
              402.5648498535156
            ],
            [
              277.02154541015625,
              402.5648498535156
            ],
            [
              277.02154541015625,
              416.91107177734375
            ],
            [
              128.3466796875,
              416.91107177734375
            ]
          ],
          "bbox": [
            128.3466796875,
            402.5648498535156,
            277.02154541015625,
            416.91107177734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">So far we have been stacking widgets in a single column, but in most GUIs the layout is more complicated. For example, Figure <a href=\"#page-205-0\">19.1</a> shows a simplified version of TurtleWorld (see Chapter <a href=\"#page-52-0\">4)</a>.</p>",
          "polygon": [
            [
              128.9443359375,
              427.32421875
            ],
            [
              525.6033935546875,
              427.32421875
            ],
            [
              525.6033935546875,
              462.2090148925781
            ],
            [
              128.9443359375,
              462.2090148925781
            ]
          ],
          "bbox": [
            128.9443359375,
            427.32421875,
            525.6033935546875,
            462.2090148925781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This section presents the code that creates this GUI, broken into a series of steps. You can download the complete example from <a href=\"http://thinkpython.com/code/SimpleTurtleWorld.py\">http://thinkpython.com/code/</a> <a href=\"http://thinkpython.com/code/SimpleTurtleWorld.py\">SimpleTurtleWorld.py</a>.</p>",
          "polygon": [
            [
              129.09375,
              470.9854431152344
            ],
            [
              526.53515625,
              470.9854431152344
            ],
            [
              526.53515625,
              505.3360290527344
            ],
            [
              129.09375,
              505.3360290527344
            ]
          ],
          "bbox": [
            129.09375,
            470.9854431152344,
            526.53515625,
            505.3360290527344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">At the top level, this GUI contains two widgets—a Canvas and a Frame—arranged in a row. So the first step is to create the row.</p>",
          "polygon": [
            [
              128.794921875,
              513.94921875
            ],
            [
              525.638671875,
              513.94921875
            ],
            [
              525.638671875,
              536.26904296875
            ],
            [
              128.794921875,
              536.26904296875
            ]
          ],
          "bbox": [
            128.794921875,
            513.94921875,
            525.638671875,
            536.26904296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/204/Code/15",
          "block_type": "Code",
          "html": "<pre>class SimpleTurtleWorld(TurtleWorld):\n    \"\"\"This class is identical to TurtleWorld, but the code that\n    lays out the GUI is simplified for explanatory purposes.\"\"\"\n    def setup(self):\n        self.row()\n        ...</pre>",
          "polygon": [
            [
              129.59999084472656,
              540.9238891601562
            ],
            [
              467.96484375,
              540.9238891601562
            ],
            [
              467.96484375,
              624.0525054931641
            ],
            [
              129.59999084472656,
              624.0525054931641
            ]
          ],
          "bbox": [
            129.59999084472656,
            540.9238891601562,
            467.96484375,
            624.0525054931641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">setup is the function that creates and arranges the widgets. Arranging widgets in a GUI is called <b>packing</b>.</p>",
          "polygon": [
            [
              127.7490234375,
              628.8569030761719
            ],
            [
              525.6046752929688,
              628.8569030761719
            ],
            [
              525.6046752929688,
              651.62109375
            ],
            [
              127.7490234375,
              651.62109375
            ]
          ],
          "bbox": [
            127.7490234375,
            628.8569030761719,
            525.6046752929688,
            651.62109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">row creates a row Frame and makes it the \"current Frame.\" Until this Frame is closed or another Frame is created, all subsequent widgets are packed in a row.</p>",
          "polygon": [
            [
              128.197265625,
              659.7421875
            ],
            [
              525.638671875,
              659.7421875
            ],
            [
              525.638671875,
              682.171875
            ],
            [
              128.197265625,
              682.171875
            ]
          ],
          "bbox": [
            128.197265625,
            659.7421875,
            525.638671875,
            682.171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/204/Text/18",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is the code that creates the Canvas and the column Frame that hold the other widgets:</p>",
          "polygon": [
            [
              127.7490234375,
              690.8724670410156
            ],
            [
              525.9375,
              690.8724670410156
            ],
            [
              525.9375,
              700.8350677490234
            ],
            [
              127.7490234375,
              700.8350677490234
            ]
          ],
          "bbox": [
            127.7490234375,
            690.8724670410156,
            525.9375,
            700.8350677490234
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/204/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/205/Page/123",
      "block_type": "Page",
      "html": "<content-ref src='/page/205/PageHeader/0'></content-ref><content-ref src='/page/205/PageHeader/12'></content-ref><content-ref src='/page/205/FigureGroup/122'></content-ref><content-ref src='/page/205/Code/3'></content-ref><content-ref src='/page/205/Text/4'></content-ref><content-ref src='/page/205/Code/5'></content-ref><content-ref src='/page/205/Text/6'></content-ref><content-ref src='/page/205/Text/7'></content-ref><content-ref src='/page/205/Text/8'></content-ref><content-ref src='/page/205/Code/9'></content-ref><content-ref src='/page/205/Text/10'></content-ref><content-ref src='/page/205/Text/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/205/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.4034118652344,
              60.71484375
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/PageHeader/12",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.83837890625,
              61.24658203125
            ],
            [
              100.92919921875,
              61.24658203125
            ],
            [
              100.92919921875,
              70.72119140625
            ],
            [
              85.83837890625,
              70.72119140625
            ]
          ],
          "bbox": [
            85.83837890625,
            61.24658203125,
            100.92919921875,
            70.72119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/FigureGroup/122",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/205/Figure/1'></content-ref><content-ref src='/page/205/Caption/2'></content-ref>",
          "polygon": [
            [
              134.24853515625,
              82.0810546875
            ],
            [
              434.49609375,
              82.0810546875
            ],
            [
              434.49609375,
              326.2528991699219
            ],
            [
              134.24853515625,
              326.2528991699219
            ]
          ],
          "bbox": [
            134.24853515625,
            82.0810546875,
            434.49609375,
            326.2528991699219
          ],
          "children": [
            {
              "id": "/page/205/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  134.24853515625,
                  82.0810546875
                ],
                [
                  434.49609375,
                  82.0810546875
                ],
                [
                  434.49609375,
                  302.80078125
                ],
                [
                  134.24853515625,
                  302.80078125
                ]
              ],
              "bbox": [
                134.24853515625,
                82.0810546875,
                434.49609375,
                302.80078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/204/SectionHeader/11"
              },
              "images": {
                "/page/205/Figure/1": "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5jxT/wAhbQ/+vg/+y1qVl+Kf+Qtof/Xwf/Za1KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAs2/wDqJP8APauY1L/kdfDH/Xaf/wBESV09v/qJP89q5jUv+R18Mf8AXaf/ANESUAdjRRRQBzEn/JQL3/sE2/8A6Olro4P9Sv0rnJP+SgXv/YJt/wD0dLXRwf6lfpQBJRRRQAUUUUAFFFFABRRXN+M7rxHZ6bbTeHBA85uY4pUlt2l+R2ClgFYYC5LH2FAG9Ld28NxBbyzIk05IiRmwXIGTgd8Dmuc8SyeLBrWmW+gTWUVpcB1nkuLRpfKZVLBiQwwDwMetZl54L1/UZhq1zrVoniGDZHaXMFsyxRRhtzAoWJJYFlJz0NaunaJr0ur2t9r+qWdwLPe1ullbtCNzKVO/LNuGDx05oAk8I+GJPD1vdzXt81/qd/MZ7u5K7QzYAAUdQoUKMZPSujoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAZNEk8LxSKGR1KsCM5Fed2Fj4g8FahpOiWer2t9pc13sitJbcm5itu53hsbV452/wAVej1keINHfV7SE20ywXtrMs9tKy7lDjOAwGCV55AIoA0bi7t7XyvtEyRebIIo97Y3Oeij3OKmrg77wZr/AIkkWDxPrVnPp6I22GxtmhIl42yZLNyvOPqasaVf+J7bxjBo+o3um31r9meSY2lq0bQEY8veS5+982PXaaAO0ooooAKKKKACiiigAooooA5jxT/yFtD/AOvg/wDstalZfin/AJC2h/8AXwf/AGWtSgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALNv/qJP89q5jUv+R18Mf9dp/wD0RJXT2/8AqJP89q5jUv8AkdfDH/Xaf/0RJQB2NFFFAHMSf8lAvf8AsE2//o6Wujg/1K/Suck/5KBe/wDYJt//AEdLXRwf6lfpQBJRRRQAUUUUAFFFFABXN+MtD1bxBptta6XqFvZNHcxzu80TPu2MGUDDDHI59RXSVz/i3xHceGdPt7uH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XdpFLMjzyWri3jwjjzEfGCxPy9SMHpXolABWMfDGmt4hGtGI/aQd+M/L5m3Z5n+9s+X0x2rZooAKKKKAOa1Txxpula0+ky2mqTXaRiXbbWMkoKccggcjJx9aseEbee30EfaLGKyaWeaZYYwR8ryMykgkkMQQSOxJrE1nxRb6L43kludHv3t4dPKPfQWMsmCWDbdw4245PuKuy/EPQQlm1sby/F3B9oj+w2zz4TODu2g4IPBB70AdXRWR4e8S6X4osXutMmLrHI0UsbqUkjcEghlPIPHetegAooooAKKKKACiiigAooooAKKKKACmyKXjZQxUsCNy9R7ild1jRndgqqMkk8AVxv8AwtDw6ySSxLqM1rHKYjdw2UjwZDbeJANuM980AU9O8QQeCrS40/WbG/Vkunc3UNo8kciu/wAsjuBt3NkFumCegrv6878aeKrDUYbrRdNjvdRvbWaPzoba2aWBjn/Vyso4xycZByteiUAFZ2taLa65Zrb3JdTG4kiljOGjbBGR26Ej8a0aKAILKyttNsYLKziWG2gQRxRr0VRwBU9FFAGF4g8V2HhqS0jvYb6RrptkX2a1eXLf3flHU84Hsah8OXLalqmq6ounPa21wIUieeFoppSgYNvVugGRjgdTVXxrq66bcaIDpN1f4vVmdobWSbyUVWBcbejfMMA+pp6/ETw2dDu9We8eKG0l8iaKWMpMknZfLPzZODgd8GgDqqK5/RPGWka9qE+n27XEF9Aodra7haGQqf4grYJHv7iugoAK4qW/PhTxJqt1fWV9dQXwjeG4trZ53wu7KNtGFVcjbkZ5PJqxqnxH8PaTfXlpNJdStZY+1SW1s0scBPZ2UYU8d6i8R+NdEWAaXb3t1Pd31s0sP9lxGdwnGG+UHAORyaAOm0nVLbWtJtdTsmZra6jEsRZdpKnpkdquVheDBIPBejiayFjILVN1qFKiI4+7huRj3rdoAz9Y0e31uyFtcF0KOJIpYzhonHRlzxnk9fWp7CwttLsILGziEVtAgSOMdFA7VZooAKKKKACiiigAooooAKKKKACiiigDmPFP/IW0P/r4P/stalZfin/kLaH/ANfB/wDZa1KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAs2/8AqJP89q5jUv8AkdfD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"
              }
            },
            {
              "id": "/page/205/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-205-0\"></span>Figure 19.1: TurtleWorld after running the snowflake code.</p>",
              "polygon": [
                [
                  154.1953125,
                  315.369140625
                ],
                [
                  413.578125,
                  315.369140625
                ],
                [
                  413.578125,
                  326.2528991699219
                ],
                [
                  154.1953125,
                  326.2528991699219
                ]
              ],
              "bbox": [
                154.1953125,
                315.369140625,
                413.578125,
                326.2528991699219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/204/SectionHeader/11"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": null
        },
        {
          "id": "/page/205/Code/3",
          "block_type": "Code",
          "html": "<pre>self.canvas = self.ca(width=400, height=400, bg='white')\nself.col()</pre>",
          "polygon": [
            [
              128.23300170898438,
              347.66015625
            ],
            [
              421.06439208984375,
              347.66015625
            ],
            [
              421.06439208984375,
              369.8243408203125
            ],
            [
              128.23300170898438,
              369.8243408203125
            ]
          ],
          "bbox": [
            128.23300170898438,
            347.66015625,
            421.06439208984375,
            369.8243408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first widget in the column is a grid Frame, which contains four buttons arranged twoby-two:</p>",
          "polygon": [
            [
              85.9130859375,
              374.73046875
            ],
            [
              482.4033508300781,
              374.73046875
            ],
            [
              482.4033508300781,
              397.6479187011719
            ],
            [
              85.9130859375,
              397.6479187011719
            ]
          ],
          "bbox": [
            85.9130859375,
            374.73046875,
            482.4033508300781,
            397.6479187011719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Code/5",
          "block_type": "Code",
          "html": "<pre>self.gr(cols=2)\nself.bu(text='Print canvas', command=self.canvas.dump)\nself.bu(text='Quit', command=self.quit)\nself.bu(text='Make Turtle', command=self.make_turtle)\nself.bu(text='Clear', command=self.clear)\nself.endgr()</pre>",
          "polygon": [
            [
              126.703125,
              402.57421875
            ],
            [
              410.6488037109375,
              402.57421875
            ],
            [
              410.6488037109375,
              473.9493713378906
            ],
            [
              126.703125,
              473.9493713378906
            ]
          ],
          "bbox": [
            126.703125,
            402.57421875,
            410.6488037109375,
            473.9493713378906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">gr creates the grid; the argument is the number of columns. Widgets in the grid are laid out left-to-right, top-to-bottom.</p>",
          "polygon": [
            [
              85.46484375,
              478.7578125
            ],
            [
              482.404296875,
              478.7578125
            ],
            [
              482.404296875,
              501.77294921875
            ],
            [
              85.46484375,
              501.77294921875
            ]
          ],
          "bbox": [
            85.46484375,
            478.7578125,
            482.404296875,
            501.77294921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first button uses self.canvas.dump as a callback; the second uses self.quit. These are <b>bound methods</b>, which means they are associated with a particular object. When they are invoked, they are invoked on the object.</p>",
          "polygon": [
            [
              85.763671875,
              510.08203125
            ],
            [
              482.3975830078125,
              510.08203125
            ],
            [
              482.3975830078125,
              545.6129455566406
            ],
            [
              85.763671875,
              545.6129455566406
            ]
          ],
          "bbox": [
            85.763671875,
            510.08203125,
            482.3975830078125,
            545.6129455566406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next widget in the column is a row Frame that contains a Button and an Entry:</p>",
          "polygon": [
            [
              86.0625,
              554.94140625
            ],
            [
              450.333984375,
              554.94140625
            ],
            [
              450.333984375,
              565.0639495849609
            ],
            [
              86.0625,
              565.0639495849609
            ]
          ],
          "bbox": [
            86.0625,
            554.94140625,
            450.333984375,
            565.0639495849609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Code/9",
          "block_type": "Code",
          "html": "<pre>self.row([0,1], pady=30)\nself.bu(text='Run file', command=self.run_file)\nself.en_file = self.en(text='snowflake.py', width=5)\nself.endrow()</pre>",
          "polygon": [
            [
              124.91015625,
              570.4317932128906
            ],
            [
              400.1586608886719,
              570.4317932128906
            ],
            [
              400.1586608886719,
              616.9774017333984
            ],
            [
              124.91015625,
              616.9774017333984
            ]
          ],
          "bbox": [
            124.91015625,
            570.4317932128906,
            400.1586608886719,
            616.9774017333984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first argument to row is a list of weights that determines how extra space is allocated between widgets. The list [0,1] means that all extra space is allocated to the second widget, which is the Entry. If you run this code and resize the window, you will see that the Entry grows and the Button doesn't.</p>",
          "polygon": [
            [
              85.166015625,
              621.84375
            ],
            [
              482.40338134765625,
              621.84375
            ],
            [
              482.40338134765625,
              669.1899566650391
            ],
            [
              85.166015625,
              669.1899566650391
            ]
          ],
          "bbox": [
            85.166015625,
            621.84375,
            482.40338134765625,
            669.1899566650391
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/205/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The option pady \"pads\" this row in the <i>y</i> direction, adding 30 pixels of space above and below.</p>",
          "polygon": [
            [
              85.6142578125,
              677.91796875
            ],
            [
              482.40386962890625,
              677.91796875
            ],
            [
              482.40386962890625,
              700.8349533081055
            ],
            [
              85.6142578125,
              700.8349533081055
            ]
          ],
          "bbox": [
            85.6142578125,
            677.91796875,
            482.40386962890625,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/204/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/206/Page/196",
      "block_type": "Page",
      "html": "<content-ref src='/page/206/PageHeader/0'></content-ref><content-ref src='/page/206/PageHeader/17'></content-ref><content-ref src='/page/206/Text/1'></content-ref><content-ref src='/page/206/ListGroup/195'></content-ref><content-ref src='/page/206/Text/4'></content-ref><content-ref src='/page/206/Code/5'></content-ref><content-ref src='/page/206/Text/6'></content-ref><content-ref src='/page/206/Code/7'></content-ref><content-ref src='/page/206/Code/8'></content-ref><content-ref src='/page/206/Text/9'></content-ref><content-ref src='/page/206/Code/10'></content-ref><content-ref src='/page/206/Text/11'></content-ref><content-ref src='/page/206/Text/12'></content-ref><content-ref src='/page/206/SectionHeader/13'></content-ref><content-ref src='/page/206/Text/14'></content-ref><content-ref src='/page/206/Text/15'></content-ref><content-ref src='/page/206/Code/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/206/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.3466796875,
              60.8115234375
            ],
            [
              525.6033935546875,
              60.8115234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.3466796875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.3466796875,
            60.8115234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.85986328125
            ],
            [
              525.33984375,
              60.85986328125
            ],
            [
              525.33984375,
              69.85107421875
            ],
            [
              509.80078125,
              69.85107421875
            ]
          ],
          "bbox": [
            509.80078125,
            60.85986328125,
            525.33984375,
            69.85107421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">endrow ends this row of widgets, so subsequent widgets are packed in the column Frame. Gui.py keeps a stack of Frames:</p>",
          "polygon": [
            [
              126.8525390625,
              88.41357421875
            ],
            [
              525.59814453125,
              88.41357421875
            ],
            [
              525.59814453125,
              110.99188232421875
            ],
            [
              126.8525390625,
              110.99188232421875
            ]
          ],
          "bbox": [
            126.8525390625,
            88.41357421875,
            525.59814453125,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/ListGroup/195",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/206/ListItem/2'></content-ref><content-ref src='/page/206/ListItem/3'></content-ref></ul></p>",
          "polygon": [
            [
              141.4951171875,
              125.7802734375
            ],
            [
              525.9375,
              125.7802734375
            ],
            [
              525.9375,
              181.44287109375
            ],
            [
              141.4951171875,
              181.44287109375
            ]
          ],
          "bbox": [
            141.4951171875,
            125.7802734375,
            525.9375,
            181.44287109375
          ],
          "children": [
            {
              "id": "/page/206/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> When you use row, col or gr to create a Frame, it goes on top of the stack and becomes the current Frame.</li>",
              "polygon": [
                [
                  142.83984375,
                  125.7802734375
                ],
                [
                  525.9375,
                  125.7802734375
                ],
                [
                  525.9375,
                  148.2398681640625
                ],
                [
                  142.83984375,
                  148.2398681640625
                ]
              ],
              "bbox": [
                142.83984375,
                125.7802734375,
                525.9375,
                148.2398681640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/204/SectionHeader/11"
              },
              "images": {}
            },
            {
              "id": "/page/206/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> When you use endrow, endcol or endgr to close a Frame, it gets popped off the stack and the previous Frame on the stack becomes the current Frame.</li>",
              "polygon": [
                [
                  141.4951171875,
                  158.94140625
                ],
                [
                  525.598388671875,
                  158.94140625
                ],
                [
                  525.598388671875,
                  181.44287109375
                ],
                [
                  141.4951171875,
                  181.44287109375
                ]
              ],
              "bbox": [
                141.4951171875,
                158.94140625,
                525.598388671875,
                181.44287109375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/204/SectionHeader/11"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": null
        },
        {
          "id": "/page/206/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The method run_file reads the contents of the Entry, uses it as a filename, reads the contents and passes it to run_code. self.inter is an Interpreter object that knows how to take a string and execute it as Python code.</p>",
          "polygon": [
            [
              128.0478515625,
              196.259765625
            ],
            [
              525.9375,
              196.259765625
            ],
            [
              525.9375,
              230.88385009765625
            ],
            [
              128.0478515625,
              230.88385009765625
            ]
          ],
          "bbox": [
            128.0478515625,
            196.259765625,
            525.9375,
            230.88385009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Code/5",
          "block_type": "Code",
          "html": "<pre>def run_file(self):\n    filename = self.en_file.get()\n    fp = open(filename)\n    source = fp.read()\n    self.inter.run_code(source, filename)</pre>",
          "polygon": [
            [
              150.5159912109375,
              237.43267822265625
            ],
            [
              364.9763488769531,
              237.43267822265625
            ],
            [
              364.9763488769531,
              296.2265625
            ],
            [
              150.5159912109375,
              296.2265625
            ]
          ],
          "bbox": [
            150.5159912109375,
            237.43267822265625,
            364.9763488769531,
            296.2265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The last two widgets are a Text widget and a Button:</p>",
          "polygon": [
            [
              128.72021484375,
              302.607421875
            ],
            [
              360.47320556640625,
              302.607421875
            ],
            [
              360.47320556640625,
              312.9828796386719
            ],
            [
              128.72021484375,
              312.9828796386719
            ]
          ],
          "bbox": [
            128.72021484375,
            302.607421875,
            360.47320556640625,
            312.9828796386719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Code/7",
          "block_type": "Code",
          "html": "<pre>self.te_code = self.te(width=25, height=10)\nself.te_code.insert(END, 'world.clear()\\n')\nself.te_code.insert(END, 'bob = Turtle(world)\\n')</pre>",
          "polygon": [
            [
              170.33203125,
              319.53173828125
            ],
            [
              428.51953125,
              319.53173828125
            ],
            [
              428.51953125,
              362.7421875
            ],
            [
              170.33203125,
              362.7421875
            ]
          ],
          "bbox": [
            170.33203125,
            319.53173828125,
            428.51953125,
            362.7421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Code/8",
          "block_type": "Code",
          "html": "<pre>self.bu(text='Run code', command=self.run_text)</pre>",
          "polygon": [
            [
              169.734375,
              368.3087463378906
            ],
            [
              417.2407531738281,
              368.3087463378906
            ],
            [
              417.2407531738281,
              378.2713317871094
            ],
            [
              169.734375,
              378.2713317871094
            ]
          ],
          "bbox": [
            169.734375,
            368.3087463378906,
            417.2407531738281,
            378.2713317871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">run_text is similar to run_file except that it takes the code from the Text widget instead of from a file:</p>",
          "polygon": [
            [
              128.197265625,
              384.9697570800781
            ],
            [
              525.595458984375,
              384.9697570800781
            ],
            [
              525.595458984375,
              407.27691650390625
            ],
            [
              128.197265625,
              407.27691650390625
            ]
          ],
          "bbox": [
            128.197265625,
            384.9697570800781,
            525.595458984375,
            407.27691650390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Code/10",
          "block_type": "Code",
          "html": "<pre>def run_text(self):\n    source = self.te_code.get(1.0, END)\n    self.inter.run_code(source, '&lt;user-provided code&gt;')</pre>",
          "polygon": [
            [
              150.5159912109375,
              413.7890625
            ],
            [
              438.11834716796875,
              413.7890625
            ],
            [
              438.11834716796875,
              448.1763610839844
            ],
            [
              150.5159912109375,
              448.1763610839844
            ]
          ],
          "bbox": [
            150.5159912109375,
            413.7890625,
            438.11834716796875,
            448.1763610839844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Unfortunately, the details of widget layout are different in other languages, and in different Python modules. Tkinter alone provides three different mechanisms for arranging widgets. These mechanisms are called <b>geometry managers</b>. The one I demonstrated in this section is the \"grid\" geometry manager; the others are called \"pack\" and \"place\".</p>",
          "polygon": [
            [
              128.794921875,
              454.39453125
            ],
            [
              525.6044311523438,
              454.39453125
            ],
            [
              525.6044311523438,
              501.5699462890625
            ],
            [
              128.794921875,
              501.5699462890625
            ]
          ],
          "bbox": [
            128.794921875,
            454.39453125,
            525.6044311523438,
            501.5699462890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Fortunately, most of the concepts in this section apply to other GUI modules and other languages.</p>",
          "polygon": [
            [
              128.3466796875,
              512.2393493652344
            ],
            [
              525.6034545898438,
              512.2393493652344
            ],
            [
              525.6034545898438,
              534.83203125
            ],
            [
              128.3466796875,
              534.83203125
            ]
          ],
          "bbox": [
            128.3466796875,
            512.2393493652344,
            525.6034545898438,
            534.83203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/204/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/206/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-206-0\"></span><b>19.7 Menus and Callables</b></h4>",
          "polygon": [
            [
              128.27197265625,
              565.2227935791016
            ],
            [
              308.091796875,
              565.2227935791016
            ],
            [
              308.091796875,
              579.5689849853516
            ],
            [
              128.27197265625,
              579.5689849853516
            ]
          ],
          "bbox": [
            128.27197265625,
            565.2227935791016,
            308.091796875,
            579.5689849853516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/206/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A Menubutton is a widget that looks like a button, but when pressed it pops up a menu. After the user selects an item, the menu disappears.</p>",
          "polygon": [
            [
              128.0478515625,
              592.453125
            ],
            [
              525.6033325195312,
              592.453125
            ],
            [
              525.6033325195312,
              614.7649383544922
            ],
            [
              128.0478515625,
              614.7649383544922
            ]
          ],
          "bbox": [
            128.0478515625,
            592.453125,
            525.6033325195312,
            614.7649383544922
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/206/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is code that creates a color selection Menubutton (you can download it from <a href=\"http://thinkpython.com/code/menubutton_demo.py\">http:</a> <a href=\"http://thinkpython.com/code/menubutton_demo.py\">//thinkpython.com/code/menubutton_demo.py</a>):</p>",
          "polygon": [
            [
              127.1513671875,
              624.55078125
            ],
            [
              525.605712890625,
              624.55078125
            ],
            [
              525.605712890625,
              647.5909423828125
            ],
            [
              127.1513671875,
              647.5909423828125
            ]
          ],
          "bbox": [
            127.1513671875,
            624.55078125,
            525.605712890625,
            647.5909423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/206/Code/16",
          "block_type": "Code",
          "html": "<pre>g = Gui()\ng.la('Select a color:')\ncolors = ['red', 'green', 'blue']\nmb = g.mb(text=colors[0])</pre>",
          "polygon": [
            [
              128.12255859375,
              653.16796875
            ],
            [
              302.162353515625,
              653.16796875
            ],
            [
              302.162353515625,
              700.6853790283203
            ],
            [
              128.12255859375,
              700.6853790283203
            ]
          ],
          "bbox": [
            128.12255859375,
            653.16796875,
            302.162353515625,
            700.6853790283203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/206/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/207/Page/195",
      "block_type": "Page",
      "html": "<content-ref src='/page/207/PageHeader/0'></content-ref><content-ref src='/page/207/PageHeader/17'></content-ref><content-ref src='/page/207/Text/1'></content-ref><content-ref src='/page/207/Code/2'></content-ref><content-ref src='/page/207/Text/3'></content-ref><content-ref src='/page/207/Text/4'></content-ref><content-ref src='/page/207/Text/5'></content-ref><content-ref src='/page/207/Text/6'></content-ref><content-ref src='/page/207/Code/7'></content-ref><content-ref src='/page/207/Text/8'></content-ref><content-ref src='/page/207/SectionHeader/9'></content-ref><content-ref src='/page/207/Text/10'></content-ref><content-ref src='/page/207/Text/11'></content-ref><content-ref src='/page/207/Text/12'></content-ref><content-ref src='/page/207/Code/13'></content-ref><content-ref src='/page/207/Text/14'></content-ref><content-ref src='/page/207/Text/15'></content-ref><content-ref src='/page/207/Code/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/207/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.6181640625
            ],
            [
              482.4034118652344,
              60.6181640625
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.6181640625,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.6142578125,
              60.56982421875
            ],
            [
              102.6474609375,
              60.56982421875
            ],
            [
              102.6474609375,
              69.75439453125
            ],
            [
              85.6142578125,
              69.75439453125
            ]
          ],
          "bbox": [
            85.6142578125,
            60.56982421875,
            102.6474609375,
            69.75439453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">mb creates the Menubutton. Initially, the text on the button is the name of the default color. The following loop creates one menu item for each color:</p>",
          "polygon": [
            [
              85.166015625,
              88.6552734375
            ],
            [
              482.40081787109375,
              88.6552734375
            ],
            [
              482.40081787109375,
              110.99188232421875
            ],
            [
              85.166015625,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.166015625,
            88.6552734375,
            482.40081787109375,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Code/2",
          "block_type": "Code",
          "html": "<pre>for color in colors:\n    g.mi(mb, text=color, command=Callable(set_color, color))</pre>",
          "polygon": [
            [
              85.3154296875,
              117.585693359375
            ],
            [
              400.2363586425781,
              117.585693359375
            ],
            [
              400.2363586425781,
              141.92578125
            ],
            [
              85.3154296875,
              141.92578125
            ]
          ],
          "bbox": [
            85.3154296875,
            117.585693359375,
            400.2363586425781,
            141.92578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first argument of mi is the Menubutton these items are associated with.</p>",
          "polygon": [
            [
              85.0166015625,
              145.986328125
            ],
            [
              416.99591064453125,
              145.986328125
            ],
            [
              416.99591064453125,
              156.597900390625
            ],
            [
              85.0166015625,
              156.597900390625
            ]
          ],
          "bbox": [
            85.0166015625,
            145.986328125,
            416.99591064453125,
            156.597900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The command option is a Callable object, which is something new. So far we have seen functions and bound methods used as callbacks, which works fine if you don't have to pass any arguments to the function. Otherwise you have to construct a Callable object that contains a function, like set_color, and its arguments, like color.</p>",
          "polygon": [
            [
              85.3154296875,
              166.869140625
            ],
            [
              482.4034118652344,
              166.869140625
            ],
            [
              482.4034118652344,
              213.85797119140625
            ],
            [
              85.3154296875,
              213.85797119140625
            ]
          ],
          "bbox": [
            85.3154296875,
            166.869140625,
            482.4034118652344,
            213.85797119140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The Callable object stores a reference to the function and the arguments as attributes. Later, when the user clicks on a menu item, the callback calls the function and passes the stored arguments.</p>",
          "polygon": [
            [
              85.6142578125,
              224.490234375
            ],
            [
              482.90625,
              224.490234375
            ],
            [
              482.90625,
              258.9239501953125
            ],
            [
              85.6142578125,
              258.9239501953125
            ]
          ],
          "bbox": [
            85.6142578125,
            224.490234375,
            482.90625,
            258.9239501953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is what set_color might look like:</p>",
          "polygon": [
            [
              85.6142578125,
              268.76953125
            ],
            [
              263.6532897949219,
              268.76953125
            ],
            [
              263.6532897949219,
              279.6009521484375
            ],
            [
              85.6142578125,
              279.6009521484375
            ]
          ],
          "bbox": [
            85.6142578125,
            268.76953125,
            263.6532897949219,
            279.6009521484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Code/7",
          "block_type": "Code",
          "html": "<pre>def set_color(color):\n    mb.config(text=color)\n    print color</pre>",
          "polygon": [
            [
              85.763671875,
              286.19476318359375
            ],
            [
              217.16360473632812,
              286.19476318359375
            ],
            [
              217.16360473632812,
              321.169921875
            ],
            [
              85.763671875,
              321.169921875
            ]
          ],
          "bbox": [
            85.763671875,
            286.19476318359375,
            217.16360473632812,
            321.169921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When the user selects a menu item and set_color is called, it configures the Menubutton to display the newly-selected color. It also print the color; if you try this example, you can confirm that set_color is called when you select an item (and <i>not</i> called when you create the Callable object).</p>",
          "polygon": [
            [
              85.3154296875,
              326.77734375
            ],
            [
              482.4033203125,
              326.77734375
            ],
            [
              482.4033203125,
              373.9839172363281
            ],
            [
              85.3154296875,
              373.9839172363281
            ]
          ],
          "bbox": [
            85.3154296875,
            326.77734375,
            482.4033203125,
            373.9839172363281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/206/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/207/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-207-0\"></span><b>19.8 Binding</b></h4>",
          "polygon": [
            [
              85.763671875,
              404.94476318359375
            ],
            [
              179.89453125,
              404.94476318359375
            ],
            [
              179.89453125,
              419.2909851074219
            ],
            [
              85.763671875,
              419.2909851074219
            ]
          ],
          "bbox": [
            85.763671875,
            404.94476318359375,
            179.89453125,
            419.2909851074219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>binding</b> is an association between a widget, an event and a callback: when an event (like a button press) happens on a widget, the callback is invoked.</p>",
          "polygon": [
            [
              85.6142578125,
              431.96484375
            ],
            [
              482.4049072265625,
              431.96484375
            ],
            [
              482.4049072265625,
              454.5489196777344
            ],
            [
              85.6142578125,
              454.5489196777344
            ]
          ],
          "bbox": [
            85.6142578125,
            431.96484375,
            482.4049072265625,
            454.5489196777344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Many widgets have default bindings. For example, when you press a button, the default binding changes the relief of the button to make it look depressed. When you release the button, the binding restores the appearance of the button and invokes the callback specified with the command option.</p>",
          "polygon": [
            [
              85.46484375,
              464.8359375
            ],
            [
              482.4034423828125,
              464.8359375
            ],
            [
              482.4034423828125,
              511.8089294433594
            ],
            [
              85.46484375,
              511.8089294433594
            ]
          ],
          "bbox": [
            85.46484375,
            464.8359375,
            482.4034423828125,
            511.8089294433594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can use the bind method to override these default bindings or to add new ones. For example, this code creates a binding for a canvas (you can download the code in this section from <a href=\"http://thinkpython.com/code/draggable_demo.py\">http://thinkpython.com/code/draggable_demo.py</a>):</p>",
          "polygon": [
            [
              85.763671875,
              521.68359375
            ],
            [
              482.40423583984375,
              521.68359375
            ],
            [
              482.40423583984375,
              556.8749389648438
            ],
            [
              85.763671875,
              556.8749389648438
            ]
          ],
          "bbox": [
            85.763671875,
            521.68359375,
            482.40423583984375,
            556.8749389648438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/207/Code/13",
          "block_type": "Code",
          "html": "<pre>ca.bind('&lt;ButtonPress-1&gt;', make_circle)</pre>",
          "polygon": [
            [
              86.28662109375,
              563.44921875
            ],
            [
              290.35308837890625,
              563.44921875
            ],
            [
              290.35308837890625,
              573.4313812255859
            ],
            [
              86.28662109375,
              573.4313812255859
            ]
          ],
          "bbox": [
            86.28662109375,
            563.44921875,
            290.35308837890625,
            573.4313812255859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first argument is an event string; this event is triggered when the user presses the left mouse button. Other mouse events include ButtonMotion, ButtonRelease and Double-Button.</p>",
          "polygon": [
            [
              85.763671875,
              580.078125
            ],
            [
              482.607421875,
              580.078125
            ],
            [
              482.607421875,
              614.8828125
            ],
            [
              85.763671875,
              614.8828125
            ]
          ],
          "bbox": [
            85.763671875,
            580.078125,
            482.607421875,
            614.8828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/207/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The second argument is an event handler. An event handler is a function or bound method, like a callback, but an important difference is that an event handler takes an Event object as a parameter. Here is an example:</p>",
          "polygon": [
            [
              85.763671875,
              624.55078125
            ],
            [
              482.607421875,
              624.55078125
            ],
            [
              482.607421875,
              659.7409362792969
            ],
            [
              85.763671875,
              659.7409362792969
            ]
          ],
          "bbox": [
            85.763671875,
            624.55078125,
            482.607421875,
            659.7409362792969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/207/Code/16",
          "block_type": "Code",
          "html": "<pre>def make_circle(event):\n    pos = ca.canvas_coords([event.x, event.y])\n    item = ca.circle(pos, 5, fill='red')</pre>",
          "polygon": [
            [
              86.39995574951172,
              666.3347778320312
            ],
            [
              328.412109375,
              666.3347778320312
            ],
            [
              328.412109375,
              700.6853790283203
            ],
            [
              86.39995574951172,
              700.6853790283203
            ]
          ],
          "bbox": [
            86.39995574951172,
            666.3347778320312,
            328.412109375,
            700.6853790283203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/207/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/208/Page/187",
      "block_type": "Page",
      "html": "<content-ref src='/page/208/PageHeader/0'></content-ref><content-ref src='/page/208/PageHeader/16'></content-ref><content-ref src='/page/208/Text/1'></content-ref><content-ref src='/page/208/Text/2'></content-ref><content-ref src='/page/208/Code/3'></content-ref><content-ref src='/page/208/Text/4'></content-ref><content-ref src='/page/208/Code/5'></content-ref><content-ref src='/page/208/Text/6'></content-ref><content-ref src='/page/208/Text/7'></content-ref><content-ref src='/page/208/Code/8'></content-ref><content-ref src='/page/208/Code/9'></content-ref><content-ref src='/page/208/Text/10'></content-ref><content-ref src='/page/208/Text/11'></content-ref><content-ref src='/page/208/Code/12'></content-ref><content-ref src='/page/208/Text/13'></content-ref><content-ref src='/page/208/Text/14'></content-ref><content-ref src='/page/208/Code/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/208/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.31787109375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.31787109375,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.31787109375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.501953125,
              60.76318359375
            ],
            [
              525.638671875,
              60.76318359375
            ],
            [
              525.638671875,
              69.94775390625
            ],
            [
              509.501953125,
              69.94775390625
            ]
          ],
          "bbox": [
            509.501953125,
            60.76318359375,
            525.638671875,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The Event object contains information about the type of event and details like the coordinates of the mouse pointer. In this example the information we need is the location of the mouse click. These values are in \"pixel coordinates,\" which are defined by the underlying graphical system. The method canvas_coords translates them to \"Canvas coordinates,\" which are compatible with Canvas methods like circle.</p>",
          "polygon": [
            [
              129.392578125,
              88.0751953125
            ],
            [
              525.638671875,
              88.0751953125
            ],
            [
              525.638671875,
              147.57489013671875
            ],
            [
              129.392578125,
              147.57489013671875
            ]
          ],
          "bbox": [
            129.392578125,
            88.0751953125,
            525.638671875,
            147.57489013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For Entry widgets, it is common to bind the &lt;Return&gt; event, which is triggered when the user presses the Return or Enter key. For example, the following code creates a Button and an Entry.</p>",
          "polygon": [
            [
              129.09375,
              157.201171875
            ],
            [
              525.6021118164062,
              157.201171875
            ],
            [
              525.6021118164062,
              191.94488525390625
            ],
            [
              129.09375,
              191.94488525390625
            ]
          ],
          "bbox": [
            129.09375,
            157.201171875,
            525.6021118164062,
            191.94488525390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Code/3",
          "block_type": "Code",
          "html": "<pre>bu = g.bu('Make text item:', make_text)\nen = g.en()\nen.bind('&lt;Return&gt;', make_text)</pre>",
          "polygon": [
            [
              129.59999084472656,
              197.806640625
            ],
            [
              333.5504150390625,
              197.806640625
            ],
            [
              333.5504150390625,
              232.19427490234375
            ],
            [
              129.59999084472656,
              232.19427490234375
            ]
          ],
          "bbox": [
            129.59999084472656,
            197.806640625,
            333.5504150390625,
            232.19427490234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">make_text is called when the Button is pressed or when the user hits Return while typing in the Entry. To make this work, we need a function that can be called as a command (with no arguments) or as an event handler (with an Event as an argument):</p>",
          "polygon": [
            [
              128.9443359375,
              237.4453125
            ],
            [
              525.6033935546875,
              237.4453125
            ],
            [
              525.6033935546875,
              272.74188232421875
            ],
            [
              128.9443359375,
              272.74188232421875
            ]
          ],
          "bbox": [
            128.9443359375,
            237.4453125,
            525.6033935546875,
            272.74188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Code/5",
          "block_type": "Code",
          "html": "<pre>def make_text(event=None):\n    text = en.get()\n    item = ca.text([0,0], text)</pre>",
          "polygon": [
            [
              129.60003662109375,
              277.6640625
            ],
            [
              291.7458190917969,
              277.6640625
            ],
            [
              291.7458190917969,
              312.9913024902344
            ],
            [
              129.60003662109375,
              312.9913024902344
            ]
          ],
          "bbox": [
            129.60003662109375,
            277.6640625,
            291.7458190917969,
            312.9913024902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">make_text gets the contents of the Entry and displays it as a Text item in the Canvas.</p>",
          "polygon": [
            [
              128.9443359375,
              318.462890625
            ],
            [
              502.04083251953125,
              318.462890625
            ],
            [
              502.04083251953125,
              329.1498718261719
            ],
            [
              128.9443359375,
              329.1498718261719
            ]
          ],
          "bbox": [
            128.9443359375,
            318.462890625,
            502.04083251953125,
            329.1498718261719
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It is also possible to create bindings for Canvas items. The following is a class definition for Draggable, which is a child class of Item that provides bindings that implement dragand-drop capability.</p>",
          "polygon": [
            [
              128.6455078125,
              338.765625
            ],
            [
              525.6033325195312,
              338.765625
            ],
            [
              525.6033325195312,
              373.5198669433594
            ],
            [
              128.6455078125,
              373.5198669433594
            ]
          ],
          "bbox": [
            128.6455078125,
            338.765625,
            525.6033325195312,
            373.5198669433594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Code/8",
          "block_type": "Code",
          "html": "<pre>class Draggable(Item):</pre>",
          "polygon": [
            [
              129.46728515625,
              379.417724609375
            ],
            [
              253.705078125,
              379.417724609375
            ],
            [
              253.705078125,
              395.033203125
            ],
            [
              129.46728515625,
              395.033203125
            ]
          ],
          "bbox": [
            129.46728515625,
            379.417724609375,
            253.705078125,
            395.033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Code/9",
          "block_type": "Code",
          "html": "<pre>def __init__(self, item):\n    self.canvas = item.canvas\n    self.tag = item.tag\n    self.bind('&lt;Button-3&gt;', self.select)\n    self.bind('&lt;B3-Motion&gt;', self.drag)\n    self.bind('&lt;Release-3&gt;', self.drop)</pre>",
          "polygon": [
            [
              150.51602172851562,
              403.8067321777344
            ],
            [
              359.7080993652344,
              403.8067321777344
            ],
            [
              359.7080993652344,
              474.7403259277344
            ],
            [
              150.51602172851562,
              474.7403259277344
            ]
          ],
          "bbox": [
            150.51602172851562,
            403.8067321777344,
            359.7080993652344,
            474.7403259277344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The init method takes an Item as a parameter. It copies the attributes of the Item and then creates bindings for three events: a button press, button motion, and button release.</p>",
          "polygon": [
            [
              128.794921875,
              480.3046875
            ],
            [
              525.603271484375,
              480.3046875
            ],
            [
              525.603271484375,
              503.0939025878906
            ],
            [
              128.794921875,
              503.0939025878906
            ]
          ],
          "bbox": [
            128.794921875,
            480.3046875,
            525.603271484375,
            503.0939025878906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The event handler select stores the coordinates of the current event and the original color of the item, then changes the color to yellow:</p>",
          "polygon": [
            [
              128.197265625,
              512.7890625
            ],
            [
              525.5986938476562,
              512.7890625
            ],
            [
              525.5986938476562,
              535.2698974609375
            ],
            [
              128.197265625,
              535.2698974609375
            ]
          ],
          "bbox": [
            128.197265625,
            512.7890625,
            525.5986938476562,
            535.2698974609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Code/12",
          "block_type": "Code",
          "html": "<pre>def select(self, event):\n    self.dragx = event.x\n    self.dragy = event.y\n    self.fill = self.cget('fill')\n    self.config(fill='yellow')</pre>",
          "polygon": [
            [
              150.5160369873047,
              541.1677398681641
            ],
            [
              323.07843017578125,
              541.1677398681641
            ],
            [
              323.07843017578125,
              612.5625
            ],
            [
              150.5160369873047,
              612.5625
            ]
          ],
          "bbox": [
            150.5160369873047,
            541.1677398681641,
            323.07843017578125,
            612.5625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">cget stands for \"get configuration;\" it takes the name of an option as a string and returns the current value of that option.</p>",
          "polygon": [
            [
              128.49609375,
              617.9765625
            ],
            [
              525.5963134765625,
              617.9765625
            ],
            [
              525.5963134765625,
              640.4559020996094
            ],
            [
              128.49609375,
              640.4559020996094
            ]
          ],
          "bbox": [
            128.49609375,
            617.9765625,
            525.5963134765625,
            640.4559020996094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">drag computes how far the object has moved relative to the starting place, updates the stored coordinates, and then moves the item.</p>",
          "polygon": [
            [
              127.4501953125,
              650.07421875
            ],
            [
              525.6035766601562,
              650.07421875
            ],
            [
              525.6035766601562,
              672.6309127807617
            ],
            [
              127.4501953125,
              672.6309127807617
            ]
          ],
          "bbox": [
            127.4501953125,
            650.07421875,
            525.6035766601562,
            672.6309127807617
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/208/Code/15",
          "block_type": "Code",
          "html": "<pre>def drag(self, event):\n    dx = event.x - self.dragx</pre>",
          "polygon": [
            [
              150.5160675048828,
              678.5287475585938
            ],
            [
              302.1921691894531,
              678.5287475585938
            ],
            [
              302.1921691894531,
              700.734375
            ],
            [
              150.5160675048828,
              700.734375
            ]
          ],
          "bbox": [
            150.5160675048828,
            678.5287475585938,
            302.1921691894531,
            700.734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/207/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/209/Page/167",
      "block_type": "Page",
      "html": "<content-ref src='/page/209/PageHeader/0'></content-ref><content-ref src='/page/209/PageHeader/16'></content-ref><content-ref src='/page/209/Code/1'></content-ref><content-ref src='/page/209/Text/2'></content-ref><content-ref src='/page/209/Text/3'></content-ref><content-ref src='/page/209/Code/4'></content-ref><content-ref src='/page/209/Text/5'></content-ref><content-ref src='/page/209/Code/6'></content-ref><content-ref src='/page/209/Text/7'></content-ref><content-ref src='/page/209/SectionHeader/8'></content-ref><content-ref src='/page/209/Text/9'></content-ref><content-ref src='/page/209/Text/10'></content-ref><content-ref src='/page/209/Code/11'></content-ref><content-ref src='/page/209/Text/12'></content-ref><content-ref src='/page/209/Text/13'></content-ref><content-ref src='/page/209/Text/14'></content-ref><content-ref src='/page/209/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/209/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.56982421875
            ],
            [
              482.4034118652344,
              60.56982421875
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.56982421875,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              61.0048828125
            ],
            [
              101.82568359375,
              61.0048828125
            ],
            [
              101.82568359375,
              70.189453125
            ],
            [
              85.68896484375,
              70.189453125
            ]
          ],
          "bbox": [
            85.68896484375,
            61.0048828125,
            101.82568359375,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/Code/1",
          "block_type": "Code",
          "html": "<pre>dy = event.y - self.dragy\nself.dragx = event.x\nself.dragy = event.y\nself.move(dx, dy)</pre>",
          "polygon": [
            [
              125.58251953125,
              86.57666015625
            ],
            [
              258.9920959472656,
              86.57666015625
            ],
            [
              258.9920959472656,
              159.62030029296875
            ],
            [
              125.58251953125,
              159.62030029296875
            ]
          ],
          "bbox": [
            125.58251953125,
            86.57666015625,
            258.9920959472656,
            159.62030029296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This computation is done in pixel coordinates; there is no need to convert to Canvas coordinates.</p>",
          "polygon": [
            [
              85.763671875,
              164.2587890625
            ],
            [
              482.4033508300781,
              164.2587890625
            ],
            [
              482.4033508300781,
              188.18792724609375
            ],
            [
              85.763671875,
              188.18792724609375
            ]
          ],
          "bbox": [
            85.763671875,
            164.2587890625,
            482.4033508300781,
            188.18792724609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Finally, drop restores the original color of the item:</p>",
          "polygon": [
            [
              85.53955078125,
              197.419921875
            ],
            [
              308.5013427734375,
              197.419921875
            ],
            [
              308.5013427734375,
              208.3829345703125
            ],
            [
              85.53955078125,
              208.3829345703125
            ]
          ],
          "bbox": [
            85.53955078125,
            197.419921875,
            308.5013427734375,
            208.3829345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/Code/4",
          "block_type": "Code",
          "html": "<pre>def drop(self, event):\n    self.config(fill=self.fill)</pre>",
          "polygon": [
            [
              107.31600952148438,
              214.4937744140625
            ],
            [
              269.4627990722656,
              214.4937744140625
            ],
            [
              269.4627990722656,
              236.6513671875
            ],
            [
              107.31600952148438,
              236.6513671875
            ]
          ],
          "bbox": [
            107.31600952148438,
            214.4937744140625,
            269.4627990722656,
            236.6513671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can use the Draggable class to add drag-and-drop capability to an existing item. For example, here is a modified version of make_circle that uses circle to create an Item and Draggable to make it draggable:</p>",
          "polygon": [
            [
              85.46484375,
              242.47265625
            ],
            [
              482.4048767089844,
              242.47265625
            ],
            [
              482.4048767089844,
              277.41302490234375
            ],
            [
              85.46484375,
              277.41302490234375
            ]
          ],
          "bbox": [
            85.46484375,
            242.47265625,
            482.4048767089844,
            277.41302490234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/Code/6",
          "block_type": "Code",
          "html": "<pre>def make_circle(event):\n    pos = ca.canvas_coords([event.x, event.y])\n    item = ca.circle(pos, 5, fill='red')\n    item = Draggable(item)</pre>",
          "polygon": [
            [
              86.39999389648438,
              283.52484130859375
            ],
            [
              327.814453125,
              283.52484130859375
            ],
            [
              327.814453125,
              330.0704345703125
            ],
            [
              86.39999389648438,
              330.0704345703125
            ]
          ],
          "bbox": [
            86.39999389648438,
            283.52484130859375,
            327.814453125,
            330.0704345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example demonstrates one of the benefits of inheritance: you can modify the capabilities of a parent class without modifying its definition. This is particularly useful if you want to change behavior defined in a module you did not write.</p>",
          "polygon": [
            [
              85.46484375,
              335.671875
            ],
            [
              482.4033508300781,
              335.671875
            ],
            [
              482.4033508300781,
              370.8320007324219
            ],
            [
              85.46484375,
              370.8320007324219
            ]
          ],
          "bbox": [
            85.46484375,
            335.671875,
            482.4033508300781,
            370.8320007324219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/207/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/209/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-209-0\"></span><b>19.9 Debugging</b></h4>",
          "polygon": [
            [
              85.6142578125,
              400.25390625
            ],
            [
              200.6630859375,
              400.25390625
            ],
            [
              200.6630859375,
              414.94921875
            ],
            [
              85.6142578125,
              414.94921875
            ]
          ],
          "bbox": [
            85.6142578125,
            400.25390625,
            200.6630859375,
            414.94921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the challenges of GUI programming is keeping track of which things happen while the GUI is being built and which things happen later in response to user events.</p>",
          "polygon": [
            [
              85.6142578125,
              426.55078125
            ],
            [
              482.40325927734375,
              426.55078125
            ],
            [
              482.40325927734375,
              449.2760009765625
            ],
            [
              85.6142578125,
              449.2760009765625
            ]
          ],
          "bbox": [
            85.6142578125,
            426.55078125,
            482.40325927734375,
            449.2760009765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, when you are setting up a callback, it is a common error to call the function rather than passing a reference to it:</p>",
          "polygon": [
            [
              85.46484375,
              459.03515625
            ],
            [
              482.4033203125,
              459.03515625
            ],
            [
              482.4033203125,
              481.666015625
            ],
            [
              85.46484375,
              481.666015625
            ]
          ],
          "bbox": [
            85.46484375,
            459.03515625,
            482.4033203125,
            481.666015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/209/Code/11",
          "block_type": "Code",
          "html": "<pre>def the_callback():\n    print 'Called.'</pre>",
          "polygon": [
            [
              85.166015625,
              487.7778625488281
            ],
            [
              254.6015625,
              487.7778625488281
            ],
            [
              254.6015625,
              512.015625
            ],
            [
              85.166015625,
              512.015625
            ]
          ],
          "bbox": [
            85.166015625,
            487.7778625488281,
            254.6015625,
            512.015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">g.bu(text='This is wrong!', command=the_callback())</p>",
          "polygon": [
            [
              85.46484375,
              524.3608703613281
            ],
            [
              353.1261291503906,
              524.3608703613281
            ],
            [
              353.1261291503906,
              534.3234558105469
            ],
            [
              85.46484375,
              534.3234558105469
            ]
          ],
          "bbox": [
            85.46484375,
            524.3608703613281,
            353.1261291503906,
            534.3234558105469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you run this code, you will see that it calls the_callback immediately, and <i>then</i> creates the button. When you press the button, it does nothing because the return value from the_callback is None. Usually you do not want to invoke a callback while you are setting up the GUI; it should only be invoked later in response to a user event.</p>",
          "polygon": [
            [
              85.166015625,
              540.5607299804688
            ],
            [
              482.4034729003906,
              540.5607299804688
            ],
            [
              482.4034729003906,
              587.2790374755859
            ],
            [
              85.166015625,
              587.2790374755859
            ]
          ],
          "bbox": [
            85.166015625,
            540.5607299804688,
            482.4034729003906,
            587.2790374755859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another challenge of GUI programming is that you don't have control of the flow of execution. Which parts of the program execute and their order are determined by user actions. That means that you have to design your program to work correctly for any possible sequence of events.</p>",
          "polygon": [
            [
              85.46484375,
              597.09375
            ],
            [
              482.4035339355469,
              597.09375
            ],
            [
              482.4035339355469,
              644.0570373535156
            ],
            [
              85.46484375,
              644.0570373535156
            ]
          ],
          "bbox": [
            85.46484375,
            597.09375,
            482.4035339355469,
            644.0570373535156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/209/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example, the GUI in Exercise <a href=\"#page-204-1\">19.3</a> has two widgets: one creates a Circle item and the other changes the color of the Circle. If the user creates the circle and then changes its color, there's no problem. But what if the user changes the color of a circle that doesn't exist yet? Or creates more than one circle?</p>",
          "polygon": [
            [
              85.46484375,
              654.2894439697266
            ],
            [
              482.4035339355469,
              654.2894439697266
            ],
            [
              482.4035339355469,
              700.8350524902344
            ],
            [
              85.46484375,
              700.8350524902344
            ]
          ],
          "bbox": [
            85.46484375,
            654.2894439697266,
            482.4035339355469,
            700.8350524902344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/209/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/210/Page/162",
      "block_type": "Page",
      "html": "<content-ref src='/page/210/PageHeader/0'></content-ref><content-ref src='/page/210/PageHeader/23'></content-ref><content-ref src='/page/210/Text/1'></content-ref><content-ref src='/page/210/ListGroup/160'></content-ref><content-ref src='/page/210/Text/6'></content-ref><content-ref src='/page/210/Text/7'></content-ref><content-ref src='/page/210/SectionHeader/8'></content-ref><content-ref src='/page/210/Text/9'></content-ref><content-ref src='/page/210/ListGroup/161'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/210/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/210/PageHeader/23",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              61.34326171875
            ],
            [
              525.9375,
              61.34326171875
            ],
            [
              525.9375,
              70.14111328125
            ],
            [
              509.80078125,
              70.14111328125
            ]
          ],
          "bbox": [
            509.80078125,
            61.34326171875,
            525.9375,
            70.14111328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/210/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As the number of widgets grows, it is increasingly difficult to imagine all possible sequences of events. One way to manage this complexity is to encapsulate the state of the system in an object and then consider:</p>",
          "polygon": [
            [
              127.4501953125,
              88.51025390625
            ],
            [
              525.9375,
              88.51025390625
            ],
            [
              525.9375,
              123.1868896484375
            ],
            [
              127.4501953125,
              123.1868896484375
            ]
          ],
          "bbox": [
            127.4501953125,
            88.51025390625,
            525.9375,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/210/ListGroup/160",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/210/ListItem/2'></content-ref><content-ref src='/page/210/ListItem/3'></content-ref><content-ref src='/page/210/ListItem/4'></content-ref><content-ref src='/page/210/ListItem/5'></content-ref></ul></p>",
          "polygon": [
            [
              142.2421875,
              133.998046875
            ],
            [
              525.9375,
              133.998046875
            ],
            [
              525.9375,
              250.67193603515625
            ],
            [
              142.2421875,
              250.67193603515625
            ]
          ],
          "bbox": [
            142.2421875,
            133.998046875,
            525.9375,
            250.67193603515625
          ],
          "children": [
            {
              "id": "/page/210/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> What are the possible states? In the Circle example, we might consider two states: before and after the user creates the first circle.</li>",
              "polygon": [
                [
                  143.2880859375,
                  133.998046875
                ],
                [
                  525.9375,
                  133.998046875
                ],
                [
                  525.9375,
                  156.473876953125
                ],
                [
                  143.2880859375,
                  156.473876953125
                ]
              ],
              "bbox": [
                143.2880859375,
                133.998046875,
                525.9375,
                156.473876953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/209/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> In each state, what events can occur? In the example, the user can press either of the buttons, or quit.</li>",
              "polygon": [
                [
                  143.138671875,
                  164.935546875
                ],
                [
                  525.638671875,
                  164.935546875
                ],
                [
                  525.638671875,
                  187.87286376953125
                ],
                [
                  143.138671875,
                  187.87286376953125
                ]
              ],
              "bbox": [
                143.138671875,
                164.935546875,
                525.638671875,
                187.87286376953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/209/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> For each state-event pair, what is the desired outcome? Since there are two states and two buttons, there are four state-event pairs to consider.</li>",
              "polygon": [
                [
                  142.2421875,
                  195.873046875
                ],
                [
                  525.9375,
                  195.873046875
                ],
                [
                  525.9375,
                  219.27288818359375
                ],
                [
                  142.2421875,
                  219.27288818359375
                ]
              ],
              "bbox": [
                142.2421875,
                195.873046875,
                525.9375,
                219.27288818359375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/209/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> What can cause a transition from one state to another? In this case, there is a transition when the user creates the first circle.</li>",
              "polygon": [
                [
                  143.48800659179688,
                  227.583984375
                ],
                [
                  525.638671875,
                  227.583984375
                ],
                [
                  525.638671875,
                  250.67193603515625
                ],
                [
                  143.48800659179688,
                  250.67193603515625
                ]
              ],
              "bbox": [
                143.48800659179688,
                227.583984375,
                525.638671875,
                250.67193603515625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/209/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/210/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You might also find it useful to define, and check, invariants that should hold regardless of the sequence of events.</p>",
          "polygon": [
            [
              129.392578125,
              261.80230712890625
            ],
            [
              526.236328125,
              261.80230712890625
            ],
            [
              526.236328125,
              283.95892333984375
            ],
            [
              129.392578125,
              283.95892333984375
            ]
          ],
          "bbox": [
            129.392578125,
            261.80230712890625,
            526.236328125,
            283.95892333984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/210/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This approach to GUI programming can help you write correct code without taking the time to test every possible sequence of user events!</p>",
          "polygon": [
            [
              128.9443359375,
              292.552734375
            ],
            [
              525.9375,
              292.552734375
            ],
            [
              525.9375,
              315.1659240722656
            ],
            [
              128.9443359375,
              315.1659240722656
            ]
          ],
          "bbox": [
            128.9443359375,
            292.552734375,
            525.9375,
            315.1659240722656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/209/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/210/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-210-0\"></span><b>19.10 Glossary</b></h4>",
          "polygon": [
            [
              128.6455078125,
              342.93377685546875
            ],
            [
              234.7294921875,
              342.93377685546875
            ],
            [
              234.7294921875,
              357.2799987792969
            ],
            [
              128.6455078125,
              357.2799987792969
            ]
          ],
          "bbox": [
            128.6455078125,
            342.93377685546875,
            234.7294921875,
            357.2799987792969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/210/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/210/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>GUI:</b> A graphical user interface.</p>",
          "polygon": [
            [
              129.60000610351562,
              365.1332092285156
            ],
            [
              273.2406311035156,
              365.1332092285156
            ],
            [
              273.2406311035156,
              375.19293212890625
            ],
            [
              129.60000610351562,
              375.19293212890625
            ]
          ],
          "bbox": [
            129.60000610351562,
            365.1332092285156,
            273.2406311035156,
            375.19293212890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/210/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/210/ListGroup/161",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/210/ListItem/10'></content-ref><content-ref src='/page/210/ListItem/11'></content-ref><content-ref src='/page/210/ListItem/12'></content-ref><content-ref src='/page/210/ListItem/13'></content-ref><content-ref src='/page/210/ListItem/14'></content-ref><content-ref src='/page/210/ListItem/15'></content-ref><content-ref src='/page/210/ListItem/16'></content-ref><content-ref src='/page/210/ListItem/17'></content-ref><content-ref src='/page/210/ListItem/18'></content-ref><content-ref src='/page/210/ListItem/19'></content-ref><content-ref src='/page/210/ListItem/20'></content-ref><content-ref src='/page/210/ListItem/21'></content-ref><content-ref src='/page/210/ListItem/22'></content-ref></ul></p>",
          "polygon": [
            [
              127.7490234375,
              384.33819580078125
            ],
            [
              526.236328125,
              384.33819580078125
            ],
            [
              526.236328125,
              698.02587890625
            ],
            [
              127.7490234375,
              698.02587890625
            ]
          ],
          "bbox": [
            127.7490234375,
            384.33819580078125,
            526.236328125,
            698.02587890625
          ],
          "children": [
            {
              "id": "/page/210/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>widget:</b> One of the elements that makes up a GUI, including buttons, menus, text entry fields, etc.</li>",
              "polygon": [
                [
                  129.392578125,
                  384.33819580078125
                ],
                [
                  526.236328125,
                  384.33819580078125
                ],
                [
                  526.236328125,
                  406.5919189453125
                ],
                [
                  129.392578125,
                  406.5919189453125
                ]
              ],
              "bbox": [
                129.392578125,
                384.33819580078125,
                526.236328125,
                406.5919189453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>option:</b> A value that controls the appearance or function of a widget.</li>",
              "polygon": [
                [
                  128.794921875,
                  415.7371826171875
                ],
                [
                  434.23663330078125,
                  415.7371826171875
                ],
                [
                  434.23663330078125,
                  425.7969055175781
                ],
                [
                  128.794921875,
                  425.7969055175781
                ]
              ],
              "bbox": [
                128.794921875,
                415.7371826171875,
                434.23663330078125,
                425.7969055175781
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>keyword argument:</b> An argument that indicates the parameter name as part of the function call.</li>",
              "polygon": [
                [
                  128.6455078125,
                  434.9421691894531
                ],
                [
                  525.6025390625,
                  434.9421691894531
                ],
                [
                  525.6025390625,
                  457.1968994140625
                ],
                [
                  128.6455078125,
                  457.1968994140625
                ]
              ],
              "bbox": [
                128.6455078125,
                434.9421691894531,
                525.6025390625,
                457.1968994140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>callback:</b> A function associated with a widget that is called when the user performs an action.</li>",
              "polygon": [
                [
                  128.9443359375,
                  466.3421630859375
                ],
                [
                  525.6036376953125,
                  466.3421630859375
                ],
                [
                  525.6036376953125,
                  488.59588623046875
                ],
                [
                  128.9443359375,
                  488.59588623046875
                ]
              ],
              "bbox": [
                128.9443359375,
                466.3421630859375,
                525.6036376953125,
                488.59588623046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>bound method:</b> A method associated with a particular instance.</li>",
              "polygon": [
                [
                  128.86962890625,
                  497.3203125
                ],
                [
                  413.876953125,
                  497.3203125
                ],
                [
                  413.876953125,
                  507.8008728027344
                ],
                [
                  128.86962890625,
                  507.8008728027344
                ]
              ],
              "bbox": [
                128.86962890625,
                497.3203125,
                413.876953125,
                507.8008728027344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>event-driven programming:</b> A style of programming in which the flow of execution is determined by user actions.</li>",
              "polygon": [
                [
                  129.392578125,
                  516.9471435546875
                ],
                [
                  525.602783203125,
                  516.9471435546875
                ],
                [
                  525.602783203125,
                  539.2008666992188
                ],
                [
                  129.392578125,
                  539.2008666992188
                ]
              ],
              "bbox": [
                129.392578125,
                516.9471435546875,
                525.602783203125,
                539.2008666992188
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>event:</b> A user action, like a mouse click or key press, that causes a GUI to respond.</li>",
              "polygon": [
                [
                  128.794921875,
                  548.3461608886719
                ],
                [
                  493.962890625,
                  548.3461608886719
                ],
                [
                  493.962890625,
                  558.4058685302734
                ],
                [
                  128.794921875,
                  558.4058685302734
                ]
              ],
              "bbox": [
                128.794921875,
                548.3461608886719,
                493.962890625,
                558.4058685302734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>event loop:</b> An infinite loop that waits for user actions and responds.</li>",
              "polygon": [
                [
                  128.72021484375,
                  567.31640625
                ],
                [
                  435.3519287109375,
                  567.31640625
                ],
                [
                  435.3519287109375,
                  577.6108703613281
                ],
                [
                  128.72021484375,
                  577.6108703613281
                ]
              ],
              "bbox": [
                128.72021484375,
                567.31640625,
                435.3519287109375,
                577.6108703613281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>item:</b> A graphical element on a Canvas widget.</li>",
              "polygon": [
                [
                  127.7490234375,
                  586.7571563720703
                ],
                [
                  339.46875,
                  586.7571563720703
                ],
                [
                  339.46875,
                  596.8168640136719
                ],
                [
                  127.7490234375,
                  596.8168640136719
                ]
              ],
              "bbox": [
                127.7490234375,
                586.7571563720703,
                339.46875,
                596.8168640136719
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/19",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>bounding box:</b> A rectangle that encloses a set of items, usually specified by two opposing corners.</li>",
              "polygon": [
                [
                  129.09375,
                  605.962158203125
                ],
                [
                  525.9375,
                  605.962158203125
                ],
                [
                  525.9375,
                  628.2158660888672
                ],
                [
                  129.09375,
                  628.2158660888672
                ]
              ],
              "bbox": [
                129.09375,
                605.962158203125,
                525.9375,
                628.2158660888672
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/20",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>pack:</b> To arrange and display the elements of a GUI.</li>",
              "polygon": [
                [
                  128.57080078125,
                  637.3611602783203
                ],
                [
                  360.984375,
                  637.3611602783203
                ],
                [
                  360.984375,
                  647.4208679199219
                ],
                [
                  128.57080078125,
                  647.4208679199219
                ]
              ],
              "bbox": [
                128.57080078125,
                637.3611602783203,
                360.984375,
                647.4208679199219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/21",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>geometry manager:</b> A system for packing widgets.</li>",
              "polygon": [
                [
                  128.49609375,
                  656.566162109375
                ],
                [
                  355.4422302246094,
                  656.566162109375
                ],
                [
                  355.4422302246094,
                  666.6258773803711
                ],
                [
                  128.49609375,
                  666.6258773803711
                ]
              ],
              "bbox": [
                128.49609375,
                656.566162109375,
                355.4422302246094,
                666.6258773803711
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/210/ListItem/22",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>binding:</b> An association between a widget, an event, and an event handler. The event handler is called when the event occurs in the widget.</li>",
              "polygon": [
                [
                  128.49609375,
                  675.7721633911133
                ],
                [
                  525.9375,
                  675.7721633911133
                ],
                [
                  525.9375,
                  698.02587890625
                ],
                [
                  128.49609375,
                  698.02587890625
                ]
              ],
              "bbox": [
                128.49609375,
                675.7721633911133,
                525.9375,
                698.02587890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "4": "/page/210/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/210/SectionHeader/8"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "4": "/page/210/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/211/Page/232",
      "block_type": "Page",
      "html": "<content-ref src='/page/211/PageHeader/0'></content-ref><content-ref src='/page/211/PageHeader/18'></content-ref><content-ref src='/page/211/SectionHeader/1'></content-ref><content-ref src='/page/211/Text/2'></content-ref><content-ref src='/page/211/Code/3'></content-ref><content-ref src='/page/211/Text/4'></content-ref><content-ref src='/page/211/Code/5'></content-ref><content-ref src='/page/211/Text/6'></content-ref><content-ref src='/page/211/Text/7'></content-ref><content-ref src='/page/211/Text/8'></content-ref><content-ref src='/page/211/Text/9'></content-ref><content-ref src='/page/211/Code/10'></content-ref><content-ref src='/page/211/ListGroup/231'></content-ref><content-ref src='/page/211/Text/13'></content-ref><content-ref src='/page/211/Text/14'></content-ref><content-ref src='/page/211/Text/15'></content-ref><content-ref src='/page/211/ListItem/16'></content-ref><content-ref src='/page/211/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/211/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.94140625
            ],
            [
              482.607421875,
              59.94140625
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.94140625,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/210/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/211/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.763671875,
              60.37646484375
            ],
            [
              102.0498046875,
              60.37646484375
            ],
            [
              102.0498046875,
              70.62451171875
            ],
            [
              85.763671875,
              70.62451171875
            ]
          ],
          "bbox": [
            85.763671875,
            60.37646484375,
            102.0498046875,
            70.62451171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "4": "/page/210/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/211/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-211-0\"></span><b>19.11 Exercises</b></h3>",
          "polygon": [
            [
              85.0166015625,
              84.4013671875
            ],
            [
              194.0888671875,
              84.4013671875
            ],
            [
              194.0888671875,
              99.97796630859375
            ],
            [
              85.0166015625,
              99.97796630859375
            ]
          ],
          "bbox": [
            85.0166015625,
            84.4013671875,
            194.0888671875,
            99.97796630859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise 19.4.</b> <i>For this exercise, you will write an image viewer. Here is a simple example:</i></p>",
          "polygon": [
            [
              84.8671875,
              113.0185546875
            ],
            [
              452.42578125,
              113.0185546875
            ],
            [
              452.42578125,
              124.00079345703125
            ],
            [
              84.8671875,
              124.00079345703125
            ]
          ],
          "bbox": [
            84.8671875,
            113.0185546875,
            452.42578125,
            124.00079345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Code/3",
          "block_type": "Code",
          "html": "<pre>g = Gui()\ncanvas = g.ca(width=300)\nphoto = PhotoImage(file='danger.gif')\ncanvas.image([0,0], image=photo)\ng.mainloop()</pre>",
          "polygon": [
            [
              85.24072265625,
              131.44677734375
            ],
            [
              279.8783874511719,
              131.44677734375
            ],
            [
              279.8783874511719,
              190.1864013671875
            ],
            [
              85.24072265625,
              190.1864013671875
            ]
          ],
          "bbox": [
            85.24072265625,
            131.44677734375,
            279.8783874511719,
            190.1864013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">PhotoImage <i>reads a file and returns a</i> PhotoImage <i>object that Tkinter can display.</i> Canvas.image <i>puts the image on the canvas, centered on the given coordinates. You can also put images on labels,</i> <i>buttons, and some other widgets:</i></p>",
          "polygon": [
            [
              85.166015625,
              196.1630859375
            ],
            [
              482.607421875,
              196.1630859375
            ],
            [
              482.607421875,
              232.03125
            ],
            [
              85.166015625,
              232.03125
            ]
          ],
          "bbox": [
            85.166015625,
            196.1630859375,
            482.607421875,
            232.03125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Code/5",
          "block_type": "Code",
          "html": "<pre>g.la(image=photo)\ng.bu(image=photo)</pre>",
          "polygon": [
            [
              84.49365234375,
              238.9921875
            ],
            [
              177.802734375,
              238.9921875
            ],
            [
              177.802734375,
              261.69146728515625
            ],
            [
              84.49365234375,
              261.69146728515625
            ]
          ],
          "bbox": [
            84.49365234375,
            238.9921875,
            177.802734375,
            261.69146728515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>PhotoImage can only handle a few image formats, like GIF and PPM, but we can use the Python</i> <i>Imaging Library (PIL) to read other files.</i></p>",
          "polygon": [
            [
              85.763671875,
              267.99609375
            ],
            [
              482.90625,
              267.99609375
            ],
            [
              482.90625,
              291.3233642578125
            ],
            [
              85.763671875,
              291.3233642578125
            ]
          ],
          "bbox": [
            85.763671875,
            267.99609375,
            482.90625,
            291.3233642578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The name of the PIL module is</i> Image<i>, but Tkinter defines an object with the same name. To avoid</i> <i>the conflict, you can use</i> import...as <i>like this:</i></p>",
          "polygon": [
            [
              85.46484375,
              301.25390625
            ],
            [
              483.802734375,
              301.25390625
            ],
            [
              483.802734375,
              324.9725036621094
            ],
            [
              85.46484375,
              324.9725036621094
            ]
          ],
          "bbox": [
            85.46484375,
            301.25390625,
            483.802734375,
            324.9725036621094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">import Image as PIL import ImageTk</p>",
          "polygon": [
            [
              85.763671875,
              332.4709167480469
            ],
            [
              186.46875,
              332.4709167480469
            ],
            [
              186.46875,
              354.62750244140625
            ],
            [
              85.763671875,
              354.62750244140625
            ]
          ],
          "bbox": [
            85.763671875,
            332.4709167480469,
            186.46875,
            354.62750244140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The first line imports</i> Image <i>and gives it the local name</i> PIL<i>. The second line imports</i> ImageTk<i>,</i> <i>which can translate a PIL image into a Tkinter PhotoImage. Here's an example:</i></p>",
          "polygon": [
            [
              86.2119140625,
              361.775390625
            ],
            [
              482.39971923828125,
              361.775390625
            ],
            [
              482.39971923828125,
              384.2593688964844
            ],
            [
              86.2119140625,
              384.2593688964844
            ]
          ],
          "bbox": [
            86.2119140625,
            361.775390625,
            482.39971923828125,
            384.2593688964844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Code/10",
          "block_type": "Code",
          "html": "<pre>image = PIL.open('allen.png')\nphoto2 = ImageTk.PhotoImage(image)\ng.la(image=photo2)</pre>",
          "polygon": [
            [
              85.46484375,
              391.74609375
            ],
            [
              264.2424011230469,
              391.74609375
            ],
            [
              264.2424011230469,
              426.13250732421875
            ],
            [
              85.46484375,
              426.13250732421875
            ]
          ],
          "bbox": [
            85.46484375,
            391.74609375,
            264.2424011230469,
            426.13250732421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/ListGroup/231",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/211/ListItem/11'></content-ref><content-ref src='/page/211/ListItem/12'></content-ref></ul></p>",
          "polygon": [
            [
              97.2685546875,
              442.01953125
            ],
            [
              482.90625,
              442.01953125
            ],
            [
              482.90625,
              523.7943725585938
            ],
            [
              97.2685546875,
              523.7943725585938
            ]
          ],
          "bbox": [
            97.2685546875,
            442.01953125,
            482.90625,
            523.7943725585938
          ],
          "children": [
            {
              "id": "/page/211/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. Download</i> image_demo.py<i>,</i> danger.gif <i>and</i> allen.png <i>from</i> <a href=\"http://thinkpython.com/code\">http:</a> <a href=\"http://thinkpython.com/code\">//</a> <a href=\"http://thinkpython.com/code\">thinkpython.</a> <a href=\"http://thinkpython.com/code\">com/</a> <a href=\"http://thinkpython.com/code\">code</a> <i>. Run</i> image_demo.py<i>. You might have to install</i> PIL <i>and</i> ImageTk<i>. They</i> <i>are probably in your software repository, but if not you can get them from</i> <a href=\"http://pythonware.com/products/pil\">http:</a> <a href=\"http://pythonware.com/products/pil\">//</a> <a href=\"http://pythonware.com/products/pil\">pythonware.</a> <a href=\"http://pythonware.com/products/pil\">com/</a> <a href=\"http://pythonware.com/products/pil\">products/</a> <a href=\"http://pythonware.com/products/pil\">pil</a> <i>.</i></li>",
              "polygon": [
                [
                  97.8662109375,
                  442.01953125
                ],
                [
                  482.90625,
                  442.01953125
                ],
                [
                  482.90625,
                  489.2273864746094
                ],
                [
                  97.8662109375,
                  489.2273864746094
                ]
              ],
              "bbox": [
                97.8662109375,
                442.01953125,
                482.90625,
                489.2273864746094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "3": "/page/211/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/211/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. In</i> image_demo.py <i>change the name of the second PhotoImage from</i> photo2 <i>to</i> photo <i>and</i> <i>run the program again. You should see the second PhotoImage but not the first.</i></li>",
              "polygon": [
                [
                  97.2685546875,
                  500.4140625
                ],
                [
                  482.90625,
                  500.4140625
                ],
                [
                  482.90625,
                  523.7943725585938
                ],
                [
                  97.2685546875,
                  523.7943725585938
                ]
              ],
              "bbox": [
                97.2685546875,
                500.4140625,
                482.90625,
                523.7943725585938
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/200/SectionHeader/1",
                "3": "/page/211/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/211/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>The problem is that when you reassign</i> photo <i>it overwrites the reference to the first PhotoIm</i><i>age, which then disappears. The same thing happens if you assign a PhotoImage to a local</i> <i>variable; it disappears when the function ends.</i></p>",
          "polygon": [
            [
              111.30706787109375,
              530.19140625
            ],
            [
              482.90625,
              530.19140625
            ],
            [
              482.90625,
              565.4663696289062
            ],
            [
              111.30706787109375,
              565.4663696289062
            ]
          ],
          "bbox": [
            111.30706787109375,
            530.19140625,
            482.90625,
            565.4663696289062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>To avoid this problem, you have to store a reference to each PhotoImage you want to keep. You</i> <i>can use a global variable, or store PhotoImages in a data structure or as an attribute of an</i> <i>object.</i></p>",
          "polygon": [
            [
              111.30706787109375,
              571.95703125
            ],
            [
              483.50390625,
              571.95703125
            ],
            [
              483.50390625,
              607.1393737792969
            ],
            [
              111.30706787109375,
              607.1393737792969
            ]
          ],
          "bbox": [
            111.30706787109375,
            571.95703125,
            483.50390625,
            607.1393737792969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>This behavior can be frustrating, which is why I am warning you (and why the example image</i> <i>says \"Danger!\").</i></p>",
          "polygon": [
            [
              111.30706787109375,
              613.3359375
            ],
            [
              482.90625,
              613.3359375
            ],
            [
              482.90625,
              636.6173706054688
            ],
            [
              111.30706787109375,
              636.6173706054688
            ]
          ],
          "bbox": [
            111.30706787109375,
            613.3359375,
            482.90625,
            636.6173706054688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/ListItem/16",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>3. Starting with this example, write a program that takes the name of a directory and loops</i> <i>through all the files, displaying any files that PIL recognizes as images. You can use a</i> try <i>statement to catch the files PIL doesn't recognize.</i></li>",
          "polygon": [
            [
              98.1650390625,
              647.3671875
            ],
            [
              483.50390625,
              647.3671875
            ],
            [
              483.50390625,
              683.3793792724609
            ],
            [
              98.1650390625,
              683.3793792724609
            ]
          ],
          "bbox": [
            98.1650390625,
            647.3671875,
            483.50390625,
            683.3793792724609
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/211/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>When the user clicks on the image, the program should display the next one.</i></p>",
          "polygon": [
            [
              110.865234375,
              689.51953125
            ],
            [
              415.07672119140625,
              689.51953125
            ],
            [
              415.07672119140625,
              700.6623764038086
            ],
            [
              110.865234375,
              700.6623764038086
            ]
          ],
          "bbox": [
            110.865234375,
            689.51953125,
            415.07672119140625,
            700.6623764038086
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "3": "/page/211/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/212/Page/125",
      "block_type": "Page",
      "html": "<content-ref src='/page/212/PageHeader/0'></content-ref><content-ref src='/page/212/PageHeader/7'></content-ref><content-ref src='/page/212/ListItem/1'></content-ref><content-ref src='/page/212/Text/2'></content-ref><content-ref src='/page/212/Text/3'></content-ref><content-ref src='/page/212/Text/4'></content-ref><content-ref src='/page/212/Text/5'></content-ref><content-ref src='/page/212/Text/6'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/212/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/212/PageHeader/7",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.908203125
            ],
            [
              525.9375,
              60.908203125
            ],
            [
              525.9375,
              70.2861328125
            ],
            [
              509.80078125,
              70.2861328125
            ]
          ],
          "bbox": [
            509.80078125,
            60.908203125,
            525.9375,
            70.2861328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/212/ListItem/1",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><i>4. PIL provides a variety of methods for manipulating images. You can read about them at</i> <a href=\"http://pythonware.com/library/pil/handbook\">http:</a> <a href=\"http://pythonware.com/library/pil/handbook\">//</a> <a href=\"http://pythonware.com/library/pil/handbook\">pythonware.</a> <a href=\"http://pythonware.com/library/pil/handbook\">com/</a> <a href=\"http://pythonware.com/library/pil/handbook\">library/</a> <a href=\"http://pythonware.com/library/pil/handbook\">pil/</a> <a href=\"http://pythonware.com/library/pil/handbook\">handbook</a> <i>. As a challenge, choose a few of</i> <i>these methods and provide a GUI for applying them to images.</i></li>",
          "polygon": [
            [
              141.046875,
              88.6552734375
            ],
            [
              526.53515625,
              88.6552734375
            ],
            [
              526.53515625,
              123.01416015625
            ],
            [
              141.046875,
              123.01416015625
            ]
          ],
          "bbox": [
            141.046875,
            88.6552734375,
            526.53515625,
            123.01416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/212/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Solution:</i> <a href=\"http://thinkpython.com/code/ImageBrowser.py\">http:</a> <a href=\"http://thinkpython.com/code/ImageBrowser.py\">//</a> <a href=\"http://thinkpython.com/code/ImageBrowser.py\">thinkpython.</a> <a href=\"http://thinkpython.com/code/ImageBrowser.py\">com/</a> <a href=\"http://thinkpython.com/code/ImageBrowser.py\">code/</a> <a href=\"http://thinkpython.com/code/ImageBrowser.py\">ImageBrowser.</a> <a href=\"http://thinkpython.com/code/ImageBrowser.py\">py</a> <i>.</i> <b>Exercise 19.5.</b> <i>A vector graphics editor is a program that allows users to draw and edit shapes on</i> <i>the screen and generate output files in vector graphics formats like Postscript and SVG.</i></p>",
          "polygon": [
            [
              128.197265625,
              137.10687255859375
            ],
            [
              525.638671875,
              137.10687255859375
            ],
            [
              525.638671875,
              171.53814697265625
            ],
            [
              128.197265625,
              171.53814697265625
            ]
          ],
          "bbox": [
            128.197265625,
            137.10687255859375,
            525.638671875,
            171.53814697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/212/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Write a simple vector graphics editor using Tkinter. At a minimum, it should allow users to draw</i> <i>lines, circles and rectangles, and it should use</i> Canvas.dump <i>to generate a Postscript description of</i> <i>the contents of the Canvas.</i></p>",
          "polygon": [
            [
              128.9443359375,
              180.984375
            ],
            [
              526.53515625,
              180.984375
            ],
            [
              526.53515625,
              216.06414794921875
            ],
            [
              128.9443359375,
              216.06414794921875
            ]
          ],
          "bbox": [
            128.9443359375,
            180.984375,
            526.53515625,
            216.06414794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/212/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>As a challenge, you could allow users to select and resize items on the Canvas.</i> <b>Exercise 19.6.</b> <i>Use Tkinter to write a basic web browser. It should have a Text widget where the</i> <i>user can enter a URL and a Canvas to display the contents of the page.</i></p>",
          "polygon": [
            [
              129.09375,
              226.23956298828125
            ],
            [
              525.5978393554688,
              226.23956298828125
            ],
            [
              525.5978393554688,
              260.59014892578125
            ],
            [
              129.09375,
              260.59014892578125
            ]
          ],
          "bbox": [
            129.09375,
            226.23956298828125,
            525.5978393554688,
            260.59014892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/212/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>You can use the</i> urllib <i>module to download files (see Exercise </i><i><a href=\"#page-162-2\">14.6)</a></i><i> and the</i> HTMLParser <i>module</i> <i>to parse the HTML tags (see</i> <a href=\"http://docs.python.org/2/library/htmlparser.html\">http:</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">//</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">docs.</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">python.</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">org/</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">2/</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">library/</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">htmlparser.</a> <a href=\"http://docs.python.org/2/library/htmlparser.html\">html</a> <i>).</i></p>",
          "polygon": [
            [
              128.0478515625,
              270.703125
            ],
            [
              525.9375,
              270.703125
            ],
            [
              525.9375,
              292.9221496582031
            ],
            [
              128.0478515625,
              292.9221496582031
            ]
          ],
          "bbox": [
            128.0478515625,
            270.703125,
            525.9375,
            292.9221496582031
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/212/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>At a minimum your browser should handle plain text and hyperlinks. As a challenge you could</i> <i>handle background colors, text formatting tags and images.</i></p>",
          "polygon": [
            [
              127.4501953125,
              303.0975646972656
            ],
            [
              526.53515625,
              303.0975646972656
            ],
            [
              526.53515625,
              325.254150390625
            ],
            [
              127.4501953125,
              325.254150390625
            ]
          ],
          "bbox": [
            127.4501953125,
            303.0975646972656,
            526.53515625,
            325.254150390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "3": "/page/211/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/213/Page/3",
      "block_type": "Page",
      "html": "<content-ref src='/page/213/PageHeader/1'></content-ref><content-ref src='/page/213/Text/0'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/213/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.0166015625,
              60.66650390625
            ],
            [
              100.705078125,
              60.66650390625
            ],
            [
              100.705078125,
              70.52783203125
            ],
            [
              85.0166015625,
              70.52783203125
            ]
          ],
          "bbox": [
            85.0166015625,
            60.66650390625,
            100.705078125,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/213/Text/0",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>192 Chapter 19. Case study: Tkinter</b></p>",
          "polygon": [
            [
              86.4000015258789,
              59.5546875
            ],
            [
              482.4034118652344,
              59.5546875
            ],
            [
              482.4034118652344,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.5546875,
            482.4034118652344,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "3": "/page/211/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/200/SectionHeader/1",
        "3": "/page/211/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/214/Page/102",
      "block_type": "Page",
      "html": "<content-ref src='/page/214/SectionHeader/0'></content-ref><content-ref src='/page/214/SectionHeader/1'></content-ref><content-ref src='/page/214/Text/2'></content-ref><content-ref src='/page/214/ListGroup/100'></content-ref><content-ref src='/page/214/Text/6'></content-ref><content-ref src='/page/214/SectionHeader/7'></content-ref><content-ref src='/page/214/Text/8'></content-ref><content-ref src='/page/214/Text/9'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/214/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-214-0\"></span><b>Appendix A</b></h2>",
          "polygon": [
            [
              128.49609375,
              163.58203125
            ],
            [
              246.533203125,
              163.58203125
            ],
            [
              246.533203125,
              185.823974609375
            ],
            [
              128.49609375,
              185.823974609375
            ]
          ],
          "bbox": [
            128.49609375,
            163.58203125,
            246.533203125,
            185.823974609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/200/SectionHeader/1",
            "2": "/page/214/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/214/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Debugging</b></h1>",
          "polygon": [
            [
              128.794921875,
              220.04296875
            ],
            [
              259.083984375,
              220.04296875
            ],
            [
              259.083984375,
              246.34539794921875
            ],
            [
              128.794921875,
              246.34539794921875
            ]
          ],
          "bbox": [
            128.794921875,
            220.04296875,
            259.083984375,
            246.34539794921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/214/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Different kinds of errors can occur in a program, and it is useful to distinguish among them in order to track them down more quickly:</p>",
          "polygon": [
            [
              128.794921875,
              294.6796875
            ],
            [
              527.431640625,
              294.6796875
            ],
            [
              527.431640625,
              317.970947265625
            ],
            [
              128.794921875,
              317.970947265625
            ]
          ],
          "bbox": [
            128.794921875,
            294.6796875,
            527.431640625,
            317.970947265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/214/ListGroup/100",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/214/ListItem/3'></content-ref><content-ref src='/page/214/ListItem/4'></content-ref><content-ref src='/page/214/ListItem/5'></content-ref></ul></p>",
          "polygon": [
            [
              142.0927734375,
              332.96484375
            ],
            [
              527.1328125,
              332.96484375
            ],
            [
              527.1328125,
              485.4669494628906
            ],
            [
              142.0927734375,
              485.4669494628906
            ]
          ],
          "bbox": [
            142.0927734375,
            332.96484375,
            527.1328125,
            485.4669494628906
          ],
          "children": [
            {
              "id": "/page/214/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Syntax errors are produced by Python when it is translating the source code into byte code. They usually indicate that there is something wrong with the syntax of the program. Example: Omitting the colon at the end of a def statement yields the somewhat redundant message SyntaxError: invalid syntax.</li>",
              "polygon": [
                [
                  142.9892578125,
                  332.96484375
                ],
                [
                  526.53515625,
                  332.96484375
                ],
                [
                  526.53515625,
                  380.6179504394531
                ],
                [
                  142.9892578125,
                  380.6179504394531
                ]
              ],
              "bbox": [
                142.9892578125,
                332.96484375,
                526.53515625,
                380.6179504394531
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/214/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Runtime errors are produced by the interpreter if something goes wrong while the program is running. Most runtime error messages include information about where the error occurred and what functions were executing. Example: An infinite recursion eventually causes the runtime error \"maximum recursion depth exceeded.\"</li>",
              "polygon": [
                [
                  143.48800659179688,
                  391.166015625
                ],
                [
                  527.1328125,
                  391.166015625
                ],
                [
                  527.1328125,
                  439.1389465332031
                ],
                [
                  143.48800659179688,
                  439.1389465332031
                ]
              ],
              "bbox": [
                143.48800659179688,
                391.166015625,
                527.1328125,
                439.1389465332031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/214/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Semantic errors are problems with a program that runs without producing error messages but doesn't do the right thing. Example: An expression may not be evaluated in the order you expect, yielding an incorrect result.</li>",
              "polygon": [
                [
                  142.0927734375,
                  449.75390625
                ],
                [
                  527.1328125,
                  449.75390625
                ],
                [
                  527.1328125,
                  485.4669494628906
                ],
                [
                  142.0927734375,
                  485.4669494628906
                ]
              ],
              "bbox": [
                142.0927734375,
                449.75390625,
                527.1328125,
                485.4669494628906
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/214/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first step in debugging is to figure out which kind of error you are dealing with. Although the following sections are organized by error type, some techniques are applicable in more than one situation.</p>",
          "polygon": [
            [
              128.6455078125,
              500.80078125
            ],
            [
              527.1328125,
              500.80078125
            ],
            [
              527.1328125,
              535.9189453125
            ],
            [
              128.6455078125,
              535.9189453125
            ]
          ],
          "bbox": [
            128.6455078125,
            500.80078125,
            527.1328125,
            535.9189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/214/SectionHeader/7",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-214-1\"></span><b>A.1 Syntax errors</b></h4>",
          "polygon": [
            [
              129.46728515625,
              568.3808135986328
            ],
            [
              252.509765625,
              568.3808135986328
            ],
            [
              252.509765625,
              582.7270050048828
            ],
            [
              129.46728515625,
              582.7270050048828
            ]
          ],
          "bbox": [
            129.46728515625,
            568.3808135986328,
            252.509765625,
            582.7270050048828
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/214/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Syntax errors are usually easy to fix once you figure out what they are. Unfortunately, the error messages are often not helpful. The most common messages are SyntaxError: invalid syntax and SyntaxError: invalid token, neither of which is very informative.</p>",
          "polygon": [
            [
              129.09375,
              596.3203125
            ],
            [
              526.53515625,
              596.3203125
            ],
            [
              526.53515625,
              643.074951171875
            ],
            [
              129.09375,
              643.074951171875
            ]
          ],
          "bbox": [
            129.09375,
            596.3203125,
            526.53515625,
            643.074951171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/214/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">On the other hand, the message does tell you where in the program the problem occurred. Actually, it tells you where Python noticed a problem, which is not necessarily where the error is. Sometimes the error is prior to the location of the error message, often on the preceding line.</p>",
          "polygon": [
            [
              128.6455078125,
              653.5546875
            ],
            [
              527.1328125,
              653.5546875
            ],
            [
              527.1328125,
              700.8349609375
            ],
            [
              128.6455078125,
              700.8349609375
            ]
          ],
          "bbox": [
            128.6455078125,
            653.5546875,
            527.1328125,
            700.8349609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "4": "/page/214/SectionHeader/7"
      },
      "images": null
    },
    {
      "id": "/page/215/Page/164",
      "block_type": "Page",
      "html": "<content-ref src='/page/215/PageHeader/0'></content-ref><content-ref src='/page/215/PageHeader/19'></content-ref><content-ref src='/page/215/Text/1'></content-ref><content-ref src='/page/215/Text/2'></content-ref><content-ref src='/page/215/Text/3'></content-ref><content-ref src='/page/215/ListGroup/163'></content-ref><content-ref src='/page/215/Text/11'></content-ref><content-ref src='/page/215/SectionHeader/12'></content-ref><content-ref src='/page/215/Text/13'></content-ref><content-ref src='/page/215/Text/14'></content-ref><content-ref src='/page/215/Text/15'></content-ref><content-ref src='/page/215/ListGroup/164'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/215/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.89306640625
            ],
            [
              482.90625,
              59.89306640625
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.89306640625,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/215/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.68896484375,
              60.2314453125
            ],
            [
              102.72216796875,
              60.2314453125
            ],
            [
              102.72216796875,
              70.0927734375
            ],
            [
              85.68896484375,
              70.0927734375
            ]
          ],
          "bbox": [
            85.68896484375,
            60.2314453125,
            102.72216796875,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/215/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are building the program incrementally, you should have a good idea about where the error is. It will be in the last line you added.</p>",
          "polygon": [
            [
              85.0166015625,
              87.3984375
            ],
            [
              484.69921875,
              87.3984375
            ],
            [
              484.69921875,
              110.99188232421875
            ],
            [
              85.0166015625,
              110.99188232421875
            ]
          ],
          "bbox": [
            85.0166015625,
            87.3984375,
            484.69921875,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/215/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are copying code from a book, start by comparing your code to the book's code very carefully. Check every character. At the same time, remember that the book might be wrong, so if you see something that looks like a syntax error, it might be.</p>",
          "polygon": [
            [
              85.3154296875,
              120.5595703125
            ],
            [
              484.1015625,
              120.5595703125
            ],
            [
              484.1015625,
              155.85791015625
            ],
            [
              85.3154296875,
              155.85791015625
            ]
          ],
          "bbox": [
            85.3154296875,
            120.5595703125,
            484.1015625,
            155.85791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/215/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here are some ways to avoid the most common syntax errors:</p>",
          "polygon": [
            [
              85.166015625,
              165.2255859375
            ],
            [
              358.11993408203125,
              165.2255859375
            ],
            [
              358.11993408203125,
              176.33489990234375
            ],
            [
              85.166015625,
              176.33489990234375
            ]
          ],
          "bbox": [
            85.166015625,
            165.2255859375,
            358.11993408203125,
            176.33489990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/215/ListGroup/163",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/215/ListItem/4'></content-ref><content-ref src='/page/215/ListItem/5'></content-ref><content-ref src='/page/215/ListItem/6'></content-ref><content-ref src='/page/215/ListItem/7'></content-ref><content-ref src='/page/215/ListItem/8'></content-ref><content-ref src='/page/215/ListItem/9'></content-ref><content-ref src='/page/215/ListItem/10'></content-ref></ul></p>",
          "polygon": [
            [
              97.41796875,
              189.3955078125
            ],
            [
              484.1015625,
              189.3955078125
            ],
            [
              484.1015625,
              447.5038757324219
            ],
            [
              97.41796875,
              447.5038757324219
            ]
          ],
          "bbox": [
            97.41796875,
            189.3955078125,
            484.1015625,
            447.5038757324219
          ],
          "children": [
            {
              "id": "/page/215/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">1. Make sure you are not using a Python keyword for a variable name.</li>",
              "polygon": [
                [
                  98.8530044555664,
                  189.3955078125
                ],
                [
                  410.888671875,
                  189.3955078125
                ],
                [
                  410.888671875,
                  201.09991455078125
                ],
                [
                  98.8530044555664,
                  201.09991455078125
                ]
              ],
              "bbox": [
                98.8530044555664,
                189.3955078125,
                410.888671875,
                201.09991455078125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/214/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">2. Check that you have a colon at the end of the header of every compound statement, including for, while, if, and def statements.</li>",
              "polygon": [
                [
                  98.015625,
                  210.568359375
                ],
                [
                  483.802734375,
                  210.568359375
                ],
                [
                  483.802734375,
                  234.03790283203125
                ],
                [
                  98.015625,
                  234.03790283203125
                ]
              ],
              "bbox": [
                98.015625,
                210.568359375,
                483.802734375,
                234.03790283203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/214/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">3. Make sure that any strings in the code have matching quotation marks.</li>",
              "polygon": [
                [
                  97.8662109375,
                  244.01953125
                ],
                [
                  424.93359375,
                  244.01953125
                ],
                [
                  424.93359375,
                  254.7808837890625
                ],
                [
                  97.8662109375,
                  254.7808837890625
                ]
              ],
              "bbox": [
                97.8662109375,
                244.01953125,
                424.93359375,
                254.7808837890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/214/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">4. If you have multiline strings with triple quotes (single or double), make sure you have terminated the string properly. An unterminated string may cause an invalid token error at the end of your program, or it may treat the following part of the program as a string until it comes to the next string. In the second case, it might not produce an error message at all!</li>",
              "polygon": [
                [
                  98.1650390625,
                  265.095703125
                ],
                [
                  483.50390625,
                  265.095703125
                ],
                [
                  483.50390625,
                  324.3018798828125
                ],
                [
                  98.1650390625,
                  324.3018798828125
                ]
              ],
              "bbox": [
                98.1650390625,
                265.095703125,
                483.50390625,
                324.3018798828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/214/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">5. An unclosed opening operator—(, {, or [—makes Python continue with the next line as part of the current statement. Generally, an error occurs almost immediately in the next line.</li>",
              "polygon": [
                [
                  97.41796875,
                  333.931640625
                ],
                [
                  484.1015625,
                  333.931640625
                ],
                [
                  484.1015625,
                  369.4338684082031
                ],
                [
                  97.41796875,
                  369.4338684082031
                ]
              ],
              "bbox": [
                97.41796875,
                333.931640625,
                484.1015625,
                369.4338684082031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/214/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">6. Check for the classic = instead of == inside a conditional.</li>",
              "polygon": [
                [
                  97.94091796875,
                  379.177734375
                ],
                [
                  359.490234375,
                  379.177734375
                ],
                [
                  359.490234375,
                  390.1778564453125
                ],
                [
                  97.94091796875,
                  390.1778564453125
                ]
              ],
              "bbox": [
                97.94091796875,
                379.177734375,
                359.490234375,
                390.1778564453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/214/SectionHeader/7"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">7. Check the indentation to make sure it lines up the way it is supposed to. Python can handle space and tabs, but if you mix them it can cause problems. The best way to avoid this problem is to use a text editor that knows about Python and generates consistent indentation.</li>",
              "polygon": [
                [
                  97.716796875,
                  399.8671875
                ],
                [
                  484.1015625,
                  399.8671875
                ],
                [
                  484.1015625,
                  447.5038757324219
                ],
                [
                  97.716796875,
                  447.5038757324219
                ]
              ],
              "bbox": [
                97.716796875,
                399.8671875,
                484.1015625,
                447.5038757324219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/214/SectionHeader/7"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": null
        },
        {
          "id": "/page/215/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If nothing works, move on to the next section...</p>",
          "polygon": [
            [
              86.0625,
              460.96875
            ],
            [
              294.046875,
              460.96875
            ],
            [
              294.046875,
              472.2688903808594
            ],
            [
              86.0625,
              472.2688903808594
            ]
          ],
          "bbox": [
            86.0625,
            460.96875,
            294.046875,
            472.2688903808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/214/SectionHeader/7"
          },
          "images": {}
        },
        {
          "id": "/page/215/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.1.1 I keep making changes and it makes no difference.</b></h4>",
          "polygon": [
            [
              85.763671875,
              498.48046875
            ],
            [
              403.41796875,
              498.48046875
            ],
            [
              403.41796875,
              511.0899658203125
            ],
            [
              85.763671875,
              511.0899658203125
            ]
          ],
          "bbox": [
            85.763671875,
            498.48046875,
            403.41796875,
            511.0899658203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/215/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the interpreter says there is an error and you don't see it, that might be because you and the interpreter are not looking at the same code. Check your programming environment to make sure that the program you are editing is the one Python is trying to run.</p>",
          "polygon": [
            [
              85.763671875,
              521.296875
            ],
            [
              484.1015625,
              521.296875
            ],
            [
              484.1015625,
              557.0458679199219
            ],
            [
              85.763671875,
              557.0458679199219
            ]
          ],
          "bbox": [
            85.763671875,
            521.296875,
            484.1015625,
            557.0458679199219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/215/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not sure, try putting an obvious and deliberate syntax error at the beginning of the program. Now run it again. If the interpreter doesn't find the new error, you are not running the new code.</p>",
          "polygon": [
            [
              85.9130859375,
              566.9296875
            ],
            [
              484.1015625,
              566.9296875
            ],
            [
              484.1015625,
              601.9118804931641
            ],
            [
              85.9130859375,
              601.9118804931641
            ]
          ],
          "bbox": [
            85.9130859375,
            566.9296875,
            484.1015625,
            601.9118804931641
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/215/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There are a few likely culprits:</p>",
          "polygon": [
            [
              85.763671875,
              611.7890625
            ],
            [
              220.236328125,
              611.7890625
            ],
            [
              220.236328125,
              622.3888854980469
            ],
            [
              85.763671875,
              622.3888854980469
            ]
          ],
          "bbox": [
            85.763671875,
            611.7890625,
            220.236328125,
            622.3888854980469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/215/ListGroup/164",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup' class='has-continuation'><ul><content-ref src='/page/215/ListItem/16'></content-ref><content-ref src='/page/215/ListItem/17'></content-ref><content-ref src='/page/215/ListItem/18'></content-ref></ul></p>",
          "polygon": [
            [
              100.2879867553711,
              635.765625
            ],
            [
              484.1015625,
              635.765625
            ],
            [
              484.1015625,
              700.8348999023438
            ],
            [
              100.2879867553711,
              700.8348999023438
            ]
          ],
          "bbox": [
            100.2879867553711,
            635.765625,
            484.1015625,
            700.8348999023438
          ],
          "children": [
            {
              "id": "/page/215/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> You edited the file and forgot to save the changes before running it again. Some programming environments do this for you, but some don't.</li>",
              "polygon": [
                [
                  100.2879867553711,
                  635.765625
                ],
                [
                  484.1015625,
                  635.765625
                ],
                [
                  484.1015625,
                  659.3478851318359
                ],
                [
                  100.2879867553711,
                  659.3478851318359
                ]
              ],
              "bbox": [
                100.2879867553711,
                635.765625,
                484.1015625,
                659.3478851318359
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/215/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/17",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> You changed the name of the file, but you are still running the old name.</li>",
              "polygon": [
                [
                  100.2879867553711,
                  668.63671875
                ],
                [
                  431.5078125,
                  668.63671875
                ],
                [
                  431.5078125,
                  680.0918960571289
                ],
                [
                  100.2879867553711,
                  680.0918960571289
                ]
              ],
              "bbox": [
                100.2879867553711,
                668.63671875,
                431.5078125,
                680.0918960571289
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/215/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/215/ListItem/18",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Something in your development environment is configured incorrectly.</li>",
              "polygon": [
                [
                  100.2879867553711,
                  689.51953125
                ],
                [
                  425.232421875,
                  689.51953125
                ],
                [
                  425.232421875,
                  700.8348999023438
                ],
                [
                  100.2879867553711,
                  700.8348999023438
                ]
              ],
              "bbox": [
                100.2879867553711,
                689.51953125,
                425.232421875,
                700.8348999023438
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/215/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "4": "/page/215/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/216/Page/140",
      "block_type": "Page",
      "html": "<content-ref src='/page/216/PageHeader/0'></content-ref><content-ref src='/page/216/PageHeader/17'></content-ref><content-ref src='/page/216/ListGroup/138'></content-ref><content-ref src='/page/216/Text/3'></content-ref><content-ref src='/page/216/SectionHeader/4'></content-ref><content-ref src='/page/216/Text/5'></content-ref><content-ref src='/page/216/SectionHeader/6'></content-ref><content-ref src='/page/216/Text/7'></content-ref><content-ref src='/page/216/Text/8'></content-ref><content-ref src='/page/216/SectionHeader/9'></content-ref><content-ref src='/page/216/Text/10'></content-ref><content-ref src='/page/216/ListItem/11'></content-ref><content-ref src='/page/216/Text/12'></content-ref><content-ref src='/page/216/ListItem/13'></content-ref><content-ref src='/page/216/Text/14'></content-ref><content-ref src='/page/216/ListGroup/139'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/216/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              60.521484375
            ],
            [
              525.6033935546875,
              60.521484375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            60.521484375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/216/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.47314453125
            ],
            [
              526.236328125,
              60.47314453125
            ],
            [
              526.236328125,
              70.23779296875
            ],
            [
              510.099609375,
              70.23779296875
            ]
          ],
          "bbox": [
            510.099609375,
            60.47314453125,
            526.236328125,
            70.23779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/216/ListGroup/138",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/216/ListItem/1'></content-ref><content-ref src='/page/216/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              142.6904296875,
              88.0751953125
            ],
            [
              526.53515625,
              88.0751953125
            ],
            [
              526.53515625,
              155.69488525390625
            ],
            [
              142.6904296875,
              155.69488525390625
            ]
          ],
          "bbox": [
            142.6904296875,
            88.0751953125,
            526.53515625,
            155.69488525390625
          ],
          "children": [
            {
              "id": "/page/216/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> If you are writing a module and using import, make sure you don't give your module the same name as one of the standard Python modules.</li>",
              "polygon": [
                [
                  142.6904296875,
                  88.0751953125
                ],
                [
                  525.595458984375,
                  88.0751953125
                ],
                [
                  525.595458984375,
                  110.99188232421875
                ],
                [
                  142.6904296875,
                  110.99188232421875
                ]
              ],
              "bbox": [
                142.6904296875,
                88.0751953125,
                525.595458984375,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/215/SectionHeader/12"
              },
              "images": {}
            },
            {
              "id": "/page/216/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> If you are using import to read a module, remember that you have to restart the interpreter or use reload to read a modified file. If you import the module again, it doesn't do anything.</li>",
              "polygon": [
                [
                  142.83984375,
                  120.076171875
                ],
                [
                  526.53515625,
                  120.076171875
                ],
                [
                  526.53515625,
                  155.69488525390625
                ],
                [
                  142.83984375,
                  155.69488525390625
                ]
              ],
              "bbox": [
                142.83984375,
                120.076171875,
                526.53515625,
                155.69488525390625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/215/SectionHeader/12"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": null
        },
        {
          "id": "/page/216/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you get stuck and you can't figure out what is going on, one approach is to start again with a new program like \"Hello, World!,\" and make sure you can get a known program to run. Then gradually add the pieces of the original program to the new one.</p>",
          "polygon": [
            [
              128.0478515625,
              169.0927734375
            ],
            [
              526.53515625,
              169.0927734375
            ],
            [
              526.53515625,
              204.38287353515625
            ],
            [
              128.0478515625,
              204.38287353515625
            ]
          ],
          "bbox": [
            128.0478515625,
            169.0927734375,
            526.53515625,
            204.38287353515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/215/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/216/SectionHeader/4",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-216-0\"></span><b>A.2 Runtime errors</b></h4>",
          "polygon": [
            [
              128.27197265625,
              233.96484375
            ],
            [
              265.0855407714844,
              233.96484375
            ],
            [
              265.0855407714844,
              248.33489990234375
            ],
            [
              128.27197265625,
              248.33489990234375
            ]
          ],
          "bbox": [
            128.27197265625,
            233.96484375,
            265.0855407714844,
            248.33489990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/216/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Once your program is syntactically correct, Python can compile it and at least start running it. What could possibly go wrong?</p>",
          "polygon": [
            [
              128.49609375,
              259.48828125
            ],
            [
              526.53515625,
              259.48828125
            ],
            [
              526.53515625,
              283.078125
            ],
            [
              128.49609375,
              283.078125
            ]
          ],
          "bbox": [
            128.49609375,
            259.48828125,
            526.53515625,
            283.078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/4"
          },
          "images": {}
        },
        {
          "id": "/page/216/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.2.1 My program does absolutely nothing.</b></h4>",
          "polygon": [
            [
              128.3466796875,
              308.794921875
            ],
            [
              374.3588562011719,
              308.794921875
            ],
            [
              374.3588562011719,
              321.02691650390625
            ],
            [
              128.3466796875,
              321.02691650390625
            ]
          ],
          "bbox": [
            128.3466796875,
            308.794921875,
            374.3588562011719,
            321.02691650390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/216/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This problem is most common when your file consists of functions and classes but does not actually invoke anything to start execution. This may be intentional if you only plan to import this module to supply classes and functions.</p>",
          "polygon": [
            [
              128.197265625,
              331.998046875
            ],
            [
              526.236328125,
              331.998046875
            ],
            [
              526.236328125,
              366.62982177734375
            ],
            [
              128.197265625,
              366.62982177734375
            ]
          ],
          "bbox": [
            128.197265625,
            331.998046875,
            526.236328125,
            366.62982177734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/216/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If it is not intentional, make sure that you are invoking a function to start execution, or execute one from the interactive prompt. Also see the \"Flow of Execution\" section below.</p>",
          "polygon": [
            [
              128.794921875,
              376.27734375
            ],
            [
              526.236328125,
              376.27734375
            ],
            [
              526.236328125,
              399.0498352050781
            ],
            [
              128.794921875,
              399.0498352050781
            ]
          ],
          "bbox": [
            128.794921875,
            376.27734375,
            526.236328125,
            399.0498352050781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/216/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.2.2 My program hangs.</b></h4>",
          "polygon": [
            [
              129.01904296875,
              424.6171875
            ],
            [
              276.1171875,
              424.6171875
            ],
            [
              276.1171875,
              437.11590576171875
            ],
            [
              129.01904296875,
              437.11590576171875
            ]
          ],
          "bbox": [
            129.01904296875,
            424.6171875,
            276.1171875,
            437.11590576171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/216/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If a program stops and seems to be doing nothing, it is \"hanging.\" Often that means that it is caught in an infinite loop or infinite recursion.</p>",
          "polygon": [
            [
              129.2431640625,
              447.43359375
            ],
            [
              526.53515625,
              447.43359375
            ],
            [
              526.53515625,
              470.52581787109375
            ],
            [
              129.2431640625,
              470.52581787109375
            ]
          ],
          "bbox": [
            129.2431640625,
            447.43359375,
            526.53515625,
            470.52581787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/216/ListItem/11",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"> If there is a particular loop that you suspect is the problem, add a print statement immediately before the loop that says \"entering the loop\" and another immediately after that says \"exiting the loop.\"</li>",
          "polygon": [
            [
              142.0927734375,
              483.78515625
            ],
            [
              526.53515625,
              483.78515625
            ],
            [
              526.53515625,
              519.2128295898438
            ],
            [
              142.0927734375,
              519.2128295898438
            ]
          ],
          "bbox": [
            142.0927734375,
            483.78515625,
            526.53515625,
            519.2128295898438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/216/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Run the program. If you get the first message and not the second, you've got an infinite loop. Go to the \"Infinite Loop\" section below.</p>",
          "polygon": [
            [
              154.50701904296875,
              524.390625
            ],
            [
              526.53515625,
              524.390625
            ],
            [
              526.53515625,
              547.6618347167969
            ],
            [
              154.50701904296875,
              547.6618347167969
            ]
          ],
          "bbox": [
            154.50701904296875,
            524.390625,
            526.53515625,
            547.6618347167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/216/ListItem/13",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"> Most of the time, an infinite recursion will cause the program to run for a while and then produce a \"RuntimeError: Maximum recursion depth exceeded\" error. If that happens, go to the \"Infinite Recursion\" section below.</li>",
          "polygon": [
            [
              141.943359375,
              557.26171875
            ],
            [
              526.833984375,
              557.26171875
            ],
            [
              526.833984375,
              592.3648376464844
            ],
            [
              141.943359375,
              592.3648376464844
            ]
          ],
          "bbox": [
            141.943359375,
            557.26171875,
            526.833984375,
            592.3648376464844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/216/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not getting this error but you suspect there is a problem with a recursive method or function, you can still use the techniques in the \"Infinite Recursion\" section.</p>",
          "polygon": [
            [
              153.59765625,
              598.25390625
            ],
            [
              526.53515625,
              598.25390625
            ],
            [
              526.53515625,
              633.05859375
            ],
            [
              153.59765625,
              633.05859375
            ]
          ],
          "bbox": [
            153.59765625,
            598.25390625,
            526.53515625,
            633.05859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/216/ListGroup/139",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/216/ListItem/15'></content-ref><content-ref src='/page/216/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              143.2880859375,
              642.33984375
            ],
            [
              526.53515625,
              642.33984375
            ],
            [
              526.53515625,
              698.02734375
            ],
            [
              143.2880859375,
              698.02734375
            ]
          ],
          "bbox": [
            143.2880859375,
            642.33984375,
            526.53515625,
            698.02734375
          ],
          "children": [
            {
              "id": "/page/216/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> If neither of those steps works, start testing other loops and other recursive functions and methods.</li>",
              "polygon": [
                [
                  143.48802185058594,
                  642.33984375
                ],
                [
                  526.53515625,
                  642.33984375
                ],
                [
                  526.53515625,
                  665.54296875
                ],
                [
                  143.48802185058594,
                  665.54296875
                ]
              ],
              "bbox": [
                143.48802185058594,
                642.33984375,
                526.53515625,
                665.54296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/216/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/216/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> If that doesn't work, then it is possible that you don't understand the flow of execution in your program. Go to the \"Flow of Execution\" section below.</li>",
              "polygon": [
                [
                  143.2880859375,
                  674.82421875
                ],
                [
                  525.9375,
                  674.82421875
                ],
                [
                  525.9375,
                  698.02734375
                ],
                [
                  143.2880859375,
                  698.02734375
                ]
              ],
              "bbox": [
                143.2880859375,
                674.82421875,
                525.9375,
                698.02734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/216/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": null
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "4": "/page/216/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/217/Page/163",
      "block_type": "Page",
      "html": "<content-ref src='/page/217/PageHeader/0'></content-ref><content-ref src='/page/217/PageHeader/16'></content-ref><content-ref src='/page/217/SectionHeader/1'></content-ref><content-ref src='/page/217/Text/2'></content-ref><content-ref src='/page/217/Text/3'></content-ref><content-ref src='/page/217/Code/4'></content-ref><content-ref src='/page/217/Text/5'></content-ref><content-ref src='/page/217/SectionHeader/6'></content-ref><content-ref src='/page/217/Text/7'></content-ref><content-ref src='/page/217/Text/8'></content-ref><content-ref src='/page/217/Text/9'></content-ref><content-ref src='/page/217/SectionHeader/10'></content-ref><content-ref src='/page/217/Text/11'></content-ref><content-ref src='/page/217/Text/12'></content-ref><content-ref src='/page/217/SectionHeader/13'></content-ref><content-ref src='/page/217/Text/14'></content-ref><content-ref src='/page/217/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/217/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.27978515625
            ],
            [
              482.90625,
              60.27978515625
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.27978515625,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/217/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.83837890625,
              60.328125
            ],
            [
              102.57275390625,
              60.328125
            ],
            [
              102.57275390625,
              70.189453125
            ],
            [
              85.83837890625,
              70.189453125
            ]
          ],
          "bbox": [
            85.83837890625,
            60.328125,
            102.57275390625,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/216/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/217/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><b>Infinite Loop</b></h4>",
          "polygon": [
            [
              85.166015625,
              87.35009765625
            ],
            [
              148.0693359375,
              87.35009765625
            ],
            [
              148.0693359375,
              98.70074462890625
            ],
            [
              85.166015625,
              98.70074462890625
            ]
          ],
          "bbox": [
            85.166015625,
            87.35009765625,
            148.0693359375,
            98.70074462890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you think you have an infinite loop and you think you know what loop is causing the problem, add a print statement at the end of the loop that prints the values of the variables in the condition and the value of the condition.</p>",
          "polygon": [
            [
              85.46484375,
              108.28125
            ],
            [
              483.802734375,
              108.28125
            ],
            [
              483.802734375,
              144.35693359375
            ],
            [
              85.46484375,
              144.35693359375
            ]
          ],
          "bbox": [
            85.46484375,
            108.28125,
            483.802734375,
            144.35693359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example:</p>",
          "polygon": [
            [
              85.39013671875,
              152.6572265625
            ],
            [
              145.15576171875,
              152.6572265625
            ],
            [
              145.15576171875,
              164.12493896484375
            ],
            [
              85.39013671875,
              164.12493896484375
            ]
          ],
          "bbox": [
            85.39013671875,
            152.6572265625,
            145.15576171875,
            164.12493896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/217/Code/4",
          "block_type": "Code",
          "html": "<pre>while x &gt; 0 and y &lt; 0 :\n    # do something to x\n    # do something to y\n    print \"x: \", x\n    print \"y: \", y\n    print \"condition: \", (x &gt; 0 and y &lt; 0)</pre>",
          "polygon": [
            [
              86.40000915527344,
              169.576171875
            ],
            [
              306.298828125,
              169.576171875
            ],
            [
              306.298828125,
              252.9383544921875
            ],
            [
              86.40000915527344,
              252.9383544921875
            ]
          ],
          "bbox": [
            86.40000915527344,
            169.576171875,
            306.298828125,
            252.9383544921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now when you run the program, you will see three lines of output for each time through the loop. The last time through the loop, the condition should be false. If the loop keeps going, you will be able to see the values of x and y, and you might figure out why they are not being updated correctly.</p>",
          "polygon": [
            [
              85.46484375,
              256.587890625
            ],
            [
              483.50390625,
              256.587890625
            ],
            [
              483.50390625,
              305.4678955078125
            ],
            [
              85.46484375,
              305.4678955078125
            ]
          ],
          "bbox": [
            85.46484375,
            256.587890625,
            483.50390625,
            305.4678955078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/217/SectionHeader/6",
          "block_type": "SectionHeader",
          "html": "<h4><b>Infinite Recursion</b></h4>",
          "polygon": [
            [
              85.763671875,
              328.904296875
            ],
            [
              169.2861328125,
              328.904296875
            ],
            [
              169.2861328125,
              340.1767883300781
            ],
            [
              85.763671875,
              340.1767883300781
            ]
          ],
          "bbox": [
            85.763671875,
            328.904296875,
            169.2861328125,
            340.1767883300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most of the time, an infinite recursion will cause the program to run for a while and then produce a Maximum recursion depth exceeded error.</p>",
          "polygon": [
            [
              85.9130859375,
              350.173828125
            ],
            [
              483.50390625,
              350.173828125
            ],
            [
              483.50390625,
              373.638916015625
            ],
            [
              85.9130859375,
              373.638916015625
            ]
          ],
          "bbox": [
            85.9130859375,
            350.173828125,
            483.50390625,
            373.638916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you suspect that a function or method is causing an infinite recursion, start by checking to make sure that there is a base case. In other words, there should be some condition that will cause the function or method to return without making a recursive invocation. If not, then you need to rethink the algorithm and identify a base case.</p>",
          "polygon": [
            [
              85.763671875,
              381.884765625
            ],
            [
              483.50390625,
              381.884765625
            ],
            [
              483.50390625,
              429.98992919921875
            ],
            [
              85.763671875,
              429.98992919921875
            ]
          ],
          "bbox": [
            85.763671875,
            381.884765625,
            483.50390625,
            429.98992919921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If there is a base case but the program doesn't seem to be reaching it, add a print statement at the beginning of the function or method that prints the parameters. Now when you run the program, you will see a few lines of output every time the function or method is invoked, and you will see the parameters. If the parameters are not moving toward the base case, you will get some ideas about why not.</p>",
          "polygon": [
            [
              85.763671875,
              438.5390625
            ],
            [
              484.1015625,
              438.5390625
            ],
            [
              484.1015625,
              498.53594970703125
            ],
            [
              85.763671875,
              498.53594970703125
            ]
          ],
          "bbox": [
            85.763671875,
            438.5390625,
            484.1015625,
            498.53594970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/6"
          },
          "images": {}
        },
        {
          "id": "/page/217/SectionHeader/10",
          "block_type": "SectionHeader",
          "html": "<h4><b>Flow of Execution</b></h4>",
          "polygon": [
            [
              85.763671875,
              521.68359375
            ],
            [
              168.3896484375,
              521.68359375
            ],
            [
              168.3896484375,
              533.2448425292969
            ],
            [
              85.763671875,
              533.2448425292969
            ]
          ],
          "bbox": [
            85.763671875,
            521.68359375,
            168.3896484375,
            533.2448425292969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you are not sure how the flow of execution is moving through your program, add print statements to the beginning of each function with a message like \"entering function foo,\" where foo is the name of the function.</p>",
          "polygon": [
            [
              86.0625,
              543.7265625
            ],
            [
              483.205078125,
              543.7265625
            ],
            [
              483.205078125,
              578.9009552001953
            ],
            [
              86.0625,
              578.9009552001953
            ]
          ],
          "bbox": [
            86.0625,
            543.7265625,
            483.205078125,
            578.9009552001953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now when you run the program, it will print a trace of each function as it is invoked.</p>",
          "polygon": [
            [
              85.763671875,
              587.42578125
            ],
            [
              460.9937744140625,
              587.42578125
            ],
            [
              460.9937744140625,
              598.6689605712891
            ],
            [
              85.763671875,
              598.6689605712891
            ]
          ],
          "bbox": [
            85.763671875,
            587.42578125,
            460.9937744140625,
            598.6689605712891
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/10"
          },
          "images": {}
        },
        {
          "id": "/page/217/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.2.3 When I run the program I get an exception.</b></h4>",
          "polygon": [
            [
              85.53955078125,
              623.9998321533203
            ],
            [
              359.7890625,
              623.9998321533203
            ],
            [
              359.7890625,
              635.9550323486328
            ],
            [
              85.53955078125,
              635.9550323486328
            ]
          ],
          "bbox": [
            85.53955078125,
            623.9998321533203,
            359.7890625,
            635.9550323486328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If something goes wrong during runtime, Python prints a message that includes the name of the exception, the line of the program where the problem occurred, and a traceback.</p>",
          "polygon": [
            [
              85.763671875,
              645.8203125
            ],
            [
              483.50390625,
              645.8203125
            ],
            [
              483.50390625,
              668.8729705810547
            ],
            [
              85.763671875,
              668.8729705810547
            ]
          ],
          "bbox": [
            85.763671875,
            645.8203125,
            483.50390625,
            668.8729705810547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/217/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\" class=\"has-continuation\">The traceback identifies the function that is currently running, and then the function that invoked it, and then the function that invoked <i>that</i>, and so on. In other words, it traces the</p>",
          "polygon": [
            [
              85.9130859375,
              677.53125
            ],
            [
              484.1015625,
              677.53125
            ],
            [
              484.1015625,
              700.8349685668945
            ],
            [
              85.9130859375,
              700.8349685668945
            ]
          ],
          "bbox": [
            85.9130859375,
            677.53125,
            484.1015625,
            700.8349685668945
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "4": "/page/217/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/218/Page/190",
      "block_type": "Page",
      "html": "<content-ref src='/page/218/PageHeader/0'></content-ref><content-ref src='/page/218/PageHeader/16'></content-ref><content-ref src='/page/218/Text/1'></content-ref><content-ref src='/page/218/Text/2'></content-ref><content-ref src='/page/218/ListItem/3'></content-ref><content-ref src='/page/218/Text/4'></content-ref><content-ref src='/page/218/ListGroup/190'></content-ref><content-ref src='/page/218/Text/10'></content-ref><content-ref src='/page/218/ListItem/11'></content-ref><content-ref src='/page/218/Text/12'></content-ref><content-ref src='/page/218/SectionHeader/13'></content-ref><content-ref src='/page/218/Text/14'></content-ref><content-ref src='/page/218/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/218/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.9443359375,
              60.71484375
            ],
            [
              525.6033935546875,
              60.71484375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.9443359375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.9443359375,
            60.71484375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.6181640625
            ],
            [
              525.638671875,
              60.6181640625
            ],
            [
              525.638671875,
              69.8994140625
            ],
            [
              510.099609375,
              69.8994140625
            ]
          ],
          "bbox": [
            510.099609375,
            60.6181640625,
            525.638671875,
            69.8994140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">sequence of function invocations that got you to where you are. It also includes the line number in your file where each of these calls occurs.</p>",
          "polygon": [
            [
              127.7490234375,
              88.70361328125
            ],
            [
              525.6033935546875,
              88.70361328125
            ],
            [
              525.6033935546875,
              110.99188232421875
            ],
            [
              127.7490234375,
              110.99188232421875
            ]
          ],
          "bbox": [
            127.7490234375,
            88.70361328125,
            525.6033935546875,
            110.99188232421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first step is to examine the place in the program where the error occurred and see if you can figure out what happened. These are some of the most common runtime errors:</p>",
          "polygon": [
            [
              128.197265625,
              121.4296875
            ],
            [
              526.236328125,
              121.4296875
            ],
            [
              526.236328125,
              144.1048583984375
            ],
            [
              128.197265625,
              144.1048583984375
            ]
          ],
          "bbox": [
            128.197265625,
            121.4296875,
            526.236328125,
            144.1048583984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/ListItem/3",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>NameError:</b> You are trying to use a variable that doesn't exist in the current environment. Remember that local variables are local. You cannot refer to them from outside the function where they are defined.</li>",
          "polygon": [
            [
              128.9443359375,
              159.4248046875
            ],
            [
              525.9375,
              159.4248046875
            ],
            [
              525.9375,
              194.0758056640625
            ],
            [
              128.9443359375,
              194.0758056640625
            ]
          ],
          "bbox": [
            128.9443359375,
            159.4248046875,
            525.9375,
            194.0758056640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>TypeError:</b> There are several possible causes:</p>",
          "polygon": [
            [
              128.72021484375,
              205.34765625
            ],
            [
              329.6492919921875,
              205.34765625
            ],
            [
              329.6492919921875,
              215.57177734375
            ],
            [
              128.72021484375,
              215.57177734375
            ]
          ],
          "bbox": [
            128.72021484375,
            205.34765625,
            329.6492919921875,
            215.57177734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/ListGroup/190",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/218/ListItem/5'></content-ref><content-ref src='/page/218/ListItem/6'></content-ref><content-ref src='/page/218/ListItem/7'></content-ref><content-ref src='/page/218/ListItem/8'></content-ref><content-ref src='/page/218/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              129.60000610351562,
              222.75
            ],
            [
              525.9375,
              222.75
            ],
            [
              525.9375,
              419.5267639160156
            ],
            [
              129.60000610351562,
              419.5267639160156
            ]
          ],
          "bbox": [
            129.60000610351562,
            222.75,
            525.9375,
            419.5267639160156
          ],
          "children": [
            {
              "id": "/page/218/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> You are trying to use a value improperly. Example: indexing a string, list, or tuple with something other than an integer.</li>",
              "polygon": [
                [
                  165.406005859375,
                  222.75
                ],
                [
                  525.638671875,
                  222.75
                ],
                [
                  525.638671875,
                  245.28973388671875
                ],
                [
                  165.406005859375,
                  245.28973388671875
                ]
              ],
              "bbox": [
                165.406005859375,
                222.75,
                525.638671875,
                245.28973388671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/217/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/218/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> There is a mismatch between the items in a format string and the items passed for conversion. This can happen if either the number of items does not match or an invalid conversion is called for.</li>",
              "polygon": [
                [
                  165.406005859375,
                  251.560546875
                ],
                [
                  525.9375,
                  251.560546875
                ],
                [
                  525.9375,
                  286.52374267578125
                ],
                [
                  165.406005859375,
                  286.52374267578125
                ]
              ],
              "bbox": [
                165.406005859375,
                251.560546875,
                525.9375,
                286.52374267578125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/217/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/218/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> You are passing the wrong number of arguments to a function or method. For methods, look at the method definition and check that the first parameter is self. Then look at the method invocation; make sure you are invoking the method on an object with the right type and providing the other arguments correctly.</li>",
              "polygon": [
                [
                  164.35546875,
                  292.939453125
                ],
                [
                  525.9375,
                  292.939453125
                ],
                [
                  525.9375,
                  352.1467590332031
                ],
                [
                  164.35546875,
                  352.1467590332031
                ]
              ],
              "bbox": [
                164.35546875,
                292.939453125,
                525.9375,
                352.1467590332031
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/217/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/218/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>KeyError:</b> You are trying to access an element of a dictionary using a key that the dictionary does not contain.</li>",
              "polygon": [
                [
                  129.60000610351562,
                  363.322265625
                ],
                [
                  525.603271484375,
                  363.322265625
                ],
                [
                  525.603271484375,
                  385.8367614746094
                ],
                [
                  129.60000610351562,
                  385.8367614746094
                ]
              ],
              "bbox": [
                129.60000610351562,
                363.322265625,
                525.603271484375,
                385.8367614746094
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/217/SectionHeader/13"
              },
              "images": {}
            },
            {
              "id": "/page/218/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><b>AttributeError:</b> You are trying to access an attribute or method that does not exist. Check the spelling! You can use dir to list the attributes that do exist.</li>",
              "polygon": [
                [
                  129.60000610351562,
                  396.7734375
                ],
                [
                  525.6025390625,
                  396.7734375
                ],
                [
                  525.6025390625,
                  419.5267639160156
                ],
                [
                  129.60000610351562,
                  419.5267639160156
                ]
              ],
              "bbox": [
                129.60000610351562,
                396.7734375,
                525.6025390625,
                419.5267639160156
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "4": "/page/217/SectionHeader/13"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": null
        },
        {
          "id": "/page/218/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If an AttributeError indicates that an object has NoneType, that means that it is None. One common cause is forgetting to return a value from a function; if you get to the end of a function without hitting a return statement, it returns None. Another common cause is using the result from a list method, like sort, that returns None.</p>",
          "polygon": [
            [
              153.59765625,
              426.1640625
            ],
            [
              525.6049194335938,
              426.1640625
            ],
            [
              525.6049194335938,
              472.95477294921875
            ],
            [
              153.59765625,
              472.95477294921875
            ]
          ],
          "bbox": [
            153.59765625,
            426.1640625,
            525.6049194335938,
            472.95477294921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/ListItem/11",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"><b>IndexError:</b> The index you are using to access a list, string, or tuple is greater than its length minus one. Immediately before the site of the error, add a print statement to display the value of the index and the length of the array. Is the array the right size? Is the index the right value?</li>",
          "polygon": [
            [
              128.49609375,
              484.39105224609375
            ],
            [
              525.9375,
              484.39105224609375
            ],
            [
              525.9375,
              531.0337829589844
            ],
            [
              128.49609375,
              531.0337829589844
            ]
          ],
          "bbox": [
            128.49609375,
            484.39105224609375,
            525.9375,
            531.0337829589844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The Python debugger (pdb) is useful for tracking down Exceptions because it allows you to examine the state of the program immediately before the error. You can read about pdb at <a href=\"http://docs.python.org/2/library/pdb.html\">http://docs.python.org/2/library/pdb.html</a>.</p>",
          "polygon": [
            [
              128.0478515625,
              546.046875
            ],
            [
              525.9375,
              546.046875
            ],
            [
              525.9375,
              581.0047912597656
            ],
            [
              128.0478515625,
              581.0047912597656
            ]
          ],
          "bbox": [
            128.0478515625,
            546.046875,
            525.9375,
            581.0047912597656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/217/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/SectionHeader/13",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.2.4 I added so many</b> print <b>statements I get inundated with output.</b></h4>",
          "polygon": [
            [
              128.0478515625,
              609.0523681640625
            ],
            [
              511.3203430175781,
              609.0523681640625
            ],
            [
              511.3203430175781,
              621.1488494873047
            ],
            [
              128.0478515625,
              621.1488494873047
            ]
          ],
          "bbox": [
            128.0478515625,
            609.0523681640625,
            511.3203430175781,
            621.1488494873047
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One of the problems with using print statements for debugging is that you can end up buried in output. There are two ways to proceed: simplify the output or simplify the program.</p>",
          "polygon": [
            [
              128.49609375,
              633.2216339111328
            ],
            [
              525.9375,
              633.2216339111328
            ],
            [
              525.9375,
              668.25
            ],
            [
              128.49609375,
              668.25
            ]
          ],
          "bbox": [
            128.49609375,
            633.2216339111328,
            525.9375,
            668.25
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/218/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To simplify the output, you can remove or comment out print statements that aren't helping, or combine them, or format the output so it is easier to understand.</p>",
          "polygon": [
            [
              128.3466796875,
              678.3046875
            ],
            [
              525.6024780273438,
              678.3046875
            ],
            [
              525.6024780273438,
              700.8348007202148
            ],
            [
              128.3466796875,
              700.8348007202148
            ]
          ],
          "bbox": [
            128.3466796875,
            678.3046875,
            525.6024780273438,
            700.8348007202148
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "4": "/page/218/SectionHeader/13"
      },
      "images": null
    },
    {
      "id": "/page/219/Page/135",
      "block_type": "Page",
      "html": "<content-ref src='/page/219/PageHeader/0'></content-ref><content-ref src='/page/219/PageHeader/15'></content-ref><content-ref src='/page/219/Text/1'></content-ref><content-ref src='/page/219/Text/2'></content-ref><content-ref src='/page/219/Text/3'></content-ref><content-ref src='/page/219/Text/4'></content-ref><content-ref src='/page/219/SectionHeader/5'></content-ref><content-ref src='/page/219/Text/6'></content-ref><content-ref src='/page/219/Text/7'></content-ref><content-ref src='/page/219/Text/8'></content-ref><content-ref src='/page/219/SectionHeader/9'></content-ref><content-ref src='/page/219/Text/10'></content-ref><content-ref src='/page/219/ListGroup/134'></content-ref><content-ref src='/page/219/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/219/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.89306640625
            ],
            [
              482.90625,
              59.89306640625
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.89306640625,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/219/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.53955078125,
              60.08642578125
            ],
            [
              102.87158203125,
              60.08642578125
            ],
            [
              102.87158203125,
              69.94775390625
            ],
            [
              85.53955078125,
              69.94775390625
            ]
          ],
          "bbox": [
            85.53955078125,
            60.08642578125,
            102.87158203125,
            69.94775390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To simplify the program, there are several things you can do. First, scale down the problem the program is working on. For example, if you are searching a list, search a <i>small</i> list. If the program takes input from the user, give it the simplest input that causes the problem.</p>",
          "polygon": [
            [
              85.0166015625,
              87.25341796875
            ],
            [
              484.1015625,
              87.25341796875
            ],
            [
              484.1015625,
              123.1868896484375
            ],
            [
              85.0166015625,
              123.1868896484375
            ]
          ],
          "bbox": [
            85.0166015625,
            87.25341796875,
            484.1015625,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Second, clean up the program. Remove dead code and reorganize the program to make it as easy to read as possible. For example, if you suspect that the problem is in a deeply nested part of the program, try rewriting that part with simpler structure. If you suspect a large function, try splitting it into smaller functions and testing them separately.</p>",
          "polygon": [
            [
              85.3154296875,
              133.3212890625
            ],
            [
              482.90625,
              133.3212890625
            ],
            [
              482.90625,
              180.84283447265625
            ],
            [
              85.3154296875,
              180.84283447265625
            ]
          ],
          "bbox": [
            85.3154296875,
            133.3212890625,
            482.90625,
            180.84283447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Often the process of finding the minimal test case leads you to the bug. If you find that a program works in one situation but not in another, that gives you a clue about what is going on.</p>",
          "polygon": [
            [
              85.46484375,
              191.232421875
            ],
            [
              483.205078125,
              191.232421875
            ],
            [
              483.205078125,
              226.423828125
            ],
            [
              85.46484375,
              226.423828125
            ]
          ],
          "bbox": [
            85.46484375,
            191.232421875,
            483.205078125,
            226.423828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Similarly, rewriting a piece of code can help you find subtle bugs. If you make a change that you think shouldn't affect the program, and it does, that can tip you off.</p>",
          "polygon": [
            [
              85.3154296875,
              236.28515625
            ],
            [
              482.90625,
              236.28515625
            ],
            [
              482.90625,
              259.57379150390625
            ],
            [
              85.3154296875,
              259.57379150390625
            ]
          ],
          "bbox": [
            85.3154296875,
            236.28515625,
            482.90625,
            259.57379150390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "4": "/page/218/SectionHeader/13"
          },
          "images": {}
        },
        {
          "id": "/page/219/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-219-0\"></span><b>A.3 Semantic errors</b></h3>",
          "polygon": [
            [
              86.2119140625,
              290.8125
            ],
            [
              225.7646484375,
              290.8125
            ],
            [
              225.7646484375,
              306.06982421875
            ],
            [
              86.2119140625,
              306.06982421875
            ]
          ],
          "bbox": [
            86.2119140625,
            290.8125,
            225.7646484375,
            306.06982421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In some ways, semantic errors are the hardest to debug, because the interpreter provides no information about what is wrong. Only you know what the program is supposed to do.</p>",
          "polygon": [
            [
              85.9130859375,
              319.236328125
            ],
            [
              483.50390625,
              319.236328125
            ],
            [
              483.50390625,
              342.052734375
            ],
            [
              85.9130859375,
              342.052734375
            ]
          ],
          "bbox": [
            85.9130859375,
            319.236328125,
            483.50390625,
            342.052734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first step is to make a connection between the program text and the behavior you are seeing. You need a hypothesis about what the program is actually doing. One of the things that makes that hard is that computers run so fast.</p>",
          "polygon": [
            [
              85.763671875,
              351.52734375
            ],
            [
              483.50390625,
              351.52734375
            ],
            [
              483.50390625,
              387.34576416015625
            ],
            [
              85.763671875,
              387.34576416015625
            ]
          ],
          "bbox": [
            85.763671875,
            351.52734375,
            483.50390625,
            387.34576416015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You will often wish that you could slow the program down to human speed, and with some debuggers you can. But the time it takes to insert a few well-placed print statements is often short compared to setting up the debugger, inserting and removing breakpoints, and \"stepping\" the program to where the error is occurring.</p>",
          "polygon": [
            [
              85.9130859375,
              397.546875
            ],
            [
              483.50390625,
              397.546875
            ],
            [
              483.50390625,
              445.00177001953125
            ],
            [
              85.9130859375,
              445.00177001953125
            ]
          ],
          "bbox": [
            85.9130859375,
            397.546875,
            483.50390625,
            445.00177001953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/219/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.3.1 My program doesn't work.</b></h4>",
          "polygon": [
            [
              85.68896484375,
              472.18359375
            ],
            [
              270.8448791503906,
              472.18359375
            ],
            [
              270.8448791503906,
              485.61285400390625
            ],
            [
              85.68896484375,
              485.61285400390625
            ]
          ],
          "bbox": [
            85.68896484375,
            472.18359375,
            270.8448791503906,
            485.61285400390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/219/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You should ask yourself these questions:</p>",
          "polygon": [
            [
              85.763671875,
              497.3203125
            ],
            [
              264.86004638671875,
              497.3203125
            ],
            [
              264.86004638671875,
              508.1484375
            ],
            [
              85.763671875,
              508.1484375
            ]
          ],
          "bbox": [
            85.763671875,
            497.3203125,
            264.86004638671875,
            508.1484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/219/ListGroup/134",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/219/ListItem/11'></content-ref><content-ref src='/page/219/ListItem/12'></content-ref><content-ref src='/page/219/ListItem/13'></content-ref></ul></p>",
          "polygon": [
            [
              100.28802490234375,
              522.45703125
            ],
            [
              484.400390625,
              522.45703125
            ],
            [
              484.400390625,
              650.5758056640625
            ],
            [
              100.28802490234375,
              650.5758056640625
            ]
          ],
          "bbox": [
            100.28802490234375,
            522.45703125,
            484.400390625,
            650.5758056640625
          ],
          "children": [
            {
              "id": "/page/219/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Is there something the program was supposed to do but which doesn't seem to be happening? Find the section of the code that performs that function and make sure it is executing when you think it should.</li>",
              "polygon": [
                [
                  100.28802490234375,
                  522.45703125
                ],
                [
                  484.400390625,
                  522.45703125
                ],
                [
                  484.400390625,
                  558.2757873535156
                ],
                [
                  100.28802490234375,
                  558.2757873535156
                ]
              ],
              "bbox": [
                100.28802490234375,
                522.45703125,
                484.400390625,
                558.2757873535156
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/219/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/219/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Is something happening that shouldn't? Find code in your program that performs that function and see if it is executing when it shouldn't.</li>",
              "polygon": [
                [
                  100.28802490234375,
                  569.25
                ],
                [
                  483.802734375,
                  569.25
                ],
                [
                  483.802734375,
                  592.453125
                ],
                [
                  100.28802490234375,
                  592.453125
                ]
              ],
              "bbox": [
                100.28802490234375,
                569.25,
                483.802734375,
                592.453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/219/SectionHeader/9"
              },
              "images": {}
            },
            {
              "id": "/page/219/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Is a section of code producing an effect that is not what you expected? Make sure that you understand the code in question, especially if it involves invocations to functions or methods in other Python modules. Read the documentation for the functions you invoke. Try them out by writing simple test cases and checking the results.</li>",
              "polygon": [
                [
                  100.28802490234375,
                  602.5078125
                ],
                [
                  483.802734375,
                  602.5078125
                ],
                [
                  483.802734375,
                  650.5758056640625
                ],
                [
                  100.28802490234375,
                  650.5758056640625
                ]
              ],
              "bbox": [
                100.28802490234375,
                602.5078125,
                483.802734375,
                650.5758056640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/219/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/219/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In order to program, you need to have a mental model of how programs work. If you write a program that doesn't do what you expect, very often the problem is not in the program; it's in your mental model.</p>",
          "polygon": [
            [
              85.166015625,
              665.15625
            ],
            [
              483.50390625,
              665.15625
            ],
            [
              483.50390625,
              700.8348159790039
            ],
            [
              85.166015625,
              700.8348159790039
            ]
          ],
          "bbox": [
            85.166015625,
            665.15625,
            483.50390625,
            700.8348159790039
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "3": "/page/219/SectionHeader/5",
        "4": "/page/219/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/220/Page/168",
      "block_type": "Page",
      "html": "<content-ref src='/page/220/PageHeader/0'></content-ref><content-ref src='/page/220/PageHeader/20'></content-ref><content-ref src='/page/220/Text/1'></content-ref><content-ref src='/page/220/Text/2'></content-ref><content-ref src='/page/220/SectionHeader/3'></content-ref><content-ref src='/page/220/Text/4'></content-ref><content-ref src='/page/220/Text/5'></content-ref><content-ref src='/page/220/Code/6'></content-ref><content-ref src='/page/220/Text/7'></content-ref><content-ref src='/page/220/Code/8'></content-ref><content-ref src='/page/220/Text/9'></content-ref><content-ref src='/page/220/Text/10'></content-ref><content-ref src='/page/220/TextInlineMath/11'></content-ref><content-ref src='/page/220/Text/12'></content-ref><content-ref src='/page/220/Text/13'></content-ref><content-ref src='/page/220/TextInlineMath/14'></content-ref><content-ref src='/page/220/Text/15'></content-ref><content-ref src='/page/220/SectionHeader/16'></content-ref><content-ref src='/page/220/Text/17'></content-ref><content-ref src='/page/220/Code/18'></content-ref><content-ref src='/page/220/Text/19'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/220/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.09375,
              60.76318359375
            ],
            [
              525.6033935546875,
              60.76318359375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.09375,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.09375,
            60.76318359375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/220/PageHeader/20",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.6181640625
            ],
            [
              525.638671875,
              60.6181640625
            ],
            [
              525.638671875,
              70.0927734375
            ],
            [
              510.099609375,
              70.0927734375
            ]
          ],
          "bbox": [
            510.099609375,
            60.6181640625,
            525.638671875,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The best way to correct your mental model is to break the program into its components (usually the functions and methods) and test each component independently. Once you find the discrepancy between your model and reality, you can solve the problem.</p>",
          "polygon": [
            [
              128.0478515625,
              87.83349609375
            ],
            [
              525.9375,
              87.83349609375
            ],
            [
              525.9375,
              123.1868896484375
            ],
            [
              128.0478515625,
              123.1868896484375
            ]
          ],
          "bbox": [
            128.0478515625,
            87.83349609375,
            525.9375,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Of course, you should be building and testing components as you develop the program. If you encounter a problem, there should be only a small amount of new code that is not known to be correct.</p>",
          "polygon": [
            [
              129.09375,
              131.9677734375
            ],
            [
              525.9375,
              131.9677734375
            ],
            [
              525.9375,
              166.6558837890625
            ],
            [
              129.09375,
              166.6558837890625
            ]
          ],
          "bbox": [
            129.09375,
            131.9677734375,
            525.9375,
            166.6558837890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/219/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/220/SectionHeader/3",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.3.2 I've got a big hairy expression and it doesn't do what I expect.</b></h4>",
          "polygon": [
            [
              129.392578125,
              190.3623046875
            ],
            [
              504.9574279785156,
              190.3623046875
            ],
            [
              504.9574279785156,
              202.9779052734375
            ],
            [
              129.392578125,
              202.9779052734375
            ]
          ],
          "bbox": [
            129.392578125,
            190.3623046875,
            504.9574279785156,
            202.9779052734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Writing complex expressions is fine as long as they are readable, but they can be hard to debug. It is often a good idea to break a complex expression into a series of assignments to temporary variables.</p>",
          "polygon": [
            [
              129.392578125,
              212.30859375
            ],
            [
              525.6033935546875,
              212.30859375
            ],
            [
              525.6033935546875,
              247.40191650390625
            ],
            [
              129.392578125,
              247.40191650390625
            ]
          ],
          "bbox": [
            129.392578125,
            212.30859375,
            525.6033935546875,
            247.40191650390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For example:</p>",
          "polygon": [
            [
              129.60000610351562,
              255.814453125
            ],
            [
              188.560546875,
              255.814453125
            ],
            [
              188.560546875,
              266.48291015625
            ],
            [
              129.60000610351562,
              266.48291015625
            ]
          ],
          "bbox": [
            129.60000610351562,
            255.814453125,
            188.560546875,
            266.48291015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Code/6",
          "block_type": "Code",
          "html": "<pre>self.hands[i].addCard(self.hands[self.findNeighbor(i)].popCard())</pre>",
          "polygon": [
            [
              128.9443359375,
              271.4765625
            ],
            [
              469.60369873046875,
              271.4765625
            ],
            [
              469.60369873046875,
              281.44232177734375
            ],
            [
              128.9443359375,
              281.44232177734375
            ]
          ],
          "bbox": [
            128.9443359375,
            271.4765625,
            469.60369873046875,
            281.44232177734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This can be rewritten as:</p>",
          "polygon": [
            [
              129.2431640625,
              285.78515625
            ],
            [
              236.50868225097656,
              285.78515625
            ],
            [
              236.50868225097656,
              296.7008972167969
            ],
            [
              129.2431640625,
              296.7008972167969
            ]
          ],
          "bbox": [
            129.2431640625,
            285.78515625,
            236.50868225097656,
            296.7008972167969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Code/8",
          "block_type": "Code",
          "html": "<pre>neighbor = self.findNeighbor(i)\npickedCard = self.hands[neighbor].popCard()\nself.hands[i].addCard(pickedCard)</pre>",
          "polygon": [
            [
              129.09375,
              301.69775390625
            ],
            [
              354.5255432128906,
              301.69775390625
            ],
            [
              354.5255432128906,
              336.04833984375
            ],
            [
              129.09375,
              336.04833984375
            ]
          ],
          "bbox": [
            129.09375,
            301.69775390625,
            354.5255432128906,
            336.04833984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The explicit version is easier to read because the variable names provide additional documentation, and it is easier to debug because you can check the types of the intermediate variables and display their values.</p>",
          "polygon": [
            [
              129.60000610351562,
              341.0859375
            ],
            [
              525.6034545898438,
              341.0859375
            ],
            [
              525.6034545898438,
              375.6959228515625
            ],
            [
              129.60000610351562,
              375.6959228515625
            ]
          ],
          "bbox": [
            129.60000610351562,
            341.0859375,
            525.6034545898438,
            375.6959228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Another problem that can occur with big expressions is that the order of evaluation may not be what you expect. For example, if you are translating the expression <i>x</i> 2<i>π</i> into Python, you might write:</p>",
          "polygon": [
            [
              129.392578125,
              384.01171875
            ],
            [
              525.638671875,
              384.01171875
            ],
            [
              525.638671875,
              419.1648864746094
            ],
            [
              129.392578125,
              419.1648864746094
            ]
          ],
          "bbox": [
            129.392578125,
            384.01171875,
            525.638671875,
            419.1648864746094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/TextInlineMath/11",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">y = x / 2 * math.pi</p>",
          "polygon": [
            [
              128.9443359375,
              424.1617431640625
            ],
            [
              228.9769287109375,
              424.1617431640625
            ],
            [
              228.9769287109375,
              434.28515625
            ],
            [
              128.9443359375,
              434.28515625
            ]
          ],
          "bbox": [
            128.9443359375,
            424.1617431640625,
            228.9769287109375,
            434.28515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">That is not correct because multiplication and division have the same precedence and are evaluated from left to right. So this expression computes <i>x</i><i>π</i>/2.</p>",
          "polygon": [
            [
              129.392578125,
              438.5390625
            ],
            [
              525.638671875,
              438.5390625
            ],
            [
              525.638671875,
              462.38653564453125
            ],
            [
              129.392578125,
              462.38653564453125
            ]
          ],
          "bbox": [
            129.392578125,
            438.5390625,
            525.638671875,
            462.38653564453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A good way to debug expressions is to add parentheses to make the order of evaluation explicit:</p>",
          "polygon": [
            [
              129.392578125,
              469.86328125
            ],
            [
              525.638671875,
              469.86328125
            ],
            [
              525.638671875,
              492.8518981933594
            ],
            [
              129.392578125,
              492.8518981933594
            ]
          ],
          "bbox": [
            129.392578125,
            469.86328125,
            525.638671875,
            492.8518981933594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/TextInlineMath/14",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">y = x / (2 * math.pi)</p>",
          "polygon": [
            [
              131.3349609375,
              497.8487548828125
            ],
            [
              244.6666259765625,
              497.8487548828125
            ],
            [
              244.6666259765625,
              508.1484375
            ],
            [
              131.3349609375,
              508.1484375
            ]
          ],
          "bbox": [
            131.3349609375,
            497.8487548828125,
            244.6666259765625,
            508.1484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Whenever you are not sure of the order of evaluation, use parentheses. Not only will the program be correct (in the sense of doing what you intended), it will also be more readable for other people who haven't memorized the rules of precedence.</p>",
          "polygon": [
            [
              129.2431640625,
              513.1073303222656
            ],
            [
              525.9375,
              513.1073303222656
            ],
            [
              525.9375,
              547.4589233398438
            ],
            [
              129.2431640625,
              547.4589233398438
            ]
          ],
          "bbox": [
            129.2431640625,
            513.1073303222656,
            525.9375,
            547.4589233398438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/3"
          },
          "images": {}
        },
        {
          "id": "/page/220/SectionHeader/16",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.3.3 I've got a function or method that doesn't return what I expect.</b></h4>",
          "polygon": [
            [
              128.3466796875,
              571.5703125
            ],
            [
              509.2732238769531,
              571.5703125
            ],
            [
              509.2732238769531,
              583.7809906005859
            ],
            [
              128.3466796875,
              583.7809906005859
            ]
          ],
          "bbox": [
            128.3466796875,
            571.5703125,
            509.2732238769531,
            583.7809906005859
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you have a return statement with a complex expression, you don't have a chance to print the return value before returning. Again, you can use a temporary variable. For example, instead of:</p>",
          "polygon": [
            [
              128.197265625,
              593.61328125
            ],
            [
              525.638671875,
              593.61328125
            ],
            [
              525.638671875,
              628.2049255371094
            ],
            [
              128.197265625,
              628.2049255371094
            ]
          ],
          "bbox": [
            128.197265625,
            593.61328125,
            525.638671875,
            628.2049255371094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/220/Code/18",
          "block_type": "Code",
          "html": "<pre>return self.hands[i].removeMatches()\nyou could write:\ncount = self.hands[i].removeMatches()\nreturn count</pre>",
          "polygon": [
            [
              128.27197265625,
              633.2017669677734
            ],
            [
              328.412109375,
              633.2017669677734
            ],
            [
              328.412109375,
              686.8125
            ],
            [
              128.27197265625,
              686.8125
            ]
          ],
          "bbox": [
            128.27197265625,
            633.2017669677734,
            328.412109375,
            686.8125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/220/Text/19",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Now you have the opportunity to display the value of count before returning.</p>",
          "polygon": [
            [
              128.794921875,
              690.6796875
            ],
            [
              473.15203857421875,
              690.6796875
            ],
            [
              473.15203857421875,
              700.8349227905273
            ],
            [
              128.794921875,
              700.8349227905273
            ]
          ],
          "bbox": [
            128.794921875,
            690.6796875,
            473.15203857421875,
            700.8349227905273
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/16"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "3": "/page/219/SectionHeader/5",
        "4": "/page/220/SectionHeader/16"
      },
      "images": null
    },
    {
      "id": "/page/221/Page/120",
      "block_type": "Page",
      "html": "<content-ref src='/page/221/PageHeader/0'></content-ref><content-ref src='/page/221/PageHeader/17'></content-ref><content-ref src='/page/221/SectionHeader/1'></content-ref><content-ref src='/page/221/Text/2'></content-ref><content-ref src='/page/221/ListGroup/119'></content-ref><content-ref src='/page/221/Text/6'></content-ref><content-ref src='/page/221/Text/7'></content-ref><content-ref src='/page/221/SectionHeader/8'></content-ref><content-ref src='/page/221/Text/9'></content-ref><content-ref src='/page/221/Text/10'></content-ref><content-ref src='/page/221/Text/11'></content-ref><content-ref src='/page/221/ListGroup/120'></content-ref><content-ref src='/page/221/Text/15'></content-ref><content-ref src='/page/221/Text/16'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/221/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.79638671875
            ],
            [
              483.50390625,
              59.79638671875
            ],
            [
              483.50390625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.79638671875,
            483.50390625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/221/PageHeader/17",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.24072265625,
              59.69970703125
            ],
            [
              102.57275390625,
              59.69970703125
            ],
            [
              102.57275390625,
              70.33447265625
            ],
            [
              85.24072265625,
              70.33447265625
            ]
          ],
          "bbox": [
            85.24072265625,
            59.69970703125,
            102.57275390625,
            70.33447265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/220/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/221/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.3.4 I'm really, really stuck and I need help.</b></h4>",
          "polygon": [
            [
              84.79248046875,
              85.80322265625
            ],
            [
              339.767578125,
              85.80322265625
            ],
            [
              339.767578125,
              99.24493408203125
            ],
            [
              84.79248046875,
              99.24493408203125
            ]
          ],
          "bbox": [
            84.79248046875,
            85.80322265625,
            339.767578125,
            99.24493408203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/221/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">First, try getting away from the computer for a few minutes. Computers emit waves that affect the brain, causing these symptoms:</p>",
          "polygon": [
            [
              84.8671875,
              108.66796875
            ],
            [
              484.69921875,
              108.66796875
            ],
            [
              484.69921875,
              132.53094482421875
            ],
            [
              84.8671875,
              132.53094482421875
            ]
          ],
          "bbox": [
            84.8671875,
            108.66796875,
            484.69921875,
            132.53094482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/221/ListGroup/119",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/221/ListItem/3'></content-ref><content-ref src='/page/221/ListItem/4'></content-ref><content-ref src='/page/221/ListItem/5'></content-ref></ul></p>",
          "polygon": [
            [
              99.9580078125,
              144.1494140625
            ],
            [
              484.1015625,
              144.1494140625
            ],
            [
              484.1015625,
              221.38494873046875
            ],
            [
              99.9580078125,
              221.38494873046875
            ]
          ],
          "bbox": [
            99.9580078125,
            144.1494140625,
            484.1015625,
            221.38494873046875
          ],
          "children": [
            {
              "id": "/page/221/ListItem/3",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Frustration and rage.</li>",
              "polygon": [
                [
                  100.03271484375,
                  144.1494140625
                ],
                [
                  204.697265625,
                  144.1494140625
                ],
                [
                  204.697265625,
                  156.66693115234375
                ],
                [
                  100.03271484375,
                  156.66693115234375
                ]
              ],
              "bbox": [
                100.03271484375,
                144.1494140625,
                204.697265625,
                156.66693115234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/221/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/221/ListItem/4",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Superstitious beliefs (\"the computer hates me\") and magical thinking (\"the program only works when I wear my hat backward\").</li>",
              "polygon": [
                [
                  99.9580078125,
                  164.935546875
                ],
                [
                  483.50390625,
                  164.935546875
                ],
                [
                  483.50390625,
                  189.02593994140625
                ],
                [
                  99.9580078125,
                  189.02593994140625
                ]
              ],
              "bbox": [
                99.9580078125,
                164.935546875,
                483.50390625,
                189.02593994140625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/221/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/221/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Random walk programming (the attempt to program by writing every possible program and choosing the one that does the right thing).</li>",
              "polygon": [
                [
                  100.28800201416016,
                  196.83984375
                ],
                [
                  484.1015625,
                  196.83984375
                ],
                [
                  484.1015625,
                  221.38494873046875
                ],
                [
                  100.28800201416016,
                  221.38494873046875
                ]
              ],
              "bbox": [
                100.28800201416016,
                196.83984375,
                484.1015625,
                221.38494873046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/221/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/221/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you find yourself suffering from any of these symptoms, get up and go for a walk. When you are calm, think about the program. What is it doing? What are some possible causes of that behavior? When was the last time you had a working program, and what did you do next?</p>",
          "polygon": [
            [
              85.763671875,
              233.96484375
            ],
            [
              484.400390625,
              233.96484375
            ],
            [
              484.400390625,
              282.1039123535156
            ],
            [
              85.763671875,
              282.1039123535156
            ]
          ],
          "bbox": [
            85.763671875,
            233.96484375,
            484.400390625,
            282.1039123535156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/221/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Sometimes it just takes time to find a bug. I often find bugs when I am away from the computer and let my mind wander. Some of the best places to find bugs are trains, showers, and in bed, just before you fall asleep.</p>",
          "polygon": [
            [
              85.9130859375,
              290.0390625
            ],
            [
              484.69921875,
              290.0390625
            ],
            [
              484.69921875,
              326.6299133300781
            ],
            [
              85.9130859375,
              326.6299133300781
            ]
          ],
          "bbox": [
            85.9130859375,
            290.0390625,
            484.69921875,
            326.6299133300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/221/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><b>A.3.5 No, I really need help.</b></h4>",
          "polygon": [
            [
              85.9130859375,
              351.333984375
            ],
            [
              249.0732421875,
              351.333984375
            ],
            [
              249.0732421875,
              364.482421875
            ],
            [
              85.9130859375,
              364.482421875
            ]
          ],
          "bbox": [
            85.9130859375,
            351.333984375,
            249.0732421875,
            364.482421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/221/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">It happens. Even the best programmers occasionally get stuck. Sometimes you work on a program so long that you can't see the error. A fresh pair of eyes is just the thing.</p>",
          "polygon": [
            [
              85.763671875,
              373.5703125
            ],
            [
              483.802734375,
              373.5703125
            ],
            [
              483.802734375,
              397.71893310546875
            ],
            [
              85.763671875,
              397.71893310546875
            ]
          ],
          "bbox": [
            85.763671875,
            373.5703125,
            483.802734375,
            397.71893310546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/221/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Before you bring someone else in, make sure you are prepared. Your program should be as simple as possible, and you should be working on the smallest input that causes the error. You should have print statements in the appropriate places (and the output they produce should be comprehensible). You should understand the problem well enough to describe it concisely.</p>",
          "polygon": [
            [
              85.9130859375,
              406.0546875
            ],
            [
              484.1015625,
              406.0546875
            ],
            [
              484.1015625,
              466.6329345703125
            ],
            [
              85.9130859375,
              466.6329345703125
            ]
          ],
          "bbox": [
            85.9130859375,
            406.0546875,
            484.1015625,
            466.6329345703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/221/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you bring someone in to help, be sure to give them the information they need:</p>",
          "polygon": [
            [
              85.9130859375,
              474.50390625
            ],
            [
              459.0,
              474.50390625
            ],
            [
              459.0,
              486.77093505859375
            ],
            [
              85.9130859375,
              486.77093505859375
            ]
          ],
          "bbox": [
            85.9130859375,
            474.50390625,
            459.0,
            486.77093505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/221/ListGroup/120",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/221/ListItem/12'></content-ref><content-ref src='/page/221/ListItem/13'></content-ref><content-ref src='/page/221/ListItem/14'></content-ref></ul></p>",
          "polygon": [
            [
              99.80859375,
              498.48046875
            ],
            [
              484.998046875,
              498.48046875
            ],
            [
              484.998046875,
              563.4299468994141
            ],
            [
              99.80859375,
              563.4299468994141
            ]
          ],
          "bbox": [
            99.80859375,
            498.48046875,
            484.998046875,
            563.4299468994141
          ],
          "children": [
            {
              "id": "/page/221/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> If there is an error message, what is it and what part of the program does it indicate?</li>",
              "polygon": [
                [
                  100.2568359375,
                  498.48046875
                ],
                [
                  482.38360595703125,
                  498.48046875
                ],
                [
                  482.38360595703125,
                  510.9069519042969
                ],
                [
                  100.2568359375,
                  510.9069519042969
                ]
              ],
              "bbox": [
                100.2568359375,
                498.48046875,
                482.38360595703125,
                510.9069519042969
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/221/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/221/ListItem/13",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> What was the last thing you did before this error occurred? What were the last lines of code that you wrote, or what is the new test case that fails?</li>",
              "polygon": [
                [
                  99.80859375,
                  518.9765625
                ],
                [
                  484.998046875,
                  518.9765625
                ],
                [
                  484.998046875,
                  543.2649536132812
                ],
                [
                  99.80859375,
                  543.2649536132812
                ]
              ],
              "bbox": [
                99.80859375,
                518.9765625,
                484.998046875,
                543.2649536132812
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/221/SectionHeader/8"
              },
              "images": {}
            },
            {
              "id": "/page/221/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> What have you tried so far, and what have you learned?</li>",
              "polygon": [
                [
                  100.28800964355469,
                  551.07421875
                ],
                [
                  359.490234375,
                  551.07421875
                ],
                [
                  359.490234375,
                  563.4299468994141
                ],
                [
                  100.28800964355469,
                  563.4299468994141
                ]
              ],
              "bbox": [
                100.28800964355469,
                551.07421875,
                359.490234375,
                563.4299468994141
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/214/SectionHeader/1",
                "3": "/page/219/SectionHeader/5",
                "4": "/page/221/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/221/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When you find the bug, take a second to think about what you could have done to find it faster. Next time you see something similar, you will be able to find the bug more quickly.</p>",
          "polygon": [
            [
              86.361328125,
              575.4375
            ],
            [
              484.400390625,
              575.4375
            ],
            [
              484.400390625,
              599.7599487304688
            ],
            [
              86.361328125,
              599.7599487304688
            ]
          ],
          "bbox": [
            86.361328125,
            575.4375,
            484.400390625,
            599.7599487304688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/221/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Remember, the goal is not just to make the program work. The goal is to learn how to make the program work.</p>",
          "polygon": [
            [
              85.763671875,
              608.30859375
            ],
            [
              484.69921875,
              608.30859375
            ],
            [
              484.69921875,
              632.0919494628906
            ],
            [
              85.763671875,
              632.0919494628906
            ]
          ],
          "bbox": [
            85.763671875,
            608.30859375,
            484.69921875,
            632.0919494628906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "3": "/page/219/SectionHeader/5",
            "4": "/page/221/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/214/SectionHeader/1",
        "3": "/page/219/SectionHeader/5",
        "4": "/page/221/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/222/Page/128",
      "block_type": "Page",
      "html": "<content-ref src='/page/222/SectionHeader/0'></content-ref><content-ref src='/page/222/SectionHeader/1'></content-ref><content-ref src='/page/222/Text/2'></content-ref><content-ref src='/page/222/Text/3'></content-ref><content-ref src='/page/222/Text/4'></content-ref><content-ref src='/page/222/Text/5'></content-ref><content-ref src='/page/222/Text/6'></content-ref><content-ref src='/page/222/Text/7'></content-ref><content-ref src='/page/222/ListGroup/126'></content-ref><content-ref src='/page/222/Footnote/10'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/222/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-222-0\"></span><b>Appendix B</b></h2>",
          "polygon": [
            [
              128.12255859375,
              163.388671875
            ],
            [
              243.544921875,
              163.388671875
            ],
            [
              243.544921875,
              184.8819580078125
            ],
            [
              128.12255859375,
              184.8819580078125
            ]
          ],
          "bbox": [
            128.12255859375,
            163.388671875,
            243.544921875,
            184.8819580078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/214/SectionHeader/1",
            "2": "/page/222/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/222/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Analysis of Algorithms</b></h1>",
          "polygon": [
            [
              127.97314453125,
              218.689453125
            ],
            [
              393.9792175292969,
              218.689453125
            ],
            [
              393.9792175292969,
              244.46136474609375
            ],
            [
              127.97314453125,
              244.46136474609375
            ]
          ],
          "bbox": [
            127.97314453125,
            218.689453125,
            393.9792175292969,
            244.46136474609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/222/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This appendix is an edited excerpt from <i>Think Complexity</i>, by Allen B. Downey, also published by O'Reilly Media (2011). When you are done with this book, you might want to move on to that one.</p>",
          "polygon": [
            [
              153.7470703125,
              288.10546875
            ],
            [
              503.82421875,
              288.10546875
            ],
            [
              503.82421875,
              323.3669128417969
            ],
            [
              153.7470703125,
              323.3669128417969
            ]
          ],
          "bbox": [
            153.7470703125,
            288.10546875,
            503.82421875,
            323.3669128417969
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/222/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Analysis of algorithms</b> is a branch of computer science that studies the performance of algorithms, especially their run time and space requirements. See <a href=\"http://en.wikipedia.org/wiki/Analysis_of_algorithms\">http://en.wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Analysis_of_algorithms\">org/wiki/Analysis_of_algorithms</a>.</p>",
          "polygon": [
            [
              129.392578125,
              337.21875
            ],
            [
              526.833984375,
              337.21875
            ],
            [
              526.833984375,
              372.07391357421875
            ],
            [
              129.392578125,
              372.07391357421875
            ]
          ],
          "bbox": [
            129.392578125,
            337.21875,
            526.833984375,
            372.07391357421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/222/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The practical goal of algorithm analysis is to predict the performance of different algorithms in order to guide design decisions.</p>",
          "polygon": [
            [
              129.392578125,
              381.498046875
            ],
            [
              526.833984375,
              381.498046875
            ],
            [
              526.833984375,
              404.5078125
            ],
            [
              129.392578125,
              404.5078125
            ]
          ],
          "bbox": [
            129.392578125,
            381.498046875,
            526.833984375,
            404.5078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/222/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">During the 2008 United States Presidential Campaign, candidate Barack Obama was asked to perform an impromptu analysis when he visited Google. Chief executive Eric Schmidt jokingly asked him for \"the most efficient way to sort a million 32-bit integers.\" Obama had apparently been tipped off, because he quickly replied, \"I think the bubble sort would be the wrong way to go.\" See <a href=\"http://www.youtube.com/watch?v=k4RRi_ntQc8\">http://www.youtube.com/watch?v=k4RRi_ntQc8</a>.</p>",
          "polygon": [
            [
              129.09375,
              414.5625
            ],
            [
              527.1328125,
              414.5625
            ],
            [
              527.1328125,
              473.51690673828125
            ],
            [
              129.09375,
              473.51690673828125
            ]
          ],
          "bbox": [
            129.09375,
            414.5625,
            527.1328125,
            473.51690673828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/222/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This is true: bubble sort is conceptually simple but slow for large datasets. The answer Schmidt was probably looking for is \"radix sort\" (<a href=\"http://en.wikipedia.org/wiki/Radix_sort\">http://en.wikipedia.org/wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Radix_sort\">Radix_sort</a>) <a href=\"#page-222-1\">1</a> .</p>",
          "polygon": [
            [
              128.49609375,
              483.3984375
            ],
            [
              527.1328125,
              483.3984375
            ],
            [
              527.1328125,
              518.203125
            ],
            [
              128.49609375,
              518.203125
            ]
          ],
          "bbox": [
            128.49609375,
            483.3984375,
            527.1328125,
            518.203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/222/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The goal of algorithm analysis is to make meaningful comparisons between algorithms, but there are some problems:</p>",
          "polygon": [
            [
              128.794921875,
              527.484375
            ],
            [
              526.833984375,
              527.484375
            ],
            [
              526.833984375,
              550.5708923339844
            ],
            [
              128.794921875,
              550.5708923339844
            ]
          ],
          "bbox": [
            128.794921875,
            527.484375,
            526.833984375,
            550.5708923339844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/222/ListGroup/126",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/222/ListItem/8'></content-ref><content-ref src='/page/222/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              141.345703125,
              563.44921875
            ],
            [
              526.833984375,
              563.44921875
            ],
            [
              526.833984375,
              644.2734375
            ],
            [
              141.345703125,
              644.2734375
            ]
          ],
          "bbox": [
            141.345703125,
            563.44921875,
            526.833984375,
            644.2734375
          ],
          "children": [
            {
              "id": "/page/222/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> The relative performance of the algorithms might depend on characteristics of the hardware, so one algorithm might be faster on Machine A, another on Machine B. The general solution to this problem is to specify a <b>machine model</b> and analyze the number of steps, or operations, an algorithm requires under a given model.</li>",
              "polygon": [
                [
                  143.138671875,
                  563.44921875
                ],
                [
                  526.833984375,
                  563.44921875
                ],
                [
                  526.833984375,
                  611.4718933105469
                ],
                [
                  143.138671875,
                  611.4718933105469
                ]
              ],
              "bbox": [
                143.138671875,
                563.44921875,
                526.833984375,
                611.4718933105469
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/222/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Relative performance might depend on the details of the dataset. For example, some sorting algorithms run faster if the data are already partially sorted; other algorithms</li>",
              "polygon": [
                [
                  141.345703125,
                  621.0703125
                ],
                [
                  526.833984375,
                  621.0703125
                ],
                [
                  526.833984375,
                  644.2734375
                ],
                [
                  141.345703125,
                  644.2734375
                ]
              ],
              "bbox": [
                141.345703125,
                621.0703125,
                526.833984375,
                644.2734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/222/Footnote/10",
          "block_type": "Footnote",
          "html": "<p><span id=\"page-222-1\"></span><sup>1</sup> But if you get a question like this in an interview, I think a better answer is, \"The fastest way to sort a million integers is to use whatever sort function is provided by the language I'm using. Its performance is good enough for the vast majority of applications, but if it turned out that my application was too slow, I would use a profiler to see where the time was being spent. If it looked like a faster sort algorithm would have a significant effect on performance, then I would look around for a good implementation of radix sort.\"</p>",
          "polygon": [
            [
              129.09375,
              652.9791564941406
            ],
            [
              526.53515625,
              652.9791564941406
            ],
            [
              526.53515625,
              700.2713394165039
            ],
            [
              129.09375,
              700.2713394165039
            ]
          ],
          "bbox": [
            129.09375,
            652.9791564941406,
            526.53515625,
            700.2713394165039
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/223/Page/297",
      "block_type": "Page",
      "html": "<content-ref src='/page/223/PageHeader/0'></content-ref><content-ref src='/page/223/PageHeader/15'></content-ref><content-ref src='/page/223/Text/1'></content-ref><content-ref src='/page/223/ListItem/2'></content-ref><content-ref src='/page/223/Text/3'></content-ref><content-ref src='/page/223/Text/4'></content-ref><content-ref src='/page/223/SectionHeader/5'></content-ref><content-ref src='/page/223/Text/6'></content-ref><content-ref src='/page/223/Text/7'></content-ref><content-ref src='/page/223/Table/8'></content-ref><content-ref src='/page/223/Text/9'></content-ref><content-ref src='/page/223/Text/10'></content-ref><content-ref src='/page/223/Text/11'></content-ref><content-ref src='/page/223/Text/12'></content-ref><content-ref src='/page/223/Text/13'></content-ref><content-ref src='/page/223/Text/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/223/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.66650390625
            ],
            [
              482.90625,
              60.66650390625
            ],
            [
              482.90625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.66650390625,
            482.90625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/223/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.8671875,
              60.76318359375
            ],
            [
              101.900390625,
              60.76318359375
            ],
            [
              101.900390625,
              70.43115234375
            ],
            [
              84.8671875,
              70.43115234375
            ]
          ],
          "bbox": [
            84.8671875,
            60.76318359375,
            101.900390625,
            70.43115234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">run slower in this case. A common way to avoid this problem is to analyze the <b>worst</b> <b>case</b> scenario. It is sometimes useful to analyze average case performance, but that's usually harder, and it might not be obvious what set of cases to average over.</p>",
          "polygon": [
            [
              111.0146484375,
              88.41357421875
            ],
            [
              482.90625,
              88.41357421875
            ],
            [
              482.90625,
              123.1868896484375
            ],
            [
              111.0146484375,
              123.1868896484375
            ]
          ],
          "bbox": [
            111.0146484375,
            88.41357421875,
            482.90625,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/223/ListItem/2",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"> Relative performance also depends on the size of the problem. A sorting algorithm that is fast for small lists might be slow for long lists. The usual solution to this problem is to express run time (or number of operations) as a function of problem size, and to compare the functions <b>asymptotically</b> as the problem size increases.</li>",
          "polygon": [
            [
              100.28800964355469,
              131.09765625
            ],
            [
              482.4037780761719,
              131.09765625
            ],
            [
              482.4037780761719,
              178.78692626953125
            ],
            [
              100.28800964355469,
              178.78692626953125
            ]
          ],
          "bbox": [
            100.28800964355469,
            131.09765625,
            482.4037780761719,
            178.78692626953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The good thing about this kind of comparison that it lends itself to simple classification of algorithms. For example, if I know that the run time of Algorithm A tends to be proportional to the size of the input, <i>n</i>, and Algorithm B tends to be proportional to <i>n</i> 2 , then I expect A to be faster than B for large values of <i>n</i>.</p>",
          "polygon": [
            [
              85.166015625,
              188.4287109375
            ],
            [
              483.205078125,
              188.4287109375
            ],
            [
              483.205078125,
              235.866943359375
            ],
            [
              85.166015625,
              235.866943359375
            ]
          ],
          "bbox": [
            85.166015625,
            188.4287109375,
            483.205078125,
            235.866943359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This kind of analysis comes with some caveats, but we'll get to that later.</p>",
          "polygon": [
            [
              85.3154296875,
              243.826171875
            ],
            [
              405.8507080078125,
              243.826171875
            ],
            [
              405.8507080078125,
              254.658935546875
            ],
            [
              85.3154296875,
              254.658935546875
            ]
          ],
          "bbox": [
            85.3154296875,
            243.826171875,
            405.8507080078125,
            254.658935546875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/223/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h3><span id=\"page-223-0\"></span><b>B.1 Order of growth</b></h3>",
          "polygon": [
            [
              85.09130859375,
              281.337890625
            ],
            [
              228.603515625,
              281.337890625
            ],
            [
              228.603515625,
              296.4639892578125
            ],
            [
              85.09130859375,
              296.4639892578125
            ]
          ],
          "bbox": [
            85.09130859375,
            281.337890625,
            228.603515625,
            296.4639892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Suppose you have analyzed two algorithms and expressed their run times in terms of the size of the input: Algorithm A takes 100<i>n</i> + 1 steps to solve a problem with size <i>n</i>; Algorithm B takes <i>n</i> 2 + <i>n</i> + 1 steps.</p>",
          "polygon": [
            [
              85.0166015625,
              306.474609375
            ],
            [
              482.90625,
              306.474609375
            ],
            [
              482.90625,
              341.81591796875
            ],
            [
              85.0166015625,
              341.81591796875
            ]
          ],
          "bbox": [
            85.0166015625,
            306.474609375,
            482.90625,
            341.81591796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following table shows the run time of these algorithms for different problem sizes:</p>",
          "polygon": [
            [
              85.46484375,
              349.98046875
            ],
            [
              467.16064453125,
              349.98046875
            ],
            [
              467.16064453125,
              360.60791015625
            ],
            [
              85.46484375,
              360.60791015625
            ]
          ],
          "bbox": [
            85.46484375,
            349.98046875,
            467.16064453125,
            360.60791015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Table/8",
          "block_type": "Table",
          "html": "<table><tbody><tr><th>Input<br/>size</th><th>Run time of<br/>Algorithm A</th><th>Run time of<br/>Algorithm B</th></tr><tr><td>10</td><td>1 001</td><td>111</td></tr><tr><td>100</td><td>10 001</td><td>10 101</td></tr><tr><td>1 000</td><td>100 001</td><td>1 001 001</td></tr><tr><td>10 000</td><td>1 000 001</td><td>&gt; 1010</td></tr></tbody></table>",
          "polygon": [
            [
              84.64306640625,
              367.962890625
            ],
            [
              262.669921875,
              367.962890625
            ],
            [
              262.669921875,
              442.40625
            ],
            [
              84.64306640625,
              442.40625
            ]
          ],
          "bbox": [
            84.64306640625,
            367.962890625,
            262.669921875,
            442.40625
          ],
          "children": [
            {
              "id": "/page/223/TableCell/282",
              "block_type": "TableCell",
              "html": "<th>Input<br/>size</th>",
              "polygon": [
                [
                  84.64306640625,
                  367.962890625
                ],
                [
                  85.64306640625,
                  367.962890625
                ],
                [
                  85.64306640625,
                  368.962890625
                ],
                [
                  84.64306640625,
                  368.962890625
                ]
              ],
              "bbox": [
                84.64306640625,
                367.962890625,
                85.64306640625,
                368.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/283",
              "block_type": "TableCell",
              "html": "<th>Run time of<br/>Algorithm A</th>",
              "polygon": [
                [
                  85.64306640625,
                  367.962890625
                ],
                [
                  86.64306640625,
                  367.962890625
                ],
                [
                  86.64306640625,
                  368.962890625
                ],
                [
                  85.64306640625,
                  368.962890625
                ]
              ],
              "bbox": [
                85.64306640625,
                367.962890625,
                86.64306640625,
                368.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/284",
              "block_type": "TableCell",
              "html": "<th>Run time of<br/>Algorithm B</th>",
              "polygon": [
                [
                  86.64306640625,
                  367.962890625
                ],
                [
                  87.64306640625,
                  367.962890625
                ],
                [
                  87.64306640625,
                  368.962890625
                ],
                [
                  86.64306640625,
                  368.962890625
                ]
              ],
              "bbox": [
                86.64306640625,
                367.962890625,
                87.64306640625,
                368.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/285",
              "block_type": "TableCell",
              "html": "<td>10</td>",
              "polygon": [
                [
                  84.64306640625,
                  368.962890625
                ],
                [
                  85.64306640625,
                  368.962890625
                ],
                [
                  85.64306640625,
                  369.962890625
                ],
                [
                  84.64306640625,
                  369.962890625
                ]
              ],
              "bbox": [
                84.64306640625,
                368.962890625,
                85.64306640625,
                369.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/286",
              "block_type": "TableCell",
              "html": "<td>1 001</td>",
              "polygon": [
                [
                  85.64306640625,
                  368.962890625
                ],
                [
                  86.64306640625,
                  368.962890625
                ],
                [
                  86.64306640625,
                  369.962890625
                ],
                [
                  85.64306640625,
                  369.962890625
                ]
              ],
              "bbox": [
                85.64306640625,
                368.962890625,
                86.64306640625,
                369.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/287",
              "block_type": "TableCell",
              "html": "<td>111</td>",
              "polygon": [
                [
                  86.64306640625,
                  368.962890625
                ],
                [
                  87.64306640625,
                  368.962890625
                ],
                [
                  87.64306640625,
                  369.962890625
                ],
                [
                  86.64306640625,
                  369.962890625
                ]
              ],
              "bbox": [
                86.64306640625,
                368.962890625,
                87.64306640625,
                369.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/288",
              "block_type": "TableCell",
              "html": "<td>100</td>",
              "polygon": [
                [
                  84.64306640625,
                  369.962890625
                ],
                [
                  85.64306640625,
                  369.962890625
                ],
                [
                  85.64306640625,
                  370.962890625
                ],
                [
                  84.64306640625,
                  370.962890625
                ]
              ],
              "bbox": [
                84.64306640625,
                369.962890625,
                85.64306640625,
                370.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/289",
              "block_type": "TableCell",
              "html": "<td>10 001</td>",
              "polygon": [
                [
                  85.64306640625,
                  369.962890625
                ],
                [
                  86.64306640625,
                  369.962890625
                ],
                [
                  86.64306640625,
                  370.962890625
                ],
                [
                  85.64306640625,
                  370.962890625
                ]
              ],
              "bbox": [
                85.64306640625,
                369.962890625,
                86.64306640625,
                370.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/290",
              "block_type": "TableCell",
              "html": "<td>10 101</td>",
              "polygon": [
                [
                  86.64306640625,
                  369.962890625
                ],
                [
                  87.64306640625,
                  369.962890625
                ],
                [
                  87.64306640625,
                  370.962890625
                ],
                [
                  86.64306640625,
                  370.962890625
                ]
              ],
              "bbox": [
                86.64306640625,
                369.962890625,
                87.64306640625,
                370.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/291",
              "block_type": "TableCell",
              "html": "<td>1 000</td>",
              "polygon": [
                [
                  84.64306640625,
                  370.962890625
                ],
                [
                  85.64306640625,
                  370.962890625
                ],
                [
                  85.64306640625,
                  371.962890625
                ],
                [
                  84.64306640625,
                  371.962890625
                ]
              ],
              "bbox": [
                84.64306640625,
                370.962890625,
                85.64306640625,
                371.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/292",
              "block_type": "TableCell",
              "html": "<td>100 001</td>",
              "polygon": [
                [
                  85.64306640625,
                  370.962890625
                ],
                [
                  86.64306640625,
                  370.962890625
                ],
                [
                  86.64306640625,
                  371.962890625
                ],
                [
                  85.64306640625,
                  371.962890625
                ]
              ],
              "bbox": [
                85.64306640625,
                370.962890625,
                86.64306640625,
                371.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/293",
              "block_type": "TableCell",
              "html": "<td>1 001 001</td>",
              "polygon": [
                [
                  86.64306640625,
                  370.962890625
                ],
                [
                  87.64306640625,
                  370.962890625
                ],
                [
                  87.64306640625,
                  371.962890625
                ],
                [
                  86.64306640625,
                  371.962890625
                ]
              ],
              "bbox": [
                86.64306640625,
                370.962890625,
                87.64306640625,
                371.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/294",
              "block_type": "TableCell",
              "html": "<td>10 000</td>",
              "polygon": [
                [
                  84.64306640625,
                  371.962890625
                ],
                [
                  85.64306640625,
                  371.962890625
                ],
                [
                  85.64306640625,
                  372.962890625
                ],
                [
                  84.64306640625,
                  372.962890625
                ]
              ],
              "bbox": [
                84.64306640625,
                371.962890625,
                85.64306640625,
                372.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/295",
              "block_type": "TableCell",
              "html": "<td>1 000 001</td>",
              "polygon": [
                [
                  85.64306640625,
                  371.962890625
                ],
                [
                  86.64306640625,
                  371.962890625
                ],
                [
                  86.64306640625,
                  372.962890625
                ],
                [
                  85.64306640625,
                  372.962890625
                ]
              ],
              "bbox": [
                85.64306640625,
                371.962890625,
                86.64306640625,
                372.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/223/TableCell/296",
              "block_type": "TableCell",
              "html": "<td>&gt; 1010</td>",
              "polygon": [
                [
                  86.64306640625,
                  371.962890625
                ],
                [
                  87.64306640625,
                  371.962890625
                ],
                [
                  87.64306640625,
                  372.962890625
                ],
                [
                  86.64306640625,
                  372.962890625
                ]
              ],
              "bbox": [
                86.64306640625,
                371.962890625,
                87.64306640625,
                372.962890625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/223/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">At <i>n</i> = 10, Algorithm A looks pretty bad; it takes almost 10 times longer than Algorithm B. But for <i>n</i> = 100 they are about the same, and for larger values A is much better.</p>",
          "polygon": [
            [
              85.6142578125,
              449.6098327636719
            ],
            [
              482.90625,
              449.6098327636719
            ],
            [
              482.90625,
              472.7348937988281
            ],
            [
              85.6142578125,
              472.7348937988281
            ]
          ],
          "bbox": [
            85.6142578125,
            449.6098327636719,
            482.90625,
            472.7348937988281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The fundamental reason is that for large values of <i>n</i>, any function that contains an <i>n</i> 2 term will grow faster than a function whose leading term is <i>n</i>. The <b>leading term</b> is the term with the highest exponent.</p>",
          "polygon": [
            [
              85.763671875,
              479.66400146484375
            ],
            [
              482.607421875,
              479.66400146484375
            ],
            [
              482.607421875,
              515.9169006347656
            ],
            [
              85.763671875,
              515.9169006347656
            ]
          ],
          "bbox": [
            85.763671875,
            479.66400146484375,
            482.607421875,
            515.9169006347656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For Algorithm A, the leading term has a large coefficient, 100, which is why B does better than A for small <i>n</i>. But regardless of the coefficients, there will always be some value of <i>n</i> where <i>an</i>2 &gt; <i>bn</i>.</p>",
          "polygon": [
            [
              85.6142578125,
              524.00390625
            ],
            [
              482.4032897949219,
              524.00390625
            ],
            [
              482.4032897949219,
              559.097900390625
            ],
            [
              85.6142578125,
              559.097900390625
            ]
          ],
          "bbox": [
            85.6142578125,
            524.00390625,
            482.4032897949219,
            559.097900390625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The same argument applies to the non-leading terms. Even if the run time of Algorithm A were <i>n</i> + 1000000, it would still be better than Algorithm B for sufficiently large <i>n</i>.</p>",
          "polygon": [
            [
              85.6142578125,
              567.9273071289062
            ],
            [
              482.90625,
              567.9273071289062
            ],
            [
              482.90625,
              590.0839080810547
            ],
            [
              85.6142578125,
              590.0839080810547
            ]
          ],
          "bbox": [
            85.6142578125,
            567.9273071289062,
            482.90625,
            590.0839080810547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In general, we expect an algorithm with a smaller leading term to be a better algorithm for large problems, but for smaller problems, there may be a <b>crossover point</b> where another algorithm is better. The location of the crossover point depends on the details of the algorithms, the inputs, and the hardware, so it is usually ignored for purposes of algorithmic analysis. But that doesn't mean you can forget about it.</p>",
          "polygon": [
            [
              85.3154296875,
              598.25390625
            ],
            [
              482.90625,
              598.25390625
            ],
            [
              482.90625,
              657.6539154052734
            ],
            [
              85.3154296875,
              657.6539154052734
            ]
          ],
          "bbox": [
            85.3154296875,
            598.25390625,
            482.90625,
            657.6539154052734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/223/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If two algorithms have the same leading order term, it is hard to say which is better; again, the answer depends on the details. So for algorithmic analysis, functions with the same leading term are considered equivalent, even if they have different coefficients.</p>",
          "polygon": [
            [
              85.6142578125,
              665.54296875
            ],
            [
              482.90625,
              665.54296875
            ],
            [
              482.90625,
              700.8349227905273
            ],
            [
              85.6142578125,
              700.8349227905273
            ]
          ],
          "bbox": [
            85.6142578125,
            665.54296875,
            482.90625,
            700.8349227905273
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "3": "/page/223/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/224/Page/479",
      "block_type": "Page",
      "html": "<content-ref src='/page/224/PageHeader/0'></content-ref><content-ref src='/page/224/PageHeader/15'></content-ref><content-ref src='/page/224/Text/1'></content-ref><content-ref src='/page/224/TextInlineMath/2'></content-ref><content-ref src='/page/224/Text/3'></content-ref><content-ref src='/page/224/Table/4'></content-ref><content-ref src='/page/224/Text/5'></content-ref><content-ref src='/page/224/TextInlineMath/6'></content-ref><content-ref src='/page/224/ListGroup/415'></content-ref><content-ref src='/page/224/Text/13'></content-ref><content-ref src='/page/224/TextInlineMath/14'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/224/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.72021484375,
              60.908203125
            ],
            [
              525.6033935546875,
              60.908203125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.72021484375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.72021484375,
            60.908203125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/PageHeader/15",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.80078125,
              60.521484375
            ],
            [
              525.9375,
              60.521484375
            ],
            [
              525.9375,
              69.99609375
            ],
            [
              509.80078125,
              69.99609375
            ]
          ],
          "bbox": [
            509.80078125,
            60.521484375,
            525.9375,
            69.99609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An <b>order of growth</b> is a set of functions whose asymptotic growth behavior is considered equivalent. For example, 2<i>n</i>, 100<i>n</i> and <i>n</i> + 1 belong to the same order of growth, which is written <i>O</i>(<i>n</i>) in <b>Big-Oh notation</b> and often called <b>linear</b> because every function in the set grows linearly with <i>n</i>.</p>",
          "polygon": [
            [
              128.6455078125,
              88.60693359375
            ],
            [
              526.53515625,
              88.60693359375
            ],
            [
              526.53515625,
              135.38092041015625
            ],
            [
              128.6455078125,
              135.38092041015625
            ]
          ],
          "bbox": [
            128.6455078125,
            88.60693359375,
            526.53515625,
            135.38092041015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/TextInlineMath/2",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">All functions with the leading term <i>n</i>2 belong to <i>O</i>(<i>n</i>2) ; they are <b>quadratic</b>, which is a fancy word for functions with the leading term <i>n</i>2. </p>",
          "polygon": [
            [
              129.392578125,
              144.1939697265625
            ],
            [
              525.638671875,
              144.1939697265625
            ],
            [
              525.638671875,
              168.25189208984375
            ],
            [
              129.392578125,
              168.25189208984375
            ]
          ],
          "bbox": [
            129.392578125,
            144.1939697265625,
            525.638671875,
            168.25189208984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The following table shows some of the orders of growth that appear most commonly in algorithmic analysis, in increasing order of badness.</p>",
          "polygon": [
            [
              128.9443359375,
              178.1806640625
            ],
            [
              525.6033935546875,
              178.1806640625
            ],
            [
              525.6033935546875,
              201.1239013671875
            ],
            [
              128.9443359375,
              201.1239013671875
            ]
          ],
          "bbox": [
            128.9443359375,
            178.1806640625,
            525.6033935546875,
            201.1239013671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/Table/4",
          "block_type": "Table",
          "html": "<table><tbody><tr><th>Order of<br/>growth</th><th>Name</th></tr><tr><td>O(1)</td><td>constant</td></tr><tr><td>O(logbn)</td><td>logarithmic (for any b)</td></tr><tr><td>O(n)</td><td>linear</td></tr><tr><td>O(nlogbn)</td><td>\"en log en\"</td></tr><tr><td>O(n2)</td><td>quadratic</td></tr><tr><td>O(n3)</td><td>cubic</td></tr><tr><td>O(cn)</td><td>exponential (for any c)</td></tr></tbody></table>",
          "polygon": [
            [
              128.72021484375,
              208.634765625
            ],
            [
              300.322265625,
              208.634765625
            ],
            [
              300.322265625,
              321.169921875
            ],
            [
              128.72021484375,
              321.169921875
            ]
          ],
          "bbox": [
            128.72021484375,
            208.634765625,
            300.322265625,
            321.169921875
          ],
          "children": [
            {
              "id": "/page/224/TableCell/436",
              "block_type": "TableCell",
              "html": "<th>Order of<br/>growth</th>",
              "polygon": [
                [
                  128.72021484375,
                  208.634765625
                ],
                [
                  129.72021484375,
                  208.634765625
                ],
                [
                  129.72021484375,
                  209.634765625
                ],
                [
                  128.72021484375,
                  209.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                208.634765625,
                129.72021484375,
                209.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/437",
              "block_type": "TableCell",
              "html": "<th>Name</th>",
              "polygon": [
                [
                  129.72021484375,
                  208.634765625
                ],
                [
                  130.72021484375,
                  208.634765625
                ],
                [
                  130.72021484375,
                  209.634765625
                ],
                [
                  129.72021484375,
                  209.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                208.634765625,
                130.72021484375,
                209.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/438",
              "block_type": "TableCell",
              "html": "<td>O(1)</td>",
              "polygon": [
                [
                  128.72021484375,
                  209.634765625
                ],
                [
                  129.72021484375,
                  209.634765625
                ],
                [
                  129.72021484375,
                  210.634765625
                ],
                [
                  128.72021484375,
                  210.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                209.634765625,
                129.72021484375,
                210.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/439",
              "block_type": "TableCell",
              "html": "<td>constant</td>",
              "polygon": [
                [
                  129.72021484375,
                  209.634765625
                ],
                [
                  130.72021484375,
                  209.634765625
                ],
                [
                  130.72021484375,
                  210.634765625
                ],
                [
                  129.72021484375,
                  210.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                209.634765625,
                130.72021484375,
                210.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/440",
              "block_type": "TableCell",
              "html": "<td>O(logbn)</td>",
              "polygon": [
                [
                  128.72021484375,
                  210.634765625
                ],
                [
                  129.72021484375,
                  210.634765625
                ],
                [
                  129.72021484375,
                  211.634765625
                ],
                [
                  128.72021484375,
                  211.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                210.634765625,
                129.72021484375,
                211.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/441",
              "block_type": "TableCell",
              "html": "<td>logarithmic (for any b)</td>",
              "polygon": [
                [
                  129.72021484375,
                  210.634765625
                ],
                [
                  130.72021484375,
                  210.634765625
                ],
                [
                  130.72021484375,
                  211.634765625
                ],
                [
                  129.72021484375,
                  211.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                210.634765625,
                130.72021484375,
                211.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/442",
              "block_type": "TableCell",
              "html": "<td>O(n)</td>",
              "polygon": [
                [
                  128.72021484375,
                  211.634765625
                ],
                [
                  129.72021484375,
                  211.634765625
                ],
                [
                  129.72021484375,
                  212.634765625
                ],
                [
                  128.72021484375,
                  212.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                211.634765625,
                129.72021484375,
                212.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/443",
              "block_type": "TableCell",
              "html": "<td>linear</td>",
              "polygon": [
                [
                  129.72021484375,
                  211.634765625
                ],
                [
                  130.72021484375,
                  211.634765625
                ],
                [
                  130.72021484375,
                  212.634765625
                ],
                [
                  129.72021484375,
                  212.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                211.634765625,
                130.72021484375,
                212.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/444",
              "block_type": "TableCell",
              "html": "<td>O(nlogbn)</td>",
              "polygon": [
                [
                  128.72021484375,
                  212.634765625
                ],
                [
                  129.72021484375,
                  212.634765625
                ],
                [
                  129.72021484375,
                  213.634765625
                ],
                [
                  128.72021484375,
                  213.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                212.634765625,
                129.72021484375,
                213.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/445",
              "block_type": "TableCell",
              "html": "<td>\"en log en\"</td>",
              "polygon": [
                [
                  129.72021484375,
                  212.634765625
                ],
                [
                  130.72021484375,
                  212.634765625
                ],
                [
                  130.72021484375,
                  213.634765625
                ],
                [
                  129.72021484375,
                  213.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                212.634765625,
                130.72021484375,
                213.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/446",
              "block_type": "TableCell",
              "html": "<td>O(n2)</td>",
              "polygon": [
                [
                  128.72021484375,
                  213.634765625
                ],
                [
                  129.72021484375,
                  213.634765625
                ],
                [
                  129.72021484375,
                  214.634765625
                ],
                [
                  128.72021484375,
                  214.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                213.634765625,
                129.72021484375,
                214.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/447",
              "block_type": "TableCell",
              "html": "<td>quadratic</td>",
              "polygon": [
                [
                  129.72021484375,
                  213.634765625
                ],
                [
                  130.72021484375,
                  213.634765625
                ],
                [
                  130.72021484375,
                  214.634765625
                ],
                [
                  129.72021484375,
                  214.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                213.634765625,
                130.72021484375,
                214.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/448",
              "block_type": "TableCell",
              "html": "<td>O(n3)</td>",
              "polygon": [
                [
                  128.72021484375,
                  214.634765625
                ],
                [
                  129.72021484375,
                  214.634765625
                ],
                [
                  129.72021484375,
                  215.634765625
                ],
                [
                  128.72021484375,
                  215.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                214.634765625,
                129.72021484375,
                215.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/449",
              "block_type": "TableCell",
              "html": "<td>cubic</td>",
              "polygon": [
                [
                  129.72021484375,
                  214.634765625
                ],
                [
                  130.72021484375,
                  214.634765625
                ],
                [
                  130.72021484375,
                  215.634765625
                ],
                [
                  129.72021484375,
                  215.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                214.634765625,
                130.72021484375,
                215.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/450",
              "block_type": "TableCell",
              "html": "<td>O(cn)</td>",
              "polygon": [
                [
                  128.72021484375,
                  215.634765625
                ],
                [
                  129.72021484375,
                  215.634765625
                ],
                [
                  129.72021484375,
                  216.634765625
                ],
                [
                  128.72021484375,
                  216.634765625
                ]
              ],
              "bbox": [
                128.72021484375,
                215.634765625,
                129.72021484375,
                216.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/TableCell/451",
              "block_type": "TableCell",
              "html": "<td>exponential (for any c)</td>",
              "polygon": [
                [
                  129.72021484375,
                  215.634765625
                ],
                [
                  130.72021484375,
                  215.634765625
                ],
                [
                  130.72021484375,
                  216.634765625
                ],
                [
                  129.72021484375,
                  216.634765625
                ]
              ],
              "bbox": [
                129.72021484375,
                215.634765625,
                130.72021484375,
                216.634765625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/224/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For the logarithmic terms, the base of the logarithm doesn't matter; changing bases is the equivalent of multiplying by a constant, which doesn't change the order of growth. Similarly, all exponential functions belong to the same order of growth regardless of the base of the exponent. Exponential functions grow very quickly, so exponential algorithms are only useful for small problems.</p>",
          "polygon": [
            [
              127.7490234375,
              331.224609375
            ],
            [
              525.6034545898438,
              331.224609375
            ],
            [
              525.6034545898438,
              390.3238830566406
            ],
            [
              127.7490234375,
              390.3238830566406
            ]
          ],
          "bbox": [
            127.7490234375,
            331.224609375,
            525.6034545898438,
            390.3238830566406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/TextInlineMath/6",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\"><b>Exercise B.1.</b> <i>Read the Wikipedia page on Big-Oh notation at</i> http://en.wikipedia.org/ wiki/Big_O_notation <i>and answer the following questions: </i></p>",
          "polygon": [
            [
              129.60000610351562,
              391.939453125
            ],
            [
              524.14453125,
              391.939453125
            ],
            [
              524.14453125,
              414.5401916503906
            ],
            [
              129.60000610351562,
              414.5401916503906
            ]
          ],
          "bbox": [
            129.60000610351562,
            391.939453125,
            524.14453125,
            414.5401916503906
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/ListGroup/415",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/224/ListItem/7'></content-ref><content-ref src='/page/224/ListItem/8'></content-ref><content-ref src='/page/224/ListItem/9'></content-ref><content-ref src='/page/224/ListItem/10'></content-ref><content-ref src='/page/224/ListItem/11'></content-ref><content-ref src='/page/224/ListItem/12'></content-ref></ul></p>",
          "polygon": [
            [
              141.4951171875,
              427.9840087890625
            ],
            [
              525.6023559570312,
              427.9840087890625
            ],
            [
              525.6023559570312,
              570.8435821533203
            ],
            [
              141.4951171875,
              570.8435821533203
            ]
          ],
          "bbox": [
            141.4951171875,
            427.9840087890625,
            525.6023559570312,
            570.8435821533203
          ],
          "children": [
            {
              "id": "/page/224/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. What is the order of growth of n</i>3 + <i>n</i> 2<i>? What about</i> 1000000<i>n</i> 3 + <i>n</i> 2<i>? What about n</i>3 + 1000000<i>n</i> 2<i>?</i></li>",
              "polygon": [
                [
                  141.4951171875,
                  427.9840087890625
                ],
                [
                  525.47216796875,
                  427.9840087890625
                ],
                [
                  525.47216796875,
                  452.04290771484375
                ],
                [
                  141.4951171875,
                  452.04290771484375
                ]
              ],
              "bbox": [
                141.4951171875,
                427.9840087890625,
                525.47216796875,
                452.04290771484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. What is the order of growth of</i> (<i>n</i> 2 + <i>n</i>) · (<i>n</i> + 1)<i>? Before you start multiplying, remember</i> <i>that you only need the leading term.</i></li>",
              "polygon": [
                [
                  141.943359375,
                  461.2640075683594
                ],
                [
                  525.6023559570312,
                  461.2640075683594
                ],
                [
                  525.6023559570312,
                  485.1492004394531
                ],
                [
                  141.943359375,
                  485.1492004394531
                ]
              ],
              "bbox": [
                141.943359375,
                461.2640075683594,
                525.6023559570312,
                485.1492004394531
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. If f is in O</i>(<i>g</i>)<i>, for some unspecified function g, what can we say about a f</i> + <i>b?</i></li>",
              "polygon": [
                [
                  142.05311584472656,
                  495.0
                ],
                [
                  473.5506591796875,
                  495.0
                ],
                [
                  473.5506591796875,
                  506.23419189453125
                ],
                [
                  142.05311584472656,
                  506.23419189453125
                ]
              ],
              "bbox": [
                142.05311584472656,
                495.0,
                473.5506591796875,
                506.23419189453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. If f</i>1 <i>and f</i>2 <i>are in O</i>(<i>g</i>)<i>, what can we say about f</i>1 + <i>f</i>2<i>?</i></li>",
              "polygon": [
                [
                  141.86865234375,
                  516.5608215332031
                ],
                [
                  383.12640380859375,
                  516.5608215332031
                ],
                [
                  383.12640380859375,
                  528.673583984375
                ],
                [
                  141.86865234375,
                  528.673583984375
                ]
              ],
              "bbox": [
                141.86865234375,
                516.5608215332031,
                383.12640380859375,
                528.673583984375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>5. If f</i>1 <i>is in O</i>(<i>g</i>) <i>and f</i>2 <i>is in O</i>(<i>h</i>)<i>, what can we say about f</i>1 + <i>f</i>2<i>?</i></li>",
              "polygon": [
                [
                  142.01806640625,
                  537.6458129882812
                ],
                [
                  421.9453125,
                  537.6458129882812
                ],
                [
                  421.9453125,
                  549.7585906982422
                ],
                [
                  142.01806640625,
                  549.7585906982422
                ]
              ],
              "bbox": [
                142.01806640625,
                537.6458129882812,
                421.9453125,
                549.7585906982422
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/224/ListItem/12",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>6. If f</i>1 <i>is in O</i>(<i>g</i>) <i>and f</i>2 <i>is O</i>(<i>h</i>)<i>, what can we say about f</i>1 · <i>f</i>2<i>?</i></li>",
              "polygon": [
                [
                  142.05307006835938,
                  558.5962677001953
                ],
                [
                  406.40625,
                  558.5962677001953
                ],
                [
                  406.40625,
                  570.8435821533203
                ],
                [
                  142.05307006835938,
                  570.8435821533203
                ]
              ],
              "bbox": [
                142.05307006835938,
                558.5962677001953,
                406.40625,
                570.8435821533203
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "3": "/page/223/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/224/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Programmers who care about performance often find this kind of analysis hard to swallow. They have a point: sometimes the coefficients and the non-leading terms make a real difference. Sometimes the details of the hardware, the programming language, and the characteristics of the input make a big difference. And for small problems asymptotic behavior is irrelevant.</p>",
          "polygon": [
            [
              128.6455078125,
              584.71875
            ],
            [
              525.9375,
              584.71875
            ],
            [
              525.9375,
              643.5748748779297
            ],
            [
              128.6455078125,
              643.5748748779297
            ]
          ],
          "bbox": [
            128.6455078125,
            584.71875,
            525.9375,
            643.5748748779297
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/224/TextInlineMath/14",
          "block_type": "TextInlineMath",
          "html": "<p block-type=\"TextInlineMath\">But if you keep those caveats in mind, algorithmic analysis is a useful tool. At least for large problems, the “better” algorithms is usually better, and sometimes it is <i>much</i> better. The difference between two algorithms with the same order of growth is usually a constant factor, but the difference between a good algorithm and a bad algorithm is unbounded!</p>",
          "polygon": [
            [
              129.2431640625,
              653.94140625
            ],
            [
              526.53515625,
              653.94140625
            ],
            [
              526.53515625,
              700.8348846435547
            ],
            [
              129.2431640625,
              700.8348846435547
            ]
          ],
          "bbox": [
            129.2431640625,
            653.94140625,
            526.53515625,
            700.8348846435547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "3": "/page/223/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/225/Page/271",
      "block_type": "Page",
      "html": "<content-ref src='/page/225/PageHeader/0'></content-ref><content-ref src='/page/225/PageHeader/19'></content-ref><content-ref src='/page/225/SectionHeader/1'></content-ref><content-ref src='/page/225/Text/2'></content-ref><content-ref src='/page/225/Text/3'></content-ref><content-ref src='/page/225/Text/4'></content-ref><content-ref src='/page/225/Code/5'></content-ref><content-ref src='/page/225/Text/6'></content-ref><content-ref src='/page/225/Text/7'></content-ref><content-ref src='/page/225/Text/8'></content-ref><content-ref src='/page/225/Text/9'></content-ref><content-ref src='/page/225/Text/10'></content-ref><content-ref src='/page/225/Text/11'></content-ref><content-ref src='/page/225/Text/12'></content-ref><content-ref src='/page/225/Text/13'></content-ref><content-ref src='/page/225/ListGroup/270'></content-ref><content-ref src='/page/225/Text/17'></content-ref><content-ref src='/page/225/ListItem/18'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/225/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              59.8447265625
            ],
            [
              483.50390625,
              59.8447265625
            ],
            [
              483.50390625,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.8447265625,
            483.50390625,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/225/PageHeader/19",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.94189453125,
              59.11962890625
            ],
            [
              102.12451171875,
              59.11962890625
            ],
            [
              102.12451171875,
              70.04443359375
            ],
            [
              84.94189453125,
              70.04443359375
            ]
          ],
          "bbox": [
            84.94189453125,
            59.11962890625,
            102.12451171875,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "3": "/page/223/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/225/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-225-0\"></span><b>B.2 Analysis of basic Python operations</b></h2>",
          "polygon": [
            [
              84.568359375,
              84.54638671875
            ],
            [
              357.99609375,
              84.54638671875
            ],
            [
              357.99609375,
              100.353515625
            ],
            [
              84.568359375,
              100.353515625
            ]
          ],
          "bbox": [
            84.568359375,
            84.54638671875,
            357.99609375,
            100.353515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most arithmetic operations are constant time; multiplication usually takes longer than addition and subtraction, and division takes even longer, but these run times don't depend on the magnitude of the operands. Very large integers are an exception; in that case the run time increases with the number of digits.</p>",
          "polygon": [
            [
              85.46484375,
              109.634765625
            ],
            [
              484.998046875,
              109.634765625
            ],
            [
              484.998046875,
              159.00103759765625
            ],
            [
              85.46484375,
              159.00103759765625
            ]
          ],
          "bbox": [
            85.46484375,
            109.634765625,
            484.998046875,
            159.00103759765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Indexing operations—reading or writing elements in a sequence or dictionary—are also constant time, regardless of the size of the data structure.</p>",
          "polygon": [
            [
              85.46484375,
              166.482421875
            ],
            [
              483.802734375,
              166.482421875
            ],
            [
              483.802734375,
              191.14202880859375
            ],
            [
              85.46484375,
              191.14202880859375
            ]
          ],
          "bbox": [
            85.46484375,
            166.482421875,
            483.802734375,
            191.14202880859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A for loop that traverses a sequence or dictionary is usually linear, as long as all of the operations in the body of the loop are constant time. For example, adding up the elements of a list is linear:</p>",
          "polygon": [
            [
              85.6142578125,
              199.16015625
            ],
            [
              484.1015625,
              199.16015625
            ],
            [
              484.1015625,
              235.47802734375
            ],
            [
              85.6142578125,
              235.47802734375
            ]
          ],
          "bbox": [
            85.6142578125,
            199.16015625,
            484.1015625,
            235.47802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Code/5",
          "block_type": "Code",
          "html": "<pre>total = 0\nfor x in t:\n    total += x</pre>",
          "polygon": [
            [
              107.31600189208984,
              240.345703125
            ],
            [
              180.53665161132812,
              240.345703125
            ],
            [
              180.53665161132812,
              275.69140625
            ],
            [
              107.31600189208984,
              275.69140625
            ]
          ],
          "bbox": [
            107.31600189208984,
            240.345703125,
            180.53665161132812,
            275.69140625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The built-in function sum is also linear because it does the same thing, but it tends to be faster because it is a more efficient implementation; in the language of algorithmic analysis, it has a smaller leading coefficient.</p>",
          "polygon": [
            [
              85.9130859375,
              279.791015625
            ],
            [
              483.50390625,
              279.791015625
            ],
            [
              483.50390625,
              316.2049865722656
            ],
            [
              85.9130859375,
              316.2049865722656
            ]
          ],
          "bbox": [
            85.9130859375,
            279.791015625,
            483.50390625,
            316.2049865722656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If you use the same loop to \"add\" a list of strings, the run time is quadratic because string concatenation is linear.</p>",
          "polygon": [
            [
              85.763671875,
              323.876953125
            ],
            [
              483.802734375,
              323.876953125
            ],
            [
              483.802734375,
              348.34698486328125
            ],
            [
              85.763671875,
              348.34698486328125
            ]
          ],
          "bbox": [
            85.763671875,
            323.876953125,
            483.802734375,
            348.34698486328125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The string method join is usually faster because it is linear in the total length of the strings.</p>",
          "polygon": [
            [
              85.763671875,
              355.78125
            ],
            [
              482.39666748046875,
              355.78125
            ],
            [
              482.39666748046875,
              368.2929992675781
            ],
            [
              85.763671875,
              368.2929992675781
            ]
          ],
          "bbox": [
            85.763671875,
            355.78125,
            482.39666748046875,
            368.2929992675781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">As a rule of thumb, if the body of a loop is in <i>O</i>(<i>n</i> <i>a</i> ) then the whole loop is in <i>O</i>(<i>n</i> <i>a</i>+1 ). The exception is if you can show that the loop exits after a constant number of iterations. If a loop runs <i>k</i> times regardless of <i>n</i>, then the loop is in <i>O</i>(<i>n</i> <i>a</i> ), even for large <i>k</i>.</p>",
          "polygon": [
            [
              85.763671875,
              387.10546875
            ],
            [
              483.205078125,
              387.10546875
            ],
            [
              483.205078125,
              424.822998046875
            ],
            [
              85.763671875,
              424.822998046875
            ]
          ],
          "bbox": [
            85.763671875,
            387.10546875,
            483.205078125,
            424.822998046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Multiplying by <i>k</i> doesn't change the order of growth, but neither does dividing. So if the body of a loop is in <i>O</i>(<i>n</i> <i>a</i> ) and it runs <i>n</i>/<i>k</i> times, the loop is in <i>O</i>(<i>n</i> <i>a</i>+1 ), even for large <i>k</i>.</p>",
          "polygon": [
            [
              85.763671875,
              432.3515625
            ],
            [
              484.400390625,
              432.3515625
            ],
            [
              484.400390625,
              457.1015625
            ],
            [
              85.763671875,
              457.1015625
            ]
          ],
          "bbox": [
            85.763671875,
            432.3515625,
            484.400390625,
            457.1015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most string and tuple operations are linear, except indexing and len, which are constant time. The built-in functions min and max are linear. The run-time of a slice operation is proportional to the length of the output, but independent of the size of the input.</p>",
          "polygon": [
            [
              85.9130859375,
              464.8359375
            ],
            [
              483.50390625,
              464.8359375
            ],
            [
              483.50390625,
              501.29998779296875
            ],
            [
              85.9130859375,
              501.29998779296875
            ]
          ],
          "bbox": [
            85.9130859375,
            464.8359375,
            483.50390625,
            501.29998779296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">All string methods are linear, but if the lengths of the strings are bounded by a constant for example, operations on single characters—they are considered constant time.</p>",
          "polygon": [
            [
              85.763671875,
              508.1484375
            ],
            [
              482.607421875,
              508.1484375
            ],
            [
              482.607421875,
              533.4409790039062
            ],
            [
              85.763671875,
              533.4409790039062
            ]
          ],
          "bbox": [
            85.763671875,
            508.1484375,
            482.607421875,
            533.4409790039062
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most list methods are linear, but there are some exceptions:</p>",
          "polygon": [
            [
              85.6142578125,
              541.79296875
            ],
            [
              347.23828125,
              541.79296875
            ],
            [
              347.23828125,
              553.39453125
            ],
            [
              85.6142578125,
              553.39453125
            ]
          ],
          "bbox": [
            85.6142578125,
            541.79296875,
            347.23828125,
            553.39453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/ListGroup/270",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/225/ListItem/14'></content-ref><content-ref src='/page/225/ListItem/15'></content-ref><content-ref src='/page/225/ListItem/16'></content-ref></ul></p>",
          "polygon": [
            [
              99.9580078125,
              565.3828125
            ],
            [
              484.69921875,
              565.3828125
            ],
            [
              484.69921875,
              641.4009857177734
            ],
            [
              99.9580078125,
              641.4009857177734
            ]
          ],
          "bbox": [
            99.9580078125,
            565.3828125,
            484.69921875,
            641.4009857177734
          ],
          "children": [
            {
              "id": "/page/225/ListItem/14",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Adding an element to the end of a list is constant time on average; when it runs out of room it occasionally gets copied to a bigger location, but the total time for <i>n</i> operations is <i>O</i>(<i>n</i>), so we say that the \"amortized\" time for one operation is <i>O</i>(1).</li>",
              "polygon": [
                [
                  100.28785705566406,
                  565.3828125
                ],
                [
                  484.69921875,
                  565.3828125
                ],
                [
                  484.69921875,
                  601.734375
                ],
                [
                  100.28785705566406,
                  601.734375
                ]
              ],
              "bbox": [
                100.28785705566406,
                565.3828125,
                484.69921875,
                601.734375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/225/ListItem/15",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Removing an element from the end of a list is constant time.</li>",
              "polygon": [
                [
                  99.9580078125,
                  609.08203125
                ],
                [
                  375.92578125,
                  609.08203125
                ],
                [
                  375.92578125,
                  621.45703125
                ],
                [
                  99.9580078125,
                  621.45703125
                ]
              ],
              "bbox": [
                99.9580078125,
                609.08203125,
                375.92578125,
                621.45703125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/225/ListItem/16",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> Sorting is <i>O</i>(<i>n</i> log <i>n</i>).</li>",
              "polygon": [
                [
                  100.287841796875,
                  628.8046875
                ],
                [
                  203.501953125,
                  628.8046875
                ],
                [
                  203.501953125,
                  641.4009857177734
                ],
                [
                  100.287841796875,
                  641.4009857177734
                ]
              ],
              "bbox": [
                100.287841796875,
                628.8046875,
                203.501953125,
                641.4009857177734
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/225/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Most dictionary operations and methods are constant time, but there are some exceptions:</p>",
          "polygon": [
            [
              84.7177734375,
              653.16796875
            ],
            [
              481.7109375,
              653.16796875
            ],
            [
              481.7109375,
              665.0209884643555
            ],
            [
              84.7177734375,
              665.0209884643555
            ]
          ],
          "bbox": [
            84.7177734375,
            653.16796875,
            481.7109375,
            665.0209884643555
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/225/ListItem/18",
          "block_type": "ListItem",
          "html": "<li block-type=\"ListItem\"> The run time of copy is proportional to the number of elements, but not the size of the elements (it copies references, not the elements themselves).</li>",
          "polygon": [
            [
              100.287841796875,
              676.7578125
            ],
            [
              484.69921875,
              676.7578125
            ],
            [
              484.69921875,
              700.8349914550781
            ],
            [
              100.287841796875,
              700.8349914550781
            ]
          ],
          "bbox": [
            100.287841796875,
            676.7578125,
            484.69921875,
            700.8349914550781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "2": "/page/225/SectionHeader/1"
      },
      "images": null
    },
    {
      "id": "/page/226/Page/209",
      "block_type": "Page",
      "html": "<content-ref src='/page/226/PageHeader/0'></content-ref><content-ref src='/page/226/PageHeader/18'></content-ref><content-ref src='/page/226/ListGroup/207'></content-ref><content-ref src='/page/226/Text/3'></content-ref><content-ref src='/page/226/Text/4'></content-ref><content-ref src='/page/226/ListGroup/208'></content-ref><content-ref src='/page/226/SectionHeader/12'></content-ref><content-ref src='/page/226/Text/13'></content-ref><content-ref src='/page/226/Text/14'></content-ref><content-ref src='/page/226/Text/15'></content-ref><content-ref src='/page/226/Text/16'></content-ref><content-ref src='/page/226/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/226/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.27197265625,
              60.76318359375
            ],
            [
              525.6033935546875,
              60.76318359375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.27197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.27197265625,
            60.76318359375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/226/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.697265625,
              60.521484375
            ],
            [
              525.638671875,
              60.521484375
            ],
            [
              525.638671875,
              69.802734375
            ],
            [
              510.697265625,
              69.802734375
            ]
          ],
          "bbox": [
            510.697265625,
            60.521484375,
            525.638671875,
            69.802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/226/ListGroup/207",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/226/ListItem/1'></content-ref><content-ref src='/page/226/ListItem/2'></content-ref></ul></p>",
          "polygon": [
            [
              142.3916015625,
              88.31689453125
            ],
            [
              526.53515625,
              88.31689453125
            ],
            [
              526.53515625,
              179.24285888671875
            ],
            [
              142.3916015625,
              179.24285888671875
            ]
          ],
          "bbox": [
            142.3916015625,
            88.31689453125,
            526.53515625,
            179.24285888671875
          ],
          "children": [
            {
              "id": "/page/226/ListItem/1",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> The run time of update is proportional to the size of the dictionary passed as a parameter, not the dictionary being updated.</li>",
              "polygon": [
                [
                  143.4375,
                  88.31689453125
                ],
                [
                  525.6045532226562,
                  88.31689453125
                ],
                [
                  525.6045532226562,
                  110.99188232421875
                ],
                [
                  143.4375,
                  110.99188232421875
                ]
              ],
              "bbox": [
                143.4375,
                88.31689453125,
                525.6045532226562,
                110.99188232421875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/226/ListItem/2",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"> keys, values and items are linear because they return new lists; iterkeys, itervalues and iteritems are constant time because they return iterators. But if you loop through the iterators, the loop will be linear. Using the \"iter\" functions saves some overhead, but it doesn't change the order of growth unless the number of items you access is bounded.</li>",
              "polygon": [
                [
                  142.3916015625,
                  120.076171875
                ],
                [
                  526.53515625,
                  120.076171875
                ],
                [
                  526.53515625,
                  179.24285888671875
                ],
                [
                  142.3916015625,
                  179.24285888671875
                ]
              ],
              "bbox": [
                142.3916015625,
                120.076171875,
                526.53515625,
                179.24285888671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/226/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The performance of dictionaries is one of the minor miracles of computer science. We will see how they work in Section <a href=\"#page-227-0\">B.4.</a></p>",
          "polygon": [
            [
              129.392578125,
              190.458984375
            ],
            [
              525.638671875,
              190.458984375
            ],
            [
              525.638671875,
              213.38189697265625
            ],
            [
              129.392578125,
              213.38189697265625
            ]
          ],
          "bbox": [
            129.392578125,
            190.458984375,
            525.638671875,
            213.38189697265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/226/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise B.2.</b> <i>Read the Wikipedia page on sorting algorithms at</i> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">http:</a> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">//</a> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">en.</a> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">wikipedia.</a> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">org/</a> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">wiki/</a> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">Sorting_</a> <a href=\"http://en.wikipedia.org/wiki/Sorting_algorithm\">algorithm</a> <i>and answer the following questions:</i></p>",
          "polygon": [
            [
              129.09375,
              215.36090087890625
            ],
            [
              525.33984375,
              215.36090087890625
            ],
            [
              525.33984375,
              237.59820556640625
            ],
            [
              129.09375,
              237.59820556640625
            ]
          ],
          "bbox": [
            129.09375,
            215.36090087890625,
            525.33984375,
            237.59820556640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/226/ListGroup/208",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/226/ListItem/5'></content-ref><content-ref src='/page/226/ListItem/6'></content-ref><content-ref src='/page/226/ListItem/7'></content-ref><content-ref src='/page/226/ListItem/8'></content-ref><content-ref src='/page/226/ListItem/9'></content-ref><content-ref src='/page/226/ListItem/10'></content-ref><content-ref src='/page/226/ListItem/11'></content-ref></ul></p>",
          "polygon": [
            [
              140.5986328125,
              249.58062744140625
            ],
            [
              525.9375,
              249.58062744140625
            ],
            [
              525.9375,
              425.1622314453125
            ],
            [
              140.5986328125,
              425.1622314453125
            ]
          ],
          "bbox": [
            140.5986328125,
            249.58062744140625,
            525.9375,
            425.1622314453125
          ],
          "children": [
            {
              "id": "/page/226/ListItem/5",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>1. What is a \"comparison sort?\" What is the best worst-case order of growth for a comparison</i> <i>sort? What is the best worst-case order of growth for any sort algorithm?</i></li>",
              "polygon": [
                [
                  141.4951171875,
                  249.58062744140625
                ],
                [
                  525.9375,
                  249.58062744140625
                ],
                [
                  525.9375,
                  271.73724365234375
                ],
                [
                  141.4951171875,
                  271.73724365234375
                ]
              ],
              "bbox": [
                141.4951171875,
                249.58062744140625,
                525.9375,
                271.73724365234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/226/ListItem/6",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>2. What is the order of growth of bubble sort, and why does Barack Obama think it is \"the wrong</i> <i>way to go?\"</i></li>",
              "polygon": [
                [
                  141.345703125,
                  280.951171875
                ],
                [
                  525.638671875,
                  280.951171875
                ],
                [
                  525.638671875,
                  303.4052429199219
                ],
                [
                  141.345703125,
                  303.4052429199219
                ]
              ],
              "bbox": [
                141.345703125,
                280.951171875,
                525.638671875,
                303.4052429199219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/226/ListItem/7",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>3. What is the order of growth of radix sort? What preconditions do we need to use it?</i></li>",
              "polygon": [
                [
                  140.8974609375,
                  312.46875
                ],
                [
                  488.6320495605469,
                  312.46875
                ],
                [
                  488.6320495605469,
                  322.8792419433594
                ],
                [
                  140.8974609375,
                  322.8792419433594
                ]
              ],
              "bbox": [
                140.8974609375,
                312.46875,
                488.6320495605469,
                322.8792419433594
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/226/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>4. What is a stable sort and why might it matter in practice?</i></li>",
              "polygon": [
                [
                  142.05300903320312,
                  332.384765625
                ],
                [
                  386.6547546386719,
                  332.384765625
                ],
                [
                  386.6547546386719,
                  342.35223388671875
                ],
                [
                  142.05300903320312,
                  342.35223388671875
                ]
              ],
              "bbox": [
                142.05300903320312,
                332.384765625,
                386.6547546386719,
                342.35223388671875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/226/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>5. What is the worst sorting algorithm (that has a name)?</i></li>",
              "polygon": [
                [
                  141.42041015625,
                  351.8636474609375
                ],
                [
                  375.626953125,
                  351.8636474609375
                ],
                [
                  375.626953125,
                  361.82623291015625
                ],
                [
                  141.42041015625,
                  361.82623291015625
                ]
              ],
              "bbox": [
                141.42041015625,
                351.8636474609375,
                375.626953125,
                361.82623291015625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/226/ListItem/10",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>6. What sort algorithm does the C library use? What sort algorithm does Python use? Are these</i> <i>algorithms stable? You might have to Google around to find these answers.</i></li>",
              "polygon": [
                [
                  141.64453125,
                  371.056640625
                ],
                [
                  525.6032104492188,
                  371.056640625
                ],
                [
                  525.6032104492188,
                  393.4942321777344
                ],
                [
                  141.64453125,
                  393.4942321777344
                ]
              ],
              "bbox": [
                141.64453125,
                371.056640625,
                525.6032104492188,
                393.4942321777344
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            },
            {
              "id": "/page/226/ListItem/11",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\"><i>7. Many of the non-comparison sorts are linear, so why does does Python use an O</i>(<i>n</i> log <i>n</i>) <i>comparison sort?</i></li>",
              "polygon": [
                [
                  140.5986328125,
                  402.2098693847656
                ],
                [
                  525.9375,
                  402.2098693847656
                ],
                [
                  525.9375,
                  425.1622314453125
                ],
                [
                  140.5986328125,
                  425.1622314453125
                ]
              ],
              "bbox": [
                140.5986328125,
                402.2098693847656,
                525.9375,
                425.1622314453125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1"
          },
          "images": null
        },
        {
          "id": "/page/226/SectionHeader/12",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-226-0\"></span><b>B.3 Analysis of search algorithms</b></h4>",
          "polygon": [
            [
              129.01904296875,
              453.54278564453125
            ],
            [
              358.3215026855469,
              453.54278564453125
            ],
            [
              358.3215026855469,
              467.8890075683594
            ],
            [
              129.01904296875,
              467.8890075683594
            ]
          ],
          "bbox": [
            129.01904296875,
            453.54278564453125,
            358.3215026855469,
            467.8890075683594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/226/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">A <b>search</b> is an algorithm that takes a collection and a target item and determines whether the target is in the collection, often returning the index of the target.</p>",
          "polygon": [
            [
              129.5419921875,
              479.3282165527344
            ],
            [
              525.9375,
              479.3282165527344
            ],
            [
              525.9375,
              501.5819396972656
            ],
            [
              129.5419921875,
              501.5819396972656
            ]
          ],
          "bbox": [
            129.5419921875,
            479.3282165527344,
            525.9375,
            501.5819396972656
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/226/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The simplest search algorithm is a \"linear search,\" which traverses the items of the collection in order, stopping if it finds the target. In the worst case it has to traverse the entire collection, so the run time is linear.</p>",
          "polygon": [
            [
              128.9443359375,
              510.85546875
            ],
            [
              525.9375,
              510.85546875
            ],
            [
              525.9375,
              545.2979431152344
            ],
            [
              128.9443359375,
              545.2979431152344
            ]
          ],
          "bbox": [
            128.9443359375,
            510.85546875,
            525.9375,
            545.2979431152344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/226/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The in operator for sequences uses a linear search; so do string methods like find and count.</p>",
          "polygon": [
            [
              128.197265625,
              554.5137939453125
            ],
            [
              525.638671875,
              554.5137939453125
            ],
            [
              525.638671875,
              576.8199462890625
            ],
            [
              128.197265625,
              576.8199462890625
            ]
          ],
          "bbox": [
            128.197265625,
            554.5137939453125,
            525.638671875,
            576.8199462890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/226/Text/16",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the elements of the sequence are in order, you can use a <b>bisection search</b>, which is <i>O</i>(log <i>n</i>). Bisection search is similar to the algorithm you probably use to look a word up in a dictionary (a real dictionary, not the data structure). Instead of starting at the beginning and checking each item in order, you start with the item in the middle and check whether the word you are looking for comes before or after. If it comes before, then you search the first half of the sequence. Otherwise you search the second half. Either way, you cut the number of remaining items in half.</p>",
          "polygon": [
            [
              128.3466796875,
              586.0882415771484
            ],
            [
              525.9375,
              586.0882415771484
            ],
            [
              525.9375,
              669.31396484375
            ],
            [
              128.3466796875,
              669.31396484375
            ]
          ],
          "bbox": [
            128.3466796875,
            586.0882415771484,
            525.9375,
            669.31396484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/226/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">If the sequence has 1,000,000 items, it will take about 20 steps to find the word or conclude that it's not there. So that's about 50,000 times faster than a linear search.</p>",
          "polygon": [
            [
              127.8984375,
              678.3046875
            ],
            [
              525.9375,
              678.3046875
            ],
            [
              525.9375,
              700.8349685668945
            ],
            [
              127.8984375,
              700.8349685668945
            ]
          ],
          "bbox": [
            127.8984375,
            678.3046875,
            525.9375,
            700.8349685668945
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "2": "/page/225/SectionHeader/1",
        "4": "/page/226/SectionHeader/12"
      },
      "images": null
    },
    {
      "id": "/page/227/Page/210",
      "block_type": "Page",
      "html": "<content-ref src='/page/227/PageHeader/0'></content-ref><content-ref src='/page/227/PageHeader/16'></content-ref><content-ref src='/page/227/Text/1'></content-ref><content-ref src='/page/227/Text/2'></content-ref><content-ref src='/page/227/Text/3'></content-ref><content-ref src='/page/227/Text/4'></content-ref><content-ref src='/page/227/SectionHeader/5'></content-ref><content-ref src='/page/227/Text/6'></content-ref><content-ref src='/page/227/Text/7'></content-ref><content-ref src='/page/227/ListGroup/209'></content-ref><content-ref src='/page/227/Text/10'></content-ref><content-ref src='/page/227/Text/11'></content-ref><content-ref src='/page/227/Code/12'></content-ref><content-ref src='/page/227/Text/13'></content-ref><content-ref src='/page/227/Text/14'></content-ref><content-ref src='/page/227/Text/15'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/227/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.71484375
            ],
            [
              482.607421875,
              60.71484375
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.71484375,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/227/PageHeader/16",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.3154296875,
              60.8115234375
            ],
            [
              101.900390625,
              60.8115234375
            ],
            [
              101.900390625,
              70.189453125
            ],
            [
              85.3154296875,
              70.189453125
            ]
          ],
          "bbox": [
            85.3154296875,
            60.8115234375,
            101.900390625,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>Exercise B.3.</b> <i>Write a function called</i> bisection <i>that takes a sorted list and a target value and</i> <i>returns the index of the value in the list, if it's there, or</i> None <i>if it's not.</i></p>",
          "polygon": [
            [
              85.0166015625,
              88.4619140625
            ],
            [
              482.90625,
              88.4619140625
            ],
            [
              482.90625,
              110.84228515625
            ],
            [
              85.0166015625,
              110.84228515625
            ]
          ],
          "bbox": [
            85.0166015625,
            88.4619140625,
            482.90625,
            110.84228515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><i>Or you could read the documentation of the</i> bisect <i>module and use that!</i></p>",
          "polygon": [
            [
              85.39013671875,
              120.1728515625
            ],
            [
              381.4031066894531,
              120.1728515625
            ],
            [
              381.4031066894531,
              130.82330322265625
            ],
            [
              85.39013671875,
              130.82330322265625
            ]
          ],
          "bbox": [
            85.39013671875,
            120.1728515625,
            381.4031066894531,
            130.82330322265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Bisection search can be much faster than linear search, but it requires the sequence to be in order, which might require extra work.</p>",
          "polygon": [
            [
              85.46484375,
              140.572265625
            ],
            [
              482.4034423828125,
              140.572265625
            ],
            [
              482.4034423828125,
              163.14886474609375
            ],
            [
              85.46484375,
              163.14886474609375
            ]
          ],
          "bbox": [
            85.46484375,
            140.572265625,
            482.4034423828125,
            163.14886474609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">There is another data structure, called a <b>hashtable</b> that is even faster—it can do a search in constant time—and it doesn't require the items to be sorted. Python dictionaries are implemented using hashtables, which is why most dictionary operations, including the in operator, are constant time.</p>",
          "polygon": [
            [
              85.6142578125,
              172.4765625
            ],
            [
              482.40386962890625,
              172.4765625
            ],
            [
              482.40386962890625,
              219.71295166015625
            ],
            [
              85.6142578125,
              219.71295166015625
            ]
          ],
          "bbox": [
            85.6142578125,
            172.4765625,
            482.40386962890625,
            219.71295166015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/226/SectionHeader/12"
          },
          "images": {}
        },
        {
          "id": "/page/227/SectionHeader/5",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-227-0\"></span><b>B.4 Hashtables</b></h4>",
          "polygon": [
            [
              85.6142578125,
              248.2734375
            ],
            [
              194.537109375,
              248.2734375
            ],
            [
              194.537109375,
              263.1820068359375
            ],
            [
              85.6142578125,
              263.1820068359375
            ]
          ],
          "bbox": [
            85.6142578125,
            248.2734375,
            194.537109375,
            263.1820068359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To explain how hashtables work and why their performance is so good, I start with a simple implementation of a map and gradually improve it until it's a hashtable.</p>",
          "polygon": [
            [
              85.9130859375,
              274.95703125
            ],
            [
              482.4033508300781,
              274.95703125
            ],
            [
              482.4033508300781,
              297.5279541015625
            ],
            [
              85.9130859375,
              297.5279541015625
            ]
          ],
          "bbox": [
            85.9130859375,
            274.95703125,
            482.4033508300781,
            297.5279541015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">I use Python to demonstrate these implementations, but in real life you wouldn't write code like this in Python; you would just use a dictionary! So for the rest of this chapter, you have to imagine that dictionaries don't exist and you want to implement a data structure that maps from keys to values. The operations you have to implement are:</p>",
          "polygon": [
            [
              85.6142578125,
              307.44140625
            ],
            [
              482.4034118652344,
              307.44140625
            ],
            [
              482.4034118652344,
              354.09295654296875
            ],
            [
              85.6142578125,
              354.09295654296875
            ]
          ],
          "bbox": [
            85.6142578125,
            307.44140625,
            482.4034118652344,
            354.09295654296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/ListGroup/209",
          "block_type": "ListGroup",
          "html": "<p block-type='ListGroup'><ul><content-ref src='/page/227/ListItem/8'></content-ref><content-ref src='/page/227/ListItem/9'></content-ref></ul></p>",
          "polygon": [
            [
              85.3154296875,
              367.3828125
            ],
            [
              482.40185546875,
              367.3828125
            ],
            [
              482.40185546875,
              422.2259826660156
            ],
            [
              85.3154296875,
              422.2259826660156
            ]
          ],
          "bbox": [
            85.3154296875,
            367.3828125,
            482.40185546875,
            422.2259826660156
          ],
          "children": [
            {
              "id": "/page/227/ListItem/8",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">add(k, v)<b>:</b> Add a new item that maps from key k to value v. With a Python dictionary, d, this operation is written d[k] = v.</li>",
              "polygon": [
                [
                  85.46484375,
                  367.3828125
                ],
                [
                  482.3996887207031,
                  367.3828125
                ],
                [
                  482.3996887207031,
                  389.9999694824219
                ],
                [
                  85.46484375,
                  389.9999694824219
                ]
              ],
              "bbox": [
                85.46484375,
                367.3828125,
                482.3996887207031,
                389.9999694824219
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1",
                "4": "/page/227/SectionHeader/5"
              },
              "images": {}
            },
            {
              "id": "/page/227/ListItem/9",
              "block_type": "ListItem",
              "html": "<li block-type=\"ListItem\">get(target)<b>:</b> Look up and return the value that corresponds to key target. With a Python dictionary, d, this operation is written d[target] or d.get(target).</li>",
              "polygon": [
                [
                  85.3154296875,
                  399.48046875
                ],
                [
                  482.40185546875,
                  399.48046875
                ],
                [
                  482.40185546875,
                  422.2259826660156
                ],
                [
                  85.3154296875,
                  422.2259826660156
                ]
              ],
              "bbox": [
                85.3154296875,
                399.48046875,
                482.40185546875,
                422.2259826660156
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1",
                "4": "/page/227/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/227/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">For now, I assume that each key only appears once. The simplest implementation of this interface uses a list of tuples, where each tuple is a key-value pair.</p>",
          "polygon": [
            [
              85.0166015625,
              435.83203125
            ],
            [
              482.40325927734375,
              435.83203125
            ],
            [
              482.40325927734375,
              459.03515625
            ],
            [
              85.0166015625,
              459.03515625
            ]
          ],
          "bbox": [
            85.0166015625,
            435.83203125,
            482.40325927734375,
            459.03515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">class LinearMap(object):</p>",
          "polygon": [
            [
              86.39999389648438,
              464.0308532714844
            ],
            [
              211.93869018554688,
              464.0308532714844
            ],
            [
              211.93869018554688,
              474.1171875
            ],
            [
              86.39999389648438,
              474.1171875
            ]
          ],
          "bbox": [
            86.39999389648438,
            464.0308532714844,
            211.93869018554688,
            474.1171875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/Code/12",
          "block_type": "Code",
          "html": "<pre>def __init__(self):\n    self.items = []\ndef add(self, k, v):\n    self.items.append((k, v))\ndef get(self, k):\n    for key, val in self.items:\n        if key == k:\n            return val\n    raise KeyError</pre>",
          "polygon": [
            [
              106.00927734375,
              485.33203125
            ],
            [
              271.3359375,
              485.33203125
            ],
            [
              271.3359375,
              621.45703125
            ],
            [
              106.00927734375,
              621.45703125
            ]
          ],
          "bbox": [
            106.00927734375,
            485.33203125,
            271.3359375,
            621.45703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">add appends a key-value tuple to the list of items, which takes constant time.</p>",
          "polygon": [
            [
              85.763671875,
              625.7109375
            ],
            [
              423.9788818359375,
              625.7109375
            ],
            [
              423.9788818359375,
              636.4840393066406
            ],
            [
              85.763671875,
              636.4840393066406
            ]
          ],
          "bbox": [
            85.763671875,
            625.7109375,
            423.9788818359375,
            636.4840393066406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">get uses a for loop to search the list: if it finds the target key it returns the corresponding value; otherwise it raises a KeyError. So get is linear.</p>",
          "polygon": [
            [
              85.6142578125,
              646.3528900146484
            ],
            [
              482.4022216796875,
              646.3528900146484
            ],
            [
              482.4022216796875,
              668.6600494384766
            ],
            [
              85.6142578125,
              668.6600494384766
            ]
          ],
          "bbox": [
            85.6142578125,
            646.3528900146484,
            482.4022216796875,
            668.6600494384766
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/227/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\" class=\"has-continuation\">An alternative is to keep the list sorted by key. Then get could use a bisection search, which is <i>O</i>(log <i>n</i>). But inserting a new item in the middle of a list is linear, so this might</p>",
          "polygon": [
            [
              85.763671875,
              678.3046875
            ],
            [
              482.607421875,
              678.3046875
            ],
            [
              482.607421875,
              700.8350448608398
            ],
            [
              85.763671875,
              700.8350448608398
            ]
          ],
          "bbox": [
            85.763671875,
            678.3046875,
            482.607421875,
            700.8350448608398
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "2": "/page/225/SectionHeader/1",
        "4": "/page/227/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/228/Page/200",
      "block_type": "Page",
      "html": "<content-ref src='/page/228/PageHeader/0'></content-ref><content-ref src='/page/228/PageHeader/12'></content-ref><content-ref src='/page/228/Text/1'></content-ref><content-ref src='/page/228/Text/2'></content-ref><content-ref src='/page/228/Text/3'></content-ref><content-ref src='/page/228/Code/4'></content-ref><content-ref src='/page/228/Text/5'></content-ref><content-ref src='/page/228/Text/6'></content-ref><content-ref src='/page/228/Text/7'></content-ref><content-ref src='/page/228/Text/8'></content-ref><content-ref src='/page/228/Text/9'></content-ref><content-ref src='/page/228/Text/10'></content-ref><content-ref src='/page/228/Text/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/228/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.01904296875,
              60.76318359375
            ],
            [
              525.6033935546875,
              60.76318359375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.01904296875,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.01904296875,
            60.76318359375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/PageHeader/12",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.37646484375
            ],
            [
              525.638671875,
              60.37646484375
            ],
            [
              525.638671875,
              69.65771484375
            ],
            [
              510.099609375,
              69.65771484375
            ]
          ],
          "bbox": [
            510.099609375,
            60.37646484375,
            525.638671875,
            69.65771484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">not be the best option. There are other data structures (see <a href=\"http://en.wikipedia.org/wiki/Red-black_tree\">http://en.wikipedia.org/</a> <a href=\"http://en.wikipedia.org/wiki/Red-black_tree\">wiki/Red-black_tree</a>) that can implement add and get in log time, but that's still not as good as constant time, so let's move on.</p>",
          "polygon": [
            [
              128.197265625,
              87.8818359375
            ],
            [
              525.6397094726562,
              87.8818359375
            ],
            [
              525.6397094726562,
              123.1868896484375
            ],
            [
              128.197265625,
              123.1868896484375
            ]
          ],
          "bbox": [
            128.197265625,
            87.8818359375,
            525.6397094726562,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">One way to improve LinearMap is to break the list of key-value pairs into smaller lists. Here's an implementation called BetterMap, which is a list of 100 LinearMaps. As we'll see in a second, the order of growth for get is still linear, but BetterMap is a step on the path toward hashtables:</p>",
          "polygon": [
            [
              128.9443359375,
              131.291015625
            ],
            [
              525.6041259765625,
              131.291015625
            ],
            [
              525.6041259765625,
              178.08685302734375
            ],
            [
              128.9443359375,
              178.08685302734375
            ]
          ],
          "bbox": [
            128.9443359375,
            131.291015625,
            525.6041259765625,
            178.08685302734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">class BetterMap(object):</p>",
          "polygon": [
            [
              129.09375,
              182.3216552734375
            ],
            [
              255.13873291015625,
              182.3216552734375
            ],
            [
              255.13873291015625,
              192.28424072265625
            ],
            [
              129.09375,
              192.28424072265625
            ]
          ],
          "bbox": [
            129.09375,
            182.3216552734375,
            255.13873291015625,
            192.28424072265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Code/4",
          "block_type": "Code",
          "html": "<pre>def __init__(self, n=100):\n        self.maps = []\n        for i in range(n):\n            self.maps.append(LinearMap())\n    def find_map(self, k):\n        index = hash(k) % len(self.maps)\n        return self.maps[index]\n    def add(self, k, v):\n        m = self.find_map(k)\n        m.add(k, v)\n    def get(self, k):\n        m = self.find_map(k)\n        return m.get(k)\n__init__ makes a list of n LinearMaps.</pre>",
          "polygon": [
            [
              129.6000518798828,
              204.9609375
            ],
            [
              346.04296875,
              204.9609375
            ],
            [
              346.04296875,
              414.0838317871094
            ],
            [
              129.6000518798828,
              414.0838317871094
            ]
          ],
          "bbox": [
            129.6000518798828,
            204.9609375,
            346.04296875,
            414.0838317871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">find_map is used by add and get to figure out which map to put the new item in, or which map to search.</p>",
          "polygon": [
            [
              129.392578125,
              422.2896728515625
            ],
            [
              525.638671875,
              422.2896728515625
            ],
            [
              525.638671875,
              444.7265625
            ],
            [
              129.392578125,
              444.7265625
            ]
          ],
          "bbox": [
            129.392578125,
            422.2896728515625,
            525.638671875,
            444.7265625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">find_map uses the built-in function hash, which takes almost any Python object and returns an integer. A limitation of this implementation is that it only works with hashable keys. Mutable types like lists and dictionaries are unhashable.</p>",
          "polygon": [
            [
              128.9443359375,
              452.8016662597656
            ],
            [
              525.6033325195312,
              452.8016662597656
            ],
            [
              525.6033325195312,
              487.3028259277344
            ],
            [
              128.9443359375,
              487.3028259277344
            ]
          ],
          "bbox": [
            128.9443359375,
            452.8016662597656,
            525.6033325195312,
            487.3028259277344
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Hashable objects that are considered equal return the same hash value, but the converse is not necessarily true: two different objects can return the same hash value.</p>",
          "polygon": [
            [
              128.3466796875,
              495.0
            ],
            [
              525.9375,
              495.0
            ],
            [
              525.9375,
              517.8148193359375
            ],
            [
              128.3466796875,
              517.8148193359375
            ]
          ],
          "bbox": [
            128.3466796875,
            495.0,
            525.9375,
            517.8148193359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">find_map uses the modulus operator to wrap the hash values into the range from 0 to len(self.maps), so the result is a legal index into the list. Of course, this means that many different hash values will wrap onto the same index. But if the hash function spreads things out pretty evenly (which is what hash functions are designed to do), then we expect <i>n</i>/100 items per LinearMap.</p>",
          "polygon": [
            [
              128.794921875,
              525.55078125
            ],
            [
              525.638671875,
              525.55078125
            ],
            [
              525.638671875,
              584.9098205566406
            ],
            [
              128.794921875,
              584.9098205566406
            ]
          ],
          "bbox": [
            128.794921875,
            525.55078125,
            525.638671875,
            584.9098205566406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Since the run time of LinearMap.get is proportional to the number of items, we expect BetterMap to be about 100 times faster than LinearMap. The order of growth is still linear, but the leading coefficient is smaller. That's nice, but still not as good as a hashtable.</p>",
          "polygon": [
            [
              128.3466796875,
              593.1156616210938
            ],
            [
              525.6040649414062,
              593.1156616210938
            ],
            [
              525.6040649414062,
              627.6168212890625
            ],
            [
              128.3466796875,
              627.6168212890625
            ]
          ],
          "bbox": [
            128.3466796875,
            593.1156616210938,
            525.6040649414062,
            627.6168212890625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here (finally) is the crucial idea that makes hashtables fast: if you can keep the maximum length of the LinearMaps bounded, LinearMap.get is constant time. All you have to do is keep track of the number of items and when the number of items per LinearMap exceeds a threshold, resize the hashtable by adding more LinearMaps.</p>",
          "polygon": [
            [
              127.7490234375,
              635.765625
            ],
            [
              525.6033935546875,
              635.765625
            ],
            [
              525.6033935546875,
              682.5168380737305
            ],
            [
              127.7490234375,
              682.5168380737305
            ]
          ],
          "bbox": [
            127.7490234375,
            635.765625,
            525.6033935546875,
            682.5168380737305
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/228/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here is an implementation of a hashtable:</p>",
          "polygon": [
            [
              128.27197265625,
              690.6796875
            ],
            [
              312.812255859375,
              690.6796875
            ],
            [
              312.812255859375,
              700.8348388671875
            ],
            [
              128.27197265625,
              700.8348388671875
            ]
          ],
          "bbox": [
            128.27197265625,
            690.6796875,
            312.812255859375,
            700.8348388671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "2": "/page/225/SectionHeader/1",
        "4": "/page/227/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/229/Page/185",
      "block_type": "Page",
      "html": "<content-ref src='/page/229/PageHeader/0'></content-ref><content-ref src='/page/229/PageHeader/10'></content-ref><content-ref src='/page/229/Code/1'></content-ref><content-ref src='/page/229/Code/2'></content-ref><content-ref src='/page/229/Text/3'></content-ref><content-ref src='/page/229/Text/4'></content-ref><content-ref src='/page/229/Text/5'></content-ref><content-ref src='/page/229/Text/6'></content-ref><content-ref src='/page/229/Text/7'></content-ref><content-ref src='/page/229/Text/8'></content-ref><content-ref src='/page/229/Text/9'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/229/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.134765625
            ],
            [
              482.4034423828125,
              60.134765625
            ],
            [
              482.4034423828125,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.134765625,
            482.4034423828125,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/PageHeader/10",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.6142578125,
              60.47314453125
            ],
            [
              102.0498046875,
              60.47314453125
            ],
            [
              102.0498046875,
              70.04443359375
            ],
            [
              85.6142578125,
              70.04443359375
            ]
          ],
          "bbox": [
            85.6142578125,
            60.47314453125,
            102.0498046875,
            70.04443359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Code/1",
          "block_type": "Code",
          "html": "<pre>class HashMap(object):\n    def __init__(self):\n        self.maps = BetterMap(2)\n        self.num = 0\n    def get(self, k):\n        return self.maps.get(k)\n    def add(self, k, v):\n        if self.num == len(self.maps.maps):\n            self.resize()\n        self.maps.add(k, v)\n        self.num += 1\n    def resize(self):\n        new_maps = BetterMap(self.num * 2)\n        for m in self.maps.maps:\n            for k, v in m.items:\n                new_maps.add(k, v)</pre>",
          "polygon": [
            [
              86.4000015258789,
              88.68572998046875
            ],
            [
              311.3056945800781,
              88.68572998046875
            ],
            [
              311.3056945800781,
              369.31640625
            ],
            [
              86.4000015258789,
              369.31640625
            ]
          ],
          "bbox": [
            86.4000015258789,
            88.68572998046875,
            311.3056945800781,
            369.31640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Code/2",
          "block_type": "Code",
          "html": "<pre>self.maps = new_maps</pre>",
          "polygon": [
            [
              127.1513671875,
              369.123046875
            ],
            [
              232.8502655029297,
              369.123046875
            ],
            [
              232.8502655029297,
              379.1173095703125
            ],
            [
              127.1513671875,
              379.1173095703125
            ]
          ],
          "bbox": [
            127.1513671875,
            369.123046875,
            232.8502655029297,
            379.1173095703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Each HashMap contains a BetterMap; __init__ starts with just 2 LinearMaps and initializes num, which keeps track of the number of items.</p>",
          "polygon": [
            [
              85.3154296875,
              384.978515625
            ],
            [
              482.4005432128906,
              384.978515625
            ],
            [
              482.4005432128906,
              407.8648681640625
            ],
            [
              85.3154296875,
              407.8648681640625
            ]
          ],
          "bbox": [
            85.3154296875,
            384.978515625,
            482.4005432128906,
            407.8648681640625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">get just dispatches to BetterMap. The real work happens in add, which checks the number of items and the size of the BetterMap: if they are equal, the average number of items per LinearMap is 1, so it calls resize.</p>",
          "polygon": [
            [
              85.166015625,
              417.26953125
            ],
            [
              482.4026794433594,
              417.26953125
            ],
            [
              482.4026794433594,
              452.6288757324219
            ],
            [
              85.166015625,
              452.6288757324219
            ]
          ],
          "bbox": [
            85.166015625,
            417.26953125,
            482.4026794433594,
            452.6288757324219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">resize make a new BetterMap, twice as big as the previous one, and then \"rehashes\" the items from the old map to the new.</p>",
          "polygon": [
            [
              85.46484375,
              462.515625
            ],
            [
              482.4041748046875,
              462.515625
            ],
            [
              482.4041748046875,
              485.1978759765625
            ],
            [
              85.46484375,
              485.1978759765625
            ]
          ],
          "bbox": [
            85.46484375,
            462.515625,
            482.4041748046875,
            485.1978759765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Rehashing is necessary because changing the number of LinearMaps changes the denominator of the modulus operator in find_map. That means that some objects that used to wrap into the same LinearMap will get split up (which is what we wanted, right?).</p>",
          "polygon": [
            [
              85.46484375,
              495.0
            ],
            [
              482.4034118652344,
              495.0
            ],
            [
              482.4034118652344,
              529.9618835449219
            ],
            [
              85.46484375,
              529.9618835449219
            ]
          ],
          "bbox": [
            85.46484375,
            495.0,
            482.4034118652344,
            529.9618835449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Rehashing is linear, so resize is linear, which might seem bad, since I promised that add would be constant time. But remember that we don't have to resize every time, so add is usually constant time and only occasionally linear. The total amount of work to run add <i>n</i> times is proportional to <i>n</i>, so the average time of each add is constant time!</p>",
          "polygon": [
            [
              85.9130859375,
              539.47265625
            ],
            [
              482.40411376953125,
              539.47265625
            ],
            [
              482.40411376953125,
              586.9188842773438
            ],
            [
              85.9130859375,
              586.9188842773438
            ]
          ],
          "bbox": [
            85.9130859375,
            539.47265625,
            482.40411376953125,
            586.9188842773438
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">To see how this works, think about starting with an empty HashTable and adding a sequence of items. We start with 2 LinearMaps, so the first 2 adds are fast (no resizing required). Let's say that they take one unit of work each. The next add requires a resize, so we have to rehash the first two items (let's call that 2 more units of work) and then add the third item (one more unit). Adding the next item costs 1 unit, so the total so far is 6 units of work for 4 items.</p>",
          "polygon": [
            [
              86.0625,
              596.3203125
            ],
            [
              482.90625,
              596.3203125
            ],
            [
              482.90625,
              668.2659072875977
            ],
            [
              86.0625,
              668.2659072875977
            ]
          ],
          "bbox": [
            86.0625,
            596.3203125,
            482.90625,
            668.2659072875977
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/229/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next add costs 5 units, but the next three are only one unit each, so the total is 14 units for the first 8 adds.</p>",
          "polygon": [
            [
              85.9130859375,
              677.91796875
            ],
            [
              482.90625,
              677.91796875
            ],
            [
              482.90625,
              700.8349075317383
            ],
            [
              85.9130859375,
              700.8349075317383
            ]
          ],
          "bbox": [
            85.9130859375,
            677.91796875,
            482.90625,
            700.8349075317383
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "2": "/page/225/SectionHeader/1",
        "4": "/page/227/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/230/Page/121",
      "block_type": "Page",
      "html": "<content-ref src='/page/230/PageHeader/0'></content-ref><content-ref src='/page/230/PageHeader/9'></content-ref><content-ref src='/page/230/FigureGroup/120'></content-ref><content-ref src='/page/230/Text/3'></content-ref><content-ref src='/page/230/Text/4'></content-ref><content-ref src='/page/230/Text/5'></content-ref><content-ref src='/page/230/Text/6'></content-ref><content-ref src='/page/230/Text/7'></content-ref><content-ref src='/page/230/Text/8'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/230/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.197265625,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.197265625,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.197265625,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/230/PageHeader/9",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.203125,
              60.908203125
            ],
            [
              524.14453125,
              60.908203125
            ],
            [
              524.14453125,
              70.0927734375
            ],
            [
              509.203125,
              70.0927734375
            ]
          ],
          "bbox": [
            509.203125,
            60.908203125,
            524.14453125,
            70.0927734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/230/FigureGroup/120",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/230/Figure/1'></content-ref><content-ref src='/page/230/Caption/2'></content-ref>",
          "polygon": [
            [
              10.458984375,
              77.48876953125
            ],
            [
              612.0,
              77.48876953125
            ],
            [
              611.103515625,
              268.7529296875
            ],
            [
              9.263671875,
              268.7529296875
            ]
          ],
          "bbox": [
            9.263671875,
            77.48876953125,
            612.0,
            268.7529296875
          ],
          "children": [
            {
              "id": "/page/230/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  10.458984375,
                  77.48876953125
                ],
                [
                  612.0,
                  77.48876953125
                ],
                [
                  611.103515625,
                  251.173828125
                ],
                [
                  9.263671875,
                  251.173828125
                ]
              ],
              "bbox": [
                9.263671875,
                77.48876953125,
                612.0,
                251.173828125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1",
                "4": "/page/227/SectionHeader/5"
              },
              "images": {
                "/page/230/Figure/1": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAHPBkcDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiqmqSPFpF7JGxV0gdlYdQQpwa4/w74Xk1PwxpN/ceJfERnubOGaQrqBA3MgJwMepoA7uiuX/wCEJX/oZfEn/gxP+FH/AAhK/wDQy+JP/Bif8KAOoorl/wDhCV/6GXxJ/wCDE/4Uf8ISv/Qy+JP/AAYn/CgDqKK4S+0q48P+IPDT2+u6zcJdaibeaK6uzIjJ5Ez9MeqLXd0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFLWP+QJf/8AXtJ/6Cao+Df+RG8P/wDYNtv/AEUtXtY/5Al//wBe0n/oJqj4N/5Ebw//ANg22/8ARS0AbdFFFABRRRQBy/iz/kNeEP8AsMH/ANJbiuorl/Fn/Ia8If8AYYP/AKS3Fa+sf2yLZDov2Azh8ut7vCsuDwCvKnOOcH6UAaNFcr/wk+tWPGr+Er5VHWbTZUu0/wC+flk/8cqzZeOfDV9OLdNXgguT/wAu93m3l/74kCt+lAHQ0UgIIBByD0IpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooApax/wAgS/8A+vaT/wBBNUfBv/IjeH/+wbbf+ilq9rH/ACBL/wD69pP/AEE1R8G/8iN4f/7Btt/6KWgDbooooAr31ja6lZS2d7bx3FtMu2SKRdysPQiuf/4Vv4K/6FfSv/AZa6iigDzXxL4C8J22reF44PDumxpcaoYplW3UB0+zzNtPqMqp/AVo6x4F8MWFsjaf4BsNSmd9vlxxwxhBgnczORgfTJ56Vo+LP+Q14Q/7DB/9JbiuooA8t/4Vm+o/f8PeEtFiPaKzN5KPxOxQfwNW7P4I+D45Vm1C2fUJRz8wSBM/7kKoMfXNej0UAU9L0nT9FsUstMs4bS2TpHCgUfX3PvVyiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKOtsqaDqLMQFW1lJJ7Daa4bwt8TfBdn4R0W1uPENpHPDYQRyI27KsI1BB47EV3Wsf8gS//AOvaT/0E1R8G/wDIjeH/APsG23/opaAMn/ha3gX/AKGWy/Nv8KP+FreBf+hlsvzb/CuxooA47/ha3gX/AKGWy/Nv8KP+FreBf+hlsvzb/CuxooA831Lxv4a8R+JfCdppGsW95OmqmRkjzkL9mnGeR6sB+NekVy/iz/kNeEP+wwf/AEluK6igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooApax/yBL/8A69pP/QTVHwb/AMiN4f8A+wbbf+ilq9rH/IEv/wDr2k/9BNUfBv8AyI3h/wD7Btt/6KWgDbooooAKKKKAOX8Wf8hrwh/2GD/6S3FdRXL+LP8AkNeEP+wwf/SW4rqKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigClrH/IEv8A/r2k/wDQTVHwb/yI3h//ALBtt/6KWr2sf8gS/wD+vaT/ANBNUfBv/IjeH/8AsG23/opaANuiiigAooooA5fxZ/yGvCH/AGGD/wCktxXUVy/iz/kNeEP+wwf/AEluK6igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo62WGg6iVALfZZcAnGTtNcP4W1rxpH4Q0VLfwdZzQLYQCORtZCF18tcEr5Rxkc4ycV3Osf8gS//wCvaT/0E1R8G/8A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oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooApax/yBL/8A69pP/QTVHwb/AMiN4f8A+wbbf+ilq9rH/IEv/wDr2k/9BNUfBv8AyI3h/wD7Btt/6KWgDbooooAKKKKAOX8Wf8hrwh/2GD/6S3FdRXL+LP8AkNeEP+wwf/SW4rqKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorE1Xxj4b0O8+x6prdjZ3O0P5U0wVsHocGgDborl/wDhZHgr/oaNK/8AAlaP+FkeCv8AoaNK/wDAlaAOoorl/wDhZHgr/oaNK/8AAlaP+FkeCv8AoaNK/wDAlaAOoorl/wDhZHgr/oaNK/8AAla6K0u7e/s4bu0mSa3mQPHLGcq6noQfSgCaiiigAooooAKKKKACiiigAooooAKK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UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUV574U0K713w3a6nd+KPECz3BkZliulVRh2AAG3pgCgD0KiuX/4Qt/8AoafEn/gYv/xFH/CFv/0NPiT/AMDF/wDiKAOoorl/+ELf/oafEn/gYv8A8RR/whb/APQ0+JP/AAMX/wCIoA6iiuA17RrvQBpV7beJddlZtWs4XiuLlXR0eZVZSNo6gmu/oAKKKKACiiigArl9I/5KL4n/AOvSw/8Aa1dRXnNx4ZOv/EjxCw13WtN8q1suNOuhEHyJfvfKc4xx9TQB6NRXEf8ACuG/6Hbxj/4Mh/8AEUf8K4b/AKHbxj/4Mh/8RQB29FcR/wAK4b/odvGP/gyH/wARR/wrhv8AodvGP/gyH/xFAHbN90/SuZ+HH/JNvDn/AGD4f/QRWcfhw20/8Vt4x/8ABkP/AIitD4bjHw18ODJP/EviPP8AuigDqKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigClrH/ACBL/wD69pP/AEE1R8G/8iN4f/7Btt/6KWrutru0HUVyRm1lGR1HymuB8L/D9rrwlo1x/wAJj4sh82xgfyodRComY1O1Rs4A6AUAemUVxH/CuG/6Hbxj/wCDIf8AxFH/AArhv+h28Y/+DIf/ABFAHb0VxH/CuG/6Hbxj/wCDIf8AxFH/AArhv+h28Y/+DIf/ABFAF/xZ/wAhrwh/2GD/AOktxXUV5pf+EjoXifwncnxFr+o79VKeVqF4JUX/AEeY7gNo54xn0Jr0ugAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5f4df8AIh6Z9JP/AEY9dRXL/Dr/AJEPTPpJ/wCjHoA6iiiigAooooA5fx1/yDNJ/wCw3p//AKUpXUVy/jr/AJBmk/8AYb0//wBKUrb1T+0/sTHSBaG7DDAu9wjI7jK8g+/NAF2iuV/4SXXbDjV/CV5tHBm0uZLtPrtOyT8lNWLPx14avJxb/wBqxWt0f+Xe9VraXPpskCk/hQB0VFIrBlDKQQRkEd6WgArl9I/5KL4n/wCvSw/9rV1FcvpH/JRfE/8A16WH/tagDqKKKKACiiigBG+6fpXM/Dj/AJJt4c/7B8P/AKCK6Zvun6VzPw4/5Jt4c/7B8P8A6CKAOnooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKWsf8gS//wCvaT/0E1R8G/8AIjeH/wDsG23/AKKWr2sf8gS//wCvaT/0E1R8G/8AIjeH/wDsG23/AKKWgDbooooAKKKKAOX8Wf8AIa8If9hg/wDpLcV1Fcv4s/5DXhD/ALDB/wDSW4rqKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArl/h1/yIemfST/0Y9dRXL/Dr/kQ9M+kn/ox6AOoooooAjngiureW3nQSQyoUdG6MpGCD+Fc3/wAK48G/9C7Y/wDfuuoooA818Y+A/Ctnp+mvbaFZxNJq9jExVOqNOisPoQSK1dU8CeFbCyaa18GQ6hNuCrBAqKxz3y7KAPXmrvjr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"
              }
            },
            {
              "id": "/page/230/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-230-0\"></span>Figure B.1: The cost of a hashtable add.</p>",
              "polygon": [
                [
                  239.8095703125,
                  258.521484375
                ],
                [
                  414.7734375,
                  258.521484375
                ],
                [
                  414.7734375,
                  268.7529296875
                ],
                [
                  239.8095703125,
                  268.7529296875
                ]
              ],
              "bbox": [
                239.8095703125,
                258.521484375,
                414.7734375,
                268.7529296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/222/SectionHeader/1",
                "2": "/page/225/SectionHeader/1",
                "4": "/page/227/SectionHeader/5"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": null
        },
        {
          "id": "/page/230/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next add costs 9 units, but then we can add 7 more before the next resize, so the total is 30 units for the first 16 adds.</p>",
          "polygon": [
            [
              128.794921875,
              290.8125
            ],
            [
              527.431640625,
              290.8125
            ],
            [
              527.431640625,
              313.6438903808594
            ],
            [
              128.794921875,
              313.6438903808594
            ]
          ],
          "bbox": [
            128.794921875,
            290.8125,
            527.431640625,
            313.6438903808594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/230/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">After 32 adds, the total cost is 62 units, and I hope you are starting to see a pattern. After <i>n</i> adds, where <i>n</i> is a power of two, the total cost is 2<i>n</i> − 2 units, so the average work per add is a little less than 2 units. When <i>n</i> is a power of two, that's the best case; for other values of <i>n</i> the average work is a little higher, but that's not important. The important thing is that it is <i>O</i>(1).</p>",
          "polygon": [
            [
              128.794921875,
              323.6466064453125
            ],
            [
              527.431640625,
              323.6466064453125
            ],
            [
              527.431640625,
              382.55889892578125
            ],
            [
              128.794921875,
              382.55889892578125
            ]
          ],
          "bbox": [
            128.794921875,
            323.6466064453125,
            527.431640625,
            382.55889892578125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/230/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-230-0\">B.1</a> shows how this works graphically. Each block represents a unit of work. The columns show the total work for each add in order from left to right: the first two adds cost 1 units, the third costs 3 units, etc.</p>",
          "polygon": [
            [
              129.59999084472656,
              391.939453125
            ],
            [
              526.53515625,
              391.939453125
            ],
            [
              526.53515625,
              427.08489990234375
            ],
            [
              129.59999084472656,
              427.08489990234375
            ]
          ],
          "bbox": [
            129.59999084472656,
            391.939453125,
            526.53515625,
            427.08489990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/230/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The extra work of rehashing appears as a sequence of increasingly tall towers with increasing space between them. Now if you knock over the towers, amortizing the cost of resizing over all adds, you can see graphically that the total cost after <i>n</i> adds is 2<i>n</i> − 2.</p>",
          "polygon": [
            [
              129.2431640625,
              436.9921875
            ],
            [
              526.53515625,
              436.9921875
            ],
            [
              526.53515625,
              471.796875
            ],
            [
              129.2431640625,
              471.796875
            ]
          ],
          "bbox": [
            129.2431640625,
            436.9921875,
            526.53515625,
            471.796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/230/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">An important feature of this algorithm is that when we resize the HashTable it grows geometrically; that is, we multiply the size by a constant. If you increase the size arithmetically—adding a fixed number each time—the average time per add is linear.</p>",
          "polygon": [
            [
              129.392578125,
              481.46484375
            ],
            [
              526.833984375,
              481.46484375
            ],
            [
              526.833984375,
              516.1369018554688
            ],
            [
              129.392578125,
              516.1369018554688
            ]
          ],
          "bbox": [
            129.392578125,
            481.46484375,
            526.833984375,
            516.1369018554688
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/230/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can download my implementation of HashMap from <a href=\"http://thinkpython/code/Map.py\">http://thinkpython/code/</a> <a href=\"http://thinkpython/code/Map.py\">Map.py</a>, but remember that there is no reason to use it; if you want a map, just use a Python dictionary.</p>",
          "polygon": [
            [
              129.5419921875,
              525.55078125
            ],
            [
              526.53515625,
              525.55078125
            ],
            [
              526.53515625,
              560.6629028320312
            ],
            [
              129.5419921875,
              560.6629028320312
            ]
          ],
          "bbox": [
            129.5419921875,
            525.55078125,
            526.53515625,
            560.6629028320312
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "2": "/page/225/SectionHeader/1",
        "4": "/page/227/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/231/Page/3",
      "block_type": "Page",
      "html": "<content-ref src='/page/231/PageHeader/1'></content-ref><content-ref src='/page/231/Text/0'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/231/PageHeader/1",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.568359375,
              59.98974609375
            ],
            [
              101.302734375,
              59.98974609375
            ],
            [
              101.302734375,
              70.52783203125
            ],
            [
              84.568359375,
              70.52783203125
            ]
          ],
          "bbox": [
            84.568359375,
            59.98974609375,
            101.302734375,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        },
        {
          "id": "/page/231/Text/0",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><b>210 Appendix B. Analysis of Algorithms</b></p>",
          "polygon": [
            [
              86.4000015258789,
              59.5546875
            ],
            [
              482.607421875,
              59.5546875
            ],
            [
              482.607421875,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            59.5546875,
            482.607421875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/225/SectionHeader/1",
            "4": "/page/227/SectionHeader/5"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/222/SectionHeader/1",
        "2": "/page/225/SectionHeader/1",
        "4": "/page/227/SectionHeader/5"
      },
      "images": null
    },
    {
      "id": "/page/232/Page/129",
      "block_type": "Page",
      "html": "<content-ref src='/page/232/SectionHeader/0'></content-ref><content-ref src='/page/232/SectionHeader/1'></content-ref><content-ref src='/page/232/Text/2'></content-ref><content-ref src='/page/232/Text/3'></content-ref><content-ref src='/page/232/Text/4'></content-ref><content-ref src='/page/232/Text/5'></content-ref><content-ref src='/page/232/Text/6'></content-ref><content-ref src='/page/232/Text/7'></content-ref><content-ref src='/page/232/Text/8'></content-ref><content-ref src='/page/232/Text/9'></content-ref><content-ref src='/page/232/Text/10'></content-ref><content-ref src='/page/232/SectionHeader/11'></content-ref><content-ref src='/page/232/Text/12'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/232/SectionHeader/0",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-232-0\"></span><b>Appendix C</b></h2>",
          "polygon": [
            [
              128.49609375,
              161.068359375
            ],
            [
              246.533203125,
              161.068359375
            ],
            [
              246.533203125,
              182.990966796875
            ],
            [
              128.49609375,
              182.990966796875
            ]
          ],
          "bbox": [
            128.49609375,
            161.068359375,
            246.533203125,
            182.990966796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/222/SectionHeader/1",
            "2": "/page/232/SectionHeader/0"
          },
          "images": {}
        },
        {
          "id": "/page/232/SectionHeader/1",
          "block_type": "SectionHeader",
          "html": "<h1><b>Lumpy</b></h1>",
          "polygon": [
            [
              129.09375,
              215.89129638671875
            ],
            [
              212.765625,
              215.89129638671875
            ],
            [
              212.765625,
              241.69921875
            ],
            [
              129.09375,
              241.69921875
            ]
          ],
          "bbox": [
            129.09375,
            215.89129638671875,
            212.765625,
            241.69921875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Throughout the book, I have used diagrams to represent the state of running programs.</p>",
          "polygon": [
            [
              129.09375,
              286.9453125
            ],
            [
              514.58203125,
              286.9453125
            ],
            [
              514.58203125,
              297.2768859863281
            ],
            [
              129.09375,
              297.2768859863281
            ]
          ],
          "bbox": [
            129.09375,
            286.9453125,
            514.58203125,
            297.2768859863281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In Section <a href=\"#page-33-0\">2.2,</a> we used a state diagram to show the names and values of variables. In Section <a href=\"#page-46-0\">3.10</a> I introduced a stack diagram, which shows one frame for each function call. Each frame shows the parameters and local variables for the function or method. Stack diagrams for recursive functions appear in Section <a href=\"#page-66-0\">5.9</a> and Section <a href=\"#page-76-0\">6.5.</a></p>",
          "polygon": [
            [
              128.6455078125,
              304.734375
            ],
            [
              527.1328125,
              304.734375
            ],
            [
              527.1328125,
              352.20489501953125
            ],
            [
              128.6455078125,
              352.20489501953125
            ]
          ],
          "bbox": [
            128.6455078125,
            304.734375,
            527.1328125,
            352.20489501953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Section <a href=\"#page-108-2\">10.2</a> shows what a list looks like in a state diagram, Section <a href=\"#page-126-0\">11.4</a> shows what a dictionary looks like, and Section <a href=\"#page-138-0\">12.6</a> shows two ways to represent tuples.</p>",
          "polygon": [
            [
              128.197265625,
              360.421875
            ],
            [
              526.236328125,
              360.421875
            ],
            [
              526.236328125,
              382.743896484375
            ],
            [
              128.197265625,
              382.743896484375
            ]
          ],
          "bbox": [
            128.197265625,
            360.421875,
            526.236328125,
            382.743896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Section <a href=\"#page-165-0\">15.2</a> introduces object diagrams, which show the state of an object's attributes, and their attributes, and so on. Section <a href=\"#page-166-0\">15.3</a> has object diagrams for Rectangles and their embedded Points. Section <a href=\"#page-172-1\">16.1</a> shows the state of a Time object. Section <a href=\"#page-189-0\">18.2</a> has a diagram that includes a class object and an instance, each with their own attributes.</p>",
          "polygon": [
            [
              129.392578125,
              390.5859375
            ],
            [
              526.236328125,
              390.5859375
            ],
            [
              526.236328125,
              437.6708984375
            ],
            [
              129.392578125,
              437.6708984375
            ]
          ],
          "bbox": [
            129.392578125,
            390.5859375,
            526.236328125,
            437.6708984375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Finally, Section <a href=\"#page-194-0\">18.8</a> introduces class diagrams, which show the classes that make up a program and the relationships between them.</p>",
          "polygon": [
            [
              128.6455078125,
              446.0533142089844
            ],
            [
              526.53515625,
              446.0533142089844
            ],
            [
              526.53515625,
              468.20989990234375
            ],
            [
              128.6455078125,
              468.20989990234375
            ]
          ],
          "bbox": [
            128.6455078125,
            446.0533142089844,
            526.53515625,
            468.20989990234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">These diagrams are based on the Unified Modeling Language (UML), which is a standardized graphical language used by software engineers to communicate about program design, especially for object-oriented programs.</p>",
          "polygon": [
            [
              129.09375,
              476.4375
            ],
            [
              525.9375,
              476.4375
            ],
            [
              525.9375,
              510.9429016113281
            ],
            [
              129.09375,
              510.9429016113281
            ]
          ],
          "bbox": [
            129.09375,
            476.4375,
            525.9375,
            510.9429016113281
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">UML is a rich language with many kinds of diagrams that represent many kinds of relationship between objects and classes. What I presented in this book is a small subset of the language, but it is the subset most commonly used in practice.</p>",
          "polygon": [
            [
              128.794921875,
              518.9765625
            ],
            [
              526.236328125,
              518.9765625
            ],
            [
              526.236328125,
              553.6759033203125
            ],
            [
              128.794921875,
              553.6759033203125
            ]
          ],
          "bbox": [
            128.794921875,
            518.9765625,
            526.236328125,
            553.6759033203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The purpose of this appendix is to review the diagrams presented in the previous chapters, and to introduce Lumpy. Lumpy, which stands for \"UML in Python,\" with some of the letters rearranged, is part of Swampy, which you already installed if you worked on the case study in Chapter <a href=\"#page-52-0\">4</a> or Chapter <a href=\"#page-200-0\">19,</a> or if you did Exercise <a href=\"#page-170-2\">15.4,</a></p>",
          "polygon": [
            [
              128.6455078125,
              561.90234375
            ],
            [
              526.53515625,
              561.90234375
            ],
            [
              526.53515625,
              608.6039123535156
            ],
            [
              128.6455078125,
              608.6039123535156
            ]
          ],
          "bbox": [
            128.6455078125,
            561.90234375,
            526.53515625,
            608.6039123535156
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Lumpy uses Python's inspect module to examine the state of a running program and generate object diagrams (including stack diagrams) and class diagrams.</p>",
          "polygon": [
            [
              128.197265625,
              616.4296875
            ],
            [
              526.236328125,
              616.4296875
            ],
            [
              526.236328125,
              639.1419067382812
            ],
            [
              128.197265625,
              639.1419067382812
            ]
          ],
          "bbox": [
            128.197265625,
            616.4296875,
            526.236328125,
            639.1419067382812
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1"
          },
          "images": {}
        },
        {
          "id": "/page/232/SectionHeader/11",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-232-1\"></span><b>C.1 State diagram</b></h4>",
          "polygon": [
            [
              127.4501953125,
              665.9296875
            ],
            [
              256.5439453125,
              665.9296875
            ],
            [
              256.5439453125,
              680.3199615478516
            ],
            [
              127.4501953125,
              680.3199615478516
            ]
          ],
          "bbox": [
            127.4501953125,
            665.9296875,
            256.5439453125,
            680.3199615478516
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/232/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's an example that uses Lumpy to generate a state diagram.</p>",
          "polygon": [
            [
              126.703125,
              690.6796875
            ],
            [
              411.81048583984375,
              690.6796875
            ],
            [
              411.81048583984375,
              700.8349151611328
            ],
            [
              126.703125,
              700.8349151611328
            ]
          ],
          "bbox": [
            126.703125,
            690.6796875,
            411.81048583984375,
            700.8349151611328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "4": "/page/232/SectionHeader/11"
      },
      "images": null
    },
    {
      "id": "/page/233/Page/175",
      "block_type": "Page",
      "html": "<content-ref src='/page/233/PageHeader/0'></content-ref><content-ref src='/page/233/PageHeader/18'></content-ref><content-ref src='/page/233/Figure/1'></content-ref><content-ref src='/page/233/Text/2'></content-ref><content-ref src='/page/233/FigureGroup/172'></content-ref><content-ref src='/page/233/Text/5'></content-ref><content-ref src='/page/233/Code/6'></content-ref><content-ref src='/page/233/Code/7'></content-ref><content-ref src='/page/233/Code/8'></content-ref><content-ref src='/page/233/Text/9'></content-ref><content-ref src='/page/233/Text/10'></content-ref><content-ref src='/page/233/Text/11'></content-ref><content-ref src='/page/233/Text/12'></content-ref><content-ref src='/page/233/Text/13'></content-ref><content-ref src='/page/233/Text/14'></content-ref><content-ref src='/page/233/Text/15'></content-ref><content-ref src='/page/233/SectionHeader/16'></content-ref><content-ref src='/page/233/Text/17'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/233/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.27978515625
            ],
            [
              482.4034729003906,
              60.27978515625
            ],
            [
              482.4034729003906,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.27978515625,
            482.4034729003906,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/PageHeader/18",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.64306640625,
              60.37646484375
            ],
            [
              102.42333984375,
              60.37646484375
            ],
            [
              102.42333984375,
              70.81787109375
            ],
            [
              84.64306640625,
              70.81787109375
            ]
          ],
          "bbox": [
            84.64306640625,
            60.37646484375,
            102.42333984375,
            70.81787109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Figure/1",
          "block_type": "Figure",
          "html": "",
          "polygon": [
            [
              201.111328125,
              89.525390625
            ],
            [
              366.36328125,
              89.525390625
            ],
            [
              366.36328125,
              150.046875
            ],
            [
              201.111328125,
              150.046875
            ]
          ],
          "bbox": [
            201.111328125,
            89.525390625,
            366.36328125,
            150.046875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {
            "/page/233/Figure/1": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAChAbkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+s2/1U215DYwQ77qcExmVvLj/wC+j1P+yoJ9cDmtKuMk1TxDrl5q9nY6Tos9jZ3ZtW+23Mis7BEfO0RsMfOO/atqVCVW/LbTu7Cbsat14hntLyS1/s2WZo2CGRJEVWbZv4BOQMA/p+E0mvAJJNDZzS20CK88gZRsBUNwCfmIUgn9MniufbTPFbTNK2k6EXZg5zqt1jIQp08vH3SRimNpHipgF/srQwmxUZBq10FkVRgBx5fzccc5yODmtPqkv5o/+BIXMbmo61ceUXs4JRAl1HC1wCpBJdVYbTzt5Iz1z7c1b/tj5gDauB9r+ysdw4PZvpyK5i50fxVdu7S6Vom13EjRpq10iFwQQ21YwM5A59qdLpXiya7+0vpeib/NE21dWulTeMYbaI8Z4FH1SX80f/AkHMdRFNMmu3MDzs8H2dJVRguEJZgcEAHHA65qlp3imz1K7ihh2bZwTCyzI7cDPzKDlcgcfrg8VjrYeL11E3407RvtBGCTrF2Vxycbdm3HJ4xRb2PjG0lDw6foyqM7Yv7WufLXPovl4/DHHbFH1SX80f8AwJBzHR2mqs+ovptzEFukXeWhbfGR7nqh9mA9icVp1yVsvjOzh8q20fw3FHnO1L2YZJ6k/uuT71L9o8df9A3w9/4HTf8Axqj6pL+aP/gSDmOoorl/tHjr/oG+Hv8AwOm/+NUfaPHX/QN8Pf8AgdN/8ao+qS/mj/4Eg5jqKK5f7R46/wCgb4e/8Dpv/jVH2jx1/wBA3w9/4HTf/GqPqkv5o/8AgSDmOoorl/tHjr/oG+Hv/A6b/wCNUaXreu/8JSmi6zY6dD5llJdRyWdw8n3XRcHci/3/ANKHhJ2bTTtro0HMjqKKKK5SgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5jwh/x/8Air/sNP8A+iIa6euY8If8f/ir/sNP/wCiIa6qP8Gr6L80S90dPRRRXKUFFFFABRRRQAUUUUAFFQ3RAs5ifMxsb/V53dO23nP05rnNEE9vLoxZ9UdrmzY3JuRMwEgCY3BuEOd3pn3oA6moJby1hkEctxEjnorOAamOcHHXtWZpUVtJpu6REeRs/aC4BO/uDWFWpJTUIWu7vXyt/maQinFykalcvP8A8lSsf+wLcf8Ao6Gr2nNqH2ZhbLbvbCRxCZHYHZk47HisWdtS/wCFm2X7u08z+x7jA8xsY86H269K3wGKU05cr1jLp5BVouLtdbnaUVR3ar/zysv+/jf/ABNG7Vf+eVl/38b/AOJrn+sL+V/cx+yfdfeXqKo7tV/55WX/AH8b/wCJqa3N6XP2lLdVxx5bknP4gVUayk7Wf3MTptK9194lrqFneyzR2tzHM0JCyCNs7T6foarw67p09ylvHOxkdyiZicKzDOQGIweh79qp2F4kniXUAILxRIkSo8lpKiEruz8xUDuO/NW5opLjX7csjeRawtIGI4MjfKMe4UN/30K2MzSooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuY8If8f/ir/sNP/wCiIa6euY8If8f/AIq/7DT/APoiGuqj/Bq+i/NEvdHT0UUVylBRRRQAUUUUAFFFFABRRRQAVVm02yuJfNltkZz1OOv19fxq1RUTpwmrTV/UqMpRd4uwgAVQqgAAYAHauYn/AOSpWP8A2Bbj/wBHQ11FcvP/AMlSsf8AsC3H/o6Gu3CfFL/DL8jOR1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcx4Q/4/8AxV/2Gn/9EQ109cx4Q/4//FX/AGGn/wDRENdVH+DV9F+aJe6OnooorlKCiiigAooooAKKKKACiiigAooooAK5ef8A5KlY/wDYFuP/AEdDXUVy8/8AyVKx/wCwLcf+joa6sJ8Uv8MvyJkdRRRRXKUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXMeEP8Aj/8AFX/Yaf8A9EQ109cx4Q/4/wDxV/2Gn/8ARENdVH+DV9F+aJe6OnooorlKCiiigAooooAKKKKACiiigAooqpNqdlBKYpLhQ4+8OTt+uOn41E6kKavNpepUYyk7RVy3XLz/APJUrH/sC3H/AKOhrp1YOoZSCpGQR0NcxP8A8lSsf+wLcf8Ao6Gu3CfFL/DL8jOR1FFFFcpQUUUUAFFULbV7W61i90uPzPtNmsby5XC4cErg9+hpbXWLK8v7ixhkk+0wDMkckLpgeo3AAjp0z1HrQBeooqte3sdhAs0qOyGRIyUGcFiACfbJFAFmiiigAooooAKKKrXt7FYQrJIruWcIiRruZ2PQAUAWaKit5jPAspikiLfwSDDD61LQAUUUUAFFFFABRRUc80dtBJPK22ONS7t6ADJNAElFQ3FyttZyXRV3SNC5CDkgDPGafDKs8EcyZ2SKGXPoRmgB9FRQz+c8y+VKnlPsy64D8A5X1HOPqDUtABRRRQAUUUUAFFFFABRVSe/S3vra1eKX/SCVSQAbNwBODznOAe1W6ACiozcRC5W3L/vmQuF9VBAJ/UVJQAUVQ1jV7XQ9Ne/vPM8hGVT5a7jlmCjj6kVfoAKKKKACuY8If8f/AIq/7DT/APoiGunrmPCH/H/4q/7DT/8AoiGuqj/Bq+i/NEvdHT0UUVylGD4i0sanc6cr6cLuON5C5bYQgMbAZDEE/MR0B6Z7VipoF+mkyW0Fk1srpaySxgxnzmUESqfmwWPBOeG6E13FFAHJWmkyw6RqkSWN7suFRRbqIIM9QxQKSoODzuxnAo0/S57ew1eKLS5FimiVI1URW8spwwI+Q7BjPBwuffg11tFAHI6bpt5YQ6kbLS1QPbqkXnwxRtIw3ZUrGwRhg9SFz0yRyIdP0e/hfUobS1uLSG5swkcsiwQgSgt/DFyOCOcE+/Su0ooA4lNNEmvGKy0qPSbgaZMqMCmVkJQB8ISB3G48nnjirGgaPNZ6nBKbW5tykZWUiKBEckfxFDufnkHH1xk109tZWtnv+y20MHmHc/lRhdx9TjqanoAQ5wcde1Zmlz20OnCOWRI5Uz54cgHd3J+talQyWlvNIJJbeJ3HRmQEj8awq05OanC11da+dv8AI0hJKLjIy9Ojv/szG3kgjtmkdoVkjJIQk47jisWZNR/4WbZAz23mf2PcYPlNjHnQ9t30rtK5ef8A5KlY/wDYFuP/AEdDW+AwqgnHmfwy6vt26BVrOTvZb9ja8vVf+fi0/wC/Lf8AxVHl6r/z8Wn/AH5b/wCKq9RXP9Xj3f3v/MftX2X3Io+Xqv8Az8Wn/flv/iqlt1vFc/aZYXXHAjQqc/iTVmiqjQUXe7+9idRtWsvuIBbQQ3E93HAPtEqqJGXG5wudo5+p/OuWtbLWoLm01V7WVppLmRp7UCIMkb8HL+ZggBU6c/LXYUVsZnIW2jvb+XdRaI0V3/ajSFwYt4hLsc5D/dwfu5z7VFfaRcNC6jQ5LnUReLN9tWSNS6CUNwxYN90bdpwOPTmu0ooAByAcY9q5LU9Fa5udduV0YyXLxJ9jmzFlnC4yhLfKQccnHQegrraKAOY1Cwaa9upbrRX1AzRr9mbdHmD5cFcsw2Hdk7lz19hVPUNH1yC5WbT4opZXtIzdOdg+0yRgqYzu5wwbOeny12dFAFTSrJNN0m0skVVWCJUwowMgc/rWX4lsFvpNOJ0T+0hDcb3+WE7VwQR+8Ydcjp6Vv0UAc/qFgrz2ckujG6sEgKCzCxnyXyMHYTtPGRkE47cE1RvtJuZNDsbeTSp7hku/NEcUsYa3i352bmdf4fl+Un06V11FAFawtoLa0RLeyWzQ/MYFVV2k9chSRn6GqXiG1N7pq2/2We4RpVLrC0e5QOc4f5WGQPlPXNa1FAHJW+lXS6M0P9mgQC9ErWqhI2uItoByobYDnBxkAheQMmo5tENy6BdC2ae15C4tG8oBAA29yu7AByowMk45HNdjRQBwsfhy/i054LWxNqZIIxNtaP8AelJSSp+bklDxnjHBI6VZtvD7S6Zq9sbKRI7m3KLBPBBHEz4OGCoTznHJx0HXFdjRQBg20Kx6LeW9loMlmxhI8tUhj81yuMDa2M+5wPeoNJ019NvrFoNIe3jNgUuWUxjMoK4DYbLNw3PPXrzXS0UAc/osUttPqUZ0Ke0tp5TLGuYNpGxQRhXPJIPbHqao6Ro01hHozQ6S1pOIZI7uVTFuX5eN5DfMMgYxnHtXXUUAcRDpiQazoMU2jxw3Mcrma5LoxuGETfPwSzc4OXAIJHrXb1BFZWsNxJcRW0Mc8v8ArJFjAZ/qepqegDlotLT7SFvNCe4vRdGUX4aMZG/crb924ADA247YxjmmSaVOZZF/stm1JroyJqeU+VN+Qd2d4AX5duMduhzXWUUAcNP4ZM9xdSnQl3yS3R3N5XzblHlt97pkHHcE5wOtJHpgm1DVg/h9bqeQRBZC8YMMhhXJJJ+U5IO5Mk49hXdVXisLOC5kuYbSCOeX/WSpGAz/AFI5NAGRejUIpdJRdPur02rh5p43iAY+Wyn7zg5yR2rP1vR7q81eW5mtprmCSJFhVIYZDCRnI/eEbSTzlT+PArr6KAOXutHhW8067utGOpNHZmCRpI4nl3/IQWLEAnhuQcZpmu6XdX+oQXT2ss1r9nCC38mGUxPkkkq528ggZUnp6V1dFAGXY6aj6BBY30ckyKo3Jc7S3DZXO0kcYHQnpWpRRQAUUUUAFcx4Q/4//FX/AGGn/wDRENdPXMeEP+P/AMVf9hp//RENdVH+DV9F+aJe6OnooorlKCiiigAooooAKKKKACiiigAooooAK5ef/kqVj/2Bbj/0dDXUVy8//JUrH/sC3H/o6GurCfFL/DL8iZHUUUUVylBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVzHhD/j/APFX/Yaf/wBEQ109cx4Q/wCP/wAVf9hp/wD0RDXVR/g1fRfmiXujp6KKK5SgooooAKKKKACiiigAooooAKKKKACuXn/5KlY/9gW4/wDR0NdRXLz/APJUrH/sC3H/AKOhrqwnxS/wy/ImR1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcx4Q/4/8AxV/2Gn/9EQ109cx4Q/4//FX/AGGn/wDRENdVH+DV9F+aJe6OnooorlKCiiigAooooAKKKzfEMSTeG9TR0V1NrJwwyM7TigDSqKGfznmXypU8p9mXXAfgHK+o5x9Qa5zR9OeK5s54NHGniKEi4dXQm5JXgfKctzzufB/M1a0GOa1vL+P+xZrG3mn82MkwhB8ig8I5IJIPagDeqpNqllBKY5JwGX72ASF+pHT8atHODjr2rL0u5toNOEc0kcUseROrsAd3cnPrXNWqyjJRTSvfV+VtN1+fQ1pwTTbTfoaisrqGUhlIyCDwRXMT/wDJUrH/ALAtx/6Ohq/p0N+bZmt5oordpHaFHiJIQk47isWaPUP+Fm2Q+0weZ/Y9xhvJOMedDxjd9K6cvxEppy5HrGXbt6iq0lF25lv5/wCR2dFUfK1T/n7tv+/B/wDiqPK1T/n7tv8Avwf/AIquf20v+fb/AA/zH7NfzL8f8i9RVHytU/5+7b/vwf8A4qprdLxXJuJ4pFxwEjKnP5mqjVk3Zwa+7/MTgkr8y/H/ACII9Wje+W1e2uYfMLLFJKmFkK8kDnI4BPIGccZq/WB5Nxd+ILW8XT7y3eLcsrzzK0ewg/cUOcMTt5ABwDk9q047u6fVp7V9PkS1SJXS7MilZGJOVC53Aj1IrYzCHUoJ9RmsVWYSxKHYvEyqQSRwSOenUcUlxqltbala2DljPc52BVyBgE8ntnBx9DVJWvP+EoeU6Zci2MAhE++LbkMTnG/djn0z7VSu9M1WPxFaXMRS4t3u/NmYQgNEgjZQCxlGQN3ZT1J+oBtjUoDqn9n7ZhN5ZkBaJghAxnDEYP3h0zTJtVWPUTZR2lzPIqqztGq7UDEgZJI/unpVS5e8/wCEltZU0y5kt44ZI2nV4guWKEHBcNj5T2qvrlj9puZmg0id75ogkF6kqqqHnBPzAjaST0OR69KANK91eCxn8pop5SsfmymJMiJM43Nz04PAyeDxxReaxDZtjybidRH5sjwpuEaf3jzz0PAyeOlZ+vWE10SltBdtczQeS8sUiJEV54kyd2AST8ozyR3NR6jHqKJBpcOnXU+nRwKsskEkStNgY8v5nUqOOT3zgd6ANe71OC1jhIEk8k/+pihXc0nGeOwGO5IHvTLnVRatbRmzupJ7hWcQxhSyhcZz82ONw6E1natp8s15Y3gtrxoo4Hie3tJxE6ltpHIZcgbSOD6daS4s2ksNOGqaTNqVxFDhnidMq5AyDllznA59RnigDXub1reGN1s7qZ5OkUSgsOMnJJCj8/pmoJNbt1tLS4hinuBdttiSJBuJwSchiMYCmquy6h0G2s7y0vbp3i2ytazhXQ9hv3q2e2Qe3NQf2fs0PT7e/wBIkvPIJxHEyZi6hcjcob5Tg4zzQBrz6iltZJcSwzK0hVUhwDIWPRcZxn8ce9SWd5HewmRFdCrFHjcYZGHUH/OKyUspl8PJHc2920qSmSGOGRWlhG8lBuY4JUYBySO3IqxoFhNY2tw1xvEtzO07LI4dlyAo3EcZwoJxwM4HAoA1qKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArmPCH/H/4q/7DT/8AoiGunriLGbXdB1bXlTwxeX0N5qLXUU0NxAoKmONejODnKHtXZho88KkU1dpbtLqu9iXujt6K5j/hJNe/6EnU/wDwLtv/AI5R/wAJJr3/AEJOp/8AgXbf/HKn6nU7x/8AAo/5hzI6eiuY/wCEk17/AKEnU/8AwLtv/jlH/CSa9/0JOp/+Bdt/8co+p1O8f/Ao/wCYcyOnormP+Ek17/oSdT/8C7b/AOOUf8JJr3/Qk6n/AOBdt/8AHKPqdTvH/wACj/mHMjp6jnghuYWhuIklicYZJFDK31BrnP8AhJNe/wChJ1P/AMC7b/45R/wkmvf9CTqf/gXbf/HKPqdTvH/wKP8AmHMjo4IIbWFYbeKOKJOFSNQqj6AVJXMf8JJr3/Qk6n/4F23/AMco/wCEk17/AKEnU/8AwLtv/jlH1Op3j/4FH/MOZHT1FJbQSuHkhjdx0ZkBIrnf+Ek17/oSdT/8C7b/AOOUf8JJr3/Qk6n/AOBdt/8AHKTwU5Kz5f8AwKP+Y1O2x09cvP8A8lSsf+wLcf8Ao6Gl/wCEk17/AKEnU/8AwLtv/jlVtN/tjUvHcOqXmg3Gm2kOmS2+6eeJyztLGwACMeymt6NCVLmlJq3K/tRfTyZLdzsKKKK88sKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//Z"
          }
        },
        {
          "id": "/page/233/Text/2",
          "block_type": "Text",
          "html": "<p block-type=\"Text\"><span id=\"page-233-1\"></span>Figure C.1: State diagram generated by Lumpy.</p>",
          "polygon": [
            [
              178.400390625,
              162.615234375
            ],
            [
              389.970703125,
              162.615234375
            ],
            [
              389.970703125,
              173.7529296875
            ],
            [
              178.400390625,
              173.7529296875
            ]
          ],
          "bbox": [
            178.400390625,
            162.615234375,
            389.970703125,
            173.7529296875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/FigureGroup/172",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/233/Figure/3'></content-ref><content-ref src='/page/233/Caption/4'></content-ref>",
          "polygon": [
            [
              171.6767578125,
              187.751953125
            ],
            [
              395.6484375,
              187.751953125
            ],
            [
              395.6484375,
              232.0838623046875
            ],
            [
              171.6767578125,
              232.0838623046875
            ]
          ],
          "bbox": [
            171.6767578125,
            187.751953125,
            395.6484375,
            232.0838623046875
          ],
          "children": [
            {
              "id": "/page/233/Figure/3",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  171.6767578125,
                  187.751953125
                ],
                [
                  395.6484375,
                  187.751953125
                ],
                [
                  395.6484375,
                  207.66796875
                ],
                [
                  171.6767578125,
                  207.66796875
                ]
              ],
              "bbox": [
                171.6767578125,
                187.751953125,
                395.6484375,
                207.66796875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "4": "/page/232/SectionHeader/11"
              },
              "images": {
                "/page/233/Figure/3": "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"
              }
            },
            {
              "id": "/page/233/Caption/4",
              "block_type": "Caption",
              "html": "<p><span id=\"page-233-2\"></span>Figure C.2: Stack diagram.</p>",
              "polygon": [
                [
                  226.0290069580078,
                  220.623046875
                ],
                [
                  342.770751953125,
                  220.623046875
                ],
                [
                  342.770751953125,
                  232.0838623046875
                ],
                [
                  226.0290069580078,
                  232.0838623046875
                ]
              ],
              "bbox": [
                226.0290069580078,
                220.623046875,
                342.770751953125,
                232.0838623046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "4": "/page/232/SectionHeader/11"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": null
        },
        {
          "id": "/page/233/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from swampy.Lumpy import Lumpy</p>",
          "polygon": [
            [
              85.39013671875,
              254.84765625
            ],
            [
              243.544921875,
              254.84765625
            ],
            [
              243.544921875,
              265.2802734375
            ],
            [
              85.39013671875,
              265.2802734375
            ]
          ],
          "bbox": [
            85.39013671875,
            254.84765625,
            243.544921875,
            265.2802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Code/6",
          "block_type": "Code",
          "html": "<pre>lumpy = Lumpy()\nlumpy.make_reference()</pre>",
          "polygon": [
            [
              85.6142578125,
              279.2109375
            ],
            [
              210.375,
              279.2109375
            ],
            [
              210.375,
              301.8622741699219
            ],
            [
              85.6142578125,
              301.8622741699219
            ]
          ],
          "bbox": [
            85.6142578125,
            279.2109375,
            210.375,
            301.8622741699219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Code/7",
          "block_type": "Code",
          "html": "<pre>message = 'And now for something completely different'\nn = 17\npi = 3.1415926535897932</pre>",
          "polygon": [
            [
              86.13720703125,
              313.62890625
            ],
            [
              368.7734069824219,
              313.62890625
            ],
            [
              368.7734069824219,
              350.6402893066406
            ],
            [
              86.13720703125,
              350.6402893066406
            ]
          ],
          "bbox": [
            86.13720703125,
            313.62890625,
            368.7734069824219,
            350.6402893066406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Code/8",
          "block_type": "Code",
          "html": "<pre>lumpy.object_diagram()</pre>",
          "polygon": [
            [
              85.9130859375,
              364.095703125
            ],
            [
              201.47799682617188,
              364.095703125
            ],
            [
              201.47799682617188,
              375.0282897949219
            ],
            [
              85.9130859375,
              375.0282897949219
            ]
          ],
          "bbox": [
            85.9130859375,
            364.095703125,
            201.47799682617188,
            375.0282897949219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The first line imports the Lumpy class from swampy.Lumpy. If you don't have Swampy installed as a package, make sure the Swampy files are in Python's search path and use this import statement instead:</p>",
          "polygon": [
            [
              85.763671875,
              380.53125
            ],
            [
              482.607421875,
              380.53125
            ],
            [
              482.607421875,
              416.49285888671875
            ],
            [
              85.763671875,
              416.49285888671875
            ]
          ],
          "bbox": [
            85.763671875,
            380.53125,
            482.607421875,
            416.49285888671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from Lumpy import Lumpy</p>",
          "polygon": [
            [
              85.9130859375,
              422.68359375
            ],
            [
              208.4326171875,
              422.68359375
            ],
            [
              208.4326171875,
              433.2702941894531
            ],
            [
              85.9130859375,
              433.2702941894531
            ]
          ],
          "bbox": [
            85.9130859375,
            422.68359375,
            208.4326171875,
            433.2702941894531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The next lines create a Lumpy object and make a \"reference\" point, which means that Lumpy records the objects that have been defined so far.</p>",
          "polygon": [
            [
              86.0625,
              439.69921875
            ],
            [
              482.90625,
              439.69921875
            ],
            [
              482.90625,
              462.5408630371094
            ],
            [
              86.0625,
              462.5408630371094
            ]
          ],
          "bbox": [
            86.0625,
            439.69921875,
            482.90625,
            462.5408630371094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Next we define new variables and invoke object_diagram, which draws the objects that have been defined since the reference point, in this case message, n and pi.</p>",
          "polygon": [
            [
              85.6142578125,
              472.18359375
            ],
            [
              482.90625,
              472.18359375
            ],
            [
              482.90625,
              495.63287353515625
            ],
            [
              85.6142578125,
              495.63287353515625
            ]
          ],
          "bbox": [
            85.6142578125,
            472.18359375,
            482.90625,
            495.63287353515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-233-1\">C.1</a> shows the result. The graphical style is different from what I showed earlier; for example, each reference is represented by a circle next to the variable name and a line to the value. And long strings are truncated. But the information conveyed by the diagram is the same.</p>",
          "polygon": [
            [
              85.9130859375,
              505.0546875
            ],
            [
              483.50390625,
              505.0546875
            ],
            [
              483.50390625,
              553.1138916015625
            ],
            [
              85.9130859375,
              553.1138916015625
            ]
          ],
          "bbox": [
            85.9130859375,
            505.0546875,
            483.50390625,
            553.1138916015625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/14",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The variable names are in a frame labeled &lt;module&gt;, which indicates that these are modulelevel variables, also known as global.</p>",
          "polygon": [
            [
              86.0625,
              563.0625
            ],
            [
              482.90625,
              563.0625
            ],
            [
              482.90625,
              586.2058868408203
            ],
            [
              86.0625,
              586.2058868408203
            ]
          ],
          "bbox": [
            86.0625,
            563.0625,
            482.90625,
            586.2058868408203
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/15",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">You can download this example from <a href=\"http://thinkpython.com/code/lumpy_demo1.py\">http://thinkpython.com/code/lumpy_demo1.py</a>. Try adding some additional assignments and see what the diagram looks like.</p>",
          "polygon": [
            [
              86.0625,
              596.3203125
            ],
            [
              482.90625,
              596.3203125
            ],
            [
              482.90625,
              619.2978820800781
            ],
            [
              86.0625,
              619.2978820800781
            ]
          ],
          "bbox": [
            86.0625,
            596.3203125,
            482.90625,
            619.2978820800781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "4": "/page/232/SectionHeader/11"
          },
          "images": {}
        },
        {
          "id": "/page/233/SectionHeader/16",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-233-0\"></span><b>C.2 Stack diagram</b></h2>",
          "polygon": [
            [
              86.0625,
              649.30078125
            ],
            [
              215.5015106201172,
              649.30078125
            ],
            [
              215.5015106201172,
              665.2679290771484
            ],
            [
              86.0625,
              665.2679290771484
            ]
          ],
          "bbox": [
            86.0625,
            649.30078125,
            215.5015106201172,
            665.2679290771484
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/233/Text/17",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's an example that uses Lumpy to generate a stack diagram. You can download it from <a href=\"http://thinkpython.com/code/lumpy_demo2.py\">http://thinkpython.com/code/lumpy_demo2.py</a>.</p>",
          "polygon": [
            [
              85.9130859375,
              677.53125
            ],
            [
              482.90625,
              677.53125
            ],
            [
              482.90625,
              700.8348846435547
            ],
            [
              85.9130859375,
              700.8348846435547
            ]
          ],
          "bbox": [
            85.9130859375,
            677.53125,
            482.90625,
            700.8348846435547
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "2": "/page/233/SectionHeader/16"
      },
      "images": null
    },
    {
      "id": "/page/234/Page/157",
      "block_type": "Page",
      "html": "<content-ref src='/page/234/PageHeader/0'></content-ref><content-ref src='/page/234/PageHeader/12'></content-ref><content-ref src='/page/234/FigureGroup/155'></content-ref><content-ref src='/page/234/Code/3'></content-ref><content-ref src='/page/234/Text/4'></content-ref><content-ref src='/page/234/Text/5'></content-ref><content-ref src='/page/234/Text/6'></content-ref><content-ref src='/page/234/Text/7'></content-ref><content-ref src='/page/234/SectionHeader/8'></content-ref><content-ref src='/page/234/Text/9'></content-ref><content-ref src='/page/234/Text/10'></content-ref><content-ref src='/page/234/Code/11'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/234/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.3466796875,
              60.95654296875
            ],
            [
              525.6033935546875,
              60.95654296875
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.3466796875,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.3466796875,
            60.95654296875,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/234/PageHeader/12",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.521484375
            ],
            [
              526.236328125,
              60.521484375
            ],
            [
              526.236328125,
              70.189453125
            ],
            [
              510.099609375,
              70.189453125
            ]
          ],
          "bbox": [
            510.099609375,
            60.521484375,
            526.236328125,
            70.189453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/234/FigureGroup/155",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/234/Figure/1'></content-ref><content-ref src='/page/234/Caption/2'></content-ref>",
          "polygon": [
            [
              264.1640625,
              89.8193359375
            ],
            [
              388.4765625,
              89.8193359375
            ],
            [
              388.4765625,
              240.95196533203125
            ],
            [
              264.1640625,
              240.95196533203125
            ]
          ],
          "bbox": [
            264.1640625,
            89.8193359375,
            388.4765625,
            240.95196533203125
          ],
          "children": [
            {
              "id": "/page/234/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  264.462890625,
                  89.8193359375
                ],
                [
                  385.5506286621094,
                  89.8193359375
                ],
                [
                  385.5506286621094,
                  215.40234375
                ],
                [
                  264.462890625,
                  215.40234375
                ]
              ],
              "bbox": [
                264.462890625,
                89.8193359375,
                385.5506286621094,
                215.40234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16"
              },
              "images": {
                "/page/234/Figure/1": "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"
              }
            },
            {
              "id": "/page/234/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-234-1\"></span>Figure C.3: Object diagram.</p>",
              "polygon": [
                [
                  264.1640625,
                  230.87109375
                ],
                [
                  388.4765625,
                  230.87109375
                ],
                [
                  388.4765625,
                  240.95196533203125
                ],
                [
                  264.1640625,
                  240.95196533203125
                ]
              ],
              "bbox": [
                264.1640625,
                230.87109375,
                388.4765625,
                240.95196533203125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": null
        },
        {
          "id": "/page/234/Code/3",
          "block_type": "Code",
          "html": "<pre>from swampy.Lumpy import Lumpy\ndef countdown(n):\n    if n &lt;= 0:\n        print 'Blastoff!'\n        lumpy.object_diagram()\n    else:\n        print n\n        countdown(n-1)\nlumpy = Lumpy()\nlumpy.make_reference()</pre>",
          "polygon": [
            [
              129.59996032714844,
              262.67877197265625
            ],
            [
              286.5208435058594,
              262.67877197265625
            ],
            [
              286.5208435058594,
              406.77838134765625
            ],
            [
              129.59996032714844,
              406.77838134765625
            ]
          ],
          "bbox": [
            129.59996032714844,
            262.67877197265625,
            286.5208435058594,
            406.77838134765625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/234/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">countdown(3)</p>",
          "polygon": [
            [
              129.5419921875,
              405.66796875
            ],
            [
              205.7431640625,
              405.66796875
            ],
            [
              205.7431640625,
              418.973388671875
            ],
            [
              129.5419921875,
              418.973388671875
            ]
          ],
          "bbox": [
            129.5419921875,
            405.66796875,
            205.7431640625,
            418.973388671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/234/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-233-2\">C.2</a> shows the result. Each frame is represented with a box that has the function's name outside and variables inside. Since this function is recursive, there is one frame for each level of recursion.</p>",
          "polygon": [
            [
              128.6455078125,
              423.84375
            ],
            [
              525.9375,
              423.84375
            ],
            [
              525.9375,
              459.1739501953125
            ],
            [
              128.6455078125,
              459.1739501953125
            ]
          ],
          "bbox": [
            128.6455078125,
            423.84375,
            525.9375,
            459.1739501953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/234/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Remember that a stack diagram shows the state of the program at a particular point in its execution. To get the diagram you want, sometimes you have to think about where to invoke object_diagram.</p>",
          "polygon": [
            [
              128.49609375,
              468.703125
            ],
            [
              525.9375,
              468.703125
            ],
            [
              525.9375,
              503.1959533691406
            ],
            [
              128.49609375,
              503.1959533691406
            ]
          ],
          "bbox": [
            128.49609375,
            468.703125,
            525.9375,
            503.1959533691406
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/234/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">In this case I invoke object_diagram after executing the base case of the recursion; that way the stack diagram shows each level of the recursion. You can call object_diagram more than once to get a series of snapshots of the program's execution.</p>",
          "polygon": [
            [
              128.794921875,
              512.7178039550781
            ],
            [
              526.236328125,
              512.7178039550781
            ],
            [
              526.236328125,
              547.2189636230469
            ],
            [
              128.794921875,
              547.2189636230469
            ]
          ],
          "bbox": [
            128.794921875,
            512.7178039550781,
            526.236328125,
            547.2189636230469
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16"
          },
          "images": {}
        },
        {
          "id": "/page/234/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-234-0\"></span><b>C.3 Object diagrams</b></h4>",
          "polygon": [
            [
              127.8984375,
              575.4375
            ],
            [
              273.12890625,
              575.4375
            ],
            [
              273.12890625,
              590.2020111083984
            ],
            [
              127.8984375,
              590.2020111083984
            ]
          ],
          "bbox": [
            127.8984375,
            575.4375,
            273.12890625,
            590.2020111083984
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/234/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example generates an object diagram showing the lists from Section <a href=\"#page-108-1\">10.1.</a> You can download it from <a href=\"http://thinkpython.com/code/lumpy_demo3.py\">http://thinkpython.com/code/lumpy_demo3.py</a>.</p>",
          "polygon": [
            [
              128.197265625,
              601.734375
            ],
            [
              525.638671875,
              601.734375
            ],
            [
              525.638671875,
              624.9375
            ],
            [
              128.197265625,
              624.9375
            ]
          ],
          "bbox": [
            128.197265625,
            601.734375,
            525.638671875,
            624.9375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/234/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from swampy.Lumpy import Lumpy</p>",
          "polygon": [
            [
              128.42138671875,
              629.7518005371094
            ],
            [
              286.5208435058594,
              629.7518005371094
            ],
            [
              286.5208435058594,
              640.01953125
            ],
            [
              128.42138671875,
              640.01953125
            ]
          ],
          "bbox": [
            128.42138671875,
            629.7518005371094,
            286.5208435058594,
            640.01953125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/234/Code/11",
          "block_type": "Code",
          "html": "<pre>lumpy = Lumpy()\nlumpy.make_reference()\ncheeses = ['Cheddar', 'Edam', 'Gouda']</pre>",
          "polygon": [
            [
              129.392578125,
              653.16796875
            ],
            [
              328.3073425292969,
              653.16796875
            ],
            [
              328.3073425292969,
              700.6853942871094
            ],
            [
              129.392578125,
              700.6853942871094
            ]
          ],
          "bbox": [
            129.392578125,
            653.16796875,
            328.3073425292969,
            700.6853942871094
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "2": "/page/233/SectionHeader/16",
        "4": "/page/234/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/235/Page/157",
      "block_type": "Page",
      "html": "<content-ref src='/page/235/PageHeader/0'></content-ref><content-ref src='/page/235/PageHeader/14'></content-ref><content-ref src='/page/235/FigureGroup/156'></content-ref><content-ref src='/page/235/Code/3'></content-ref><content-ref src='/page/235/Code/4'></content-ref><content-ref src='/page/235/Text/5'></content-ref><content-ref src='/page/235/Text/6'></content-ref><content-ref src='/page/235/Text/7'></content-ref><content-ref src='/page/235/Text/8'></content-ref><content-ref src='/page/235/Text/9'></content-ref><content-ref src='/page/235/Text/10'></content-ref><content-ref src='/page/235/Text/11'></content-ref><content-ref src='/page/235/Text/12'></content-ref><content-ref src='/page/235/Text/13'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/235/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.76318359375
            ],
            [
              482.4034729003906,
              60.76318359375
            ],
            [
              482.4034729003906,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.76318359375,
            482.4034729003906,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/PageHeader/14",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.0166015625,
              61.0048828125
            ],
            [
              101.1533203125,
              61.0048828125
            ],
            [
              101.1533203125,
              70.6728515625
            ],
            [
              85.0166015625,
              70.6728515625
            ]
          ],
          "bbox": [
            85.0166015625,
            61.0048828125,
            101.1533203125,
            70.6728515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/FigureGroup/156",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/235/Figure/1'></content-ref><content-ref src='/page/235/Caption/2'></content-ref>",
          "polygon": [
            [
              222.029296875,
              89.889404296875
            ],
            [
              349.03125,
              89.889404296875
            ],
            [
              349.03125,
              324.951904296875
            ],
            [
              222.029296875,
              324.951904296875
            ]
          ],
          "bbox": [
            222.029296875,
            89.889404296875,
            349.03125,
            324.951904296875
          ],
          "children": [
            {
              "id": "/page/235/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  222.029296875,
                  89.889404296875
                ],
                [
                  349.03125,
                  89.889404296875
                ],
                [
                  349.03125,
                  300.48046875
                ],
                [
                  222.029296875,
                  300.48046875
                ]
              ],
              "bbox": [
                222.029296875,
                89.889404296875,
                349.03125,
                300.48046875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/234/SectionHeader/8"
              },
              "images": {
                "/page/235/Figure/1": "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9K6SitYRcVrK/rb9EiJNPZWCiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKw2/5HuP/sGN/wCjVrcrDb/ke4/+wY3/AKNWtqH2vRmlPr6G5RRRWJmFFFFABRRRQBh+KP8Aj203/sJ2v/owVuVh+KP+PbTf+wna/wDowVuVtP8AhR+f6GkvgXzCiiisTMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsNv+R7j/AOwY3/o1a3Kw2/5HuP8A7Bjf+jVrah9r0ZpT6+huUUUViZhRRRQAUUUUAYfij/j203/sJ2v/AKMFblYfij/j203/ALCdr/6MFblbT/hR+f6GkvgXzCiiisTMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsNv+R7j/7Bjf8Ao1a3Kw2/5HuP/sGN/wCjVrah9r0ZpT6+hs+dEZjD5ieaF3FNw3Y9celPrNXRoF8SSa2CftD2i2pGONoYtn8z+lY0mrzh5Zf7UC3q3RiXS9qfMu/AGMbySvzbgcc5xgViZnUGaJZlhMiCVgWVCw3EDqQKfWbPo1vP4htNZYnz7WCSBRjghypJ/wDHf1rSoACQBknFFZawRX+o3Quh5iwMqxxN90AqDux3zk/lUcby2Goy2lpbvPB5aybA4HlEkjAyehxnFcbxTTu4+6213el+iXl/XTf2Keietr+X3kfij/j203/sJ2v/AKMFblcv4kurtrfT92nyJjUbYjMiHJ8wccGtr7Ze/wDQLl/7+p/jXXPEQ9jB2fX7MvLyG6UuRbdeq/zL1FUftl7/ANAuX/v6n+NH2y9/6Bcv/f1P8aw+sw7P/wABl/kR7KXl96/zL1NMiK6ozqHbO1SeTj0qrHdXbyKr6dIik8sZEOPyNY+r3ekWfifSnnuLKC7LOHZ3RZNvltjOecZ6VrCopq6v801+ZEouO50lFFFWSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVht/yPcf/YMb/wBGrW5XMalqdnpXjSGa+nWCJtOZFZgcE+Ypxx9K6MPFybSV3ZmlJNtpdjp6Tau7dtG7GM45xWJ/wmPh7/oKQ/k3+FH/AAmPh7/oKQ/k3+FT9WrfyP7mHsqn8r+43KKw/wDhMfD3/QUh/Jv8KP8AhMfD3/QUh/Jv8KPq1b+R/cw9lU/lf3GlcWEVxKJd0kUoGPMicqSPQ+tPtrSK0RljByxyzMSWY+pJrK/4THw9/wBBSH8m/wAKP+Ex8Pf9BSH8m/wrNYCanzqm7+jKcazXLZ2DxR/x7ab/ANhO1/8ARgrcrj9a8RaTqR0y2s71JpjqVsQig5wJASeldhW9WEoU4qStv+gpxcYpNdwooormMgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//2Q=="
              }
            },
            {
              "id": "/page/235/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-235-0\"></span>Figure C.4: Object diagram.</p>",
              "polygon": [
                [
                  223.224609375,
                  314.98931884765625
                ],
                [
                  346.04296875,
                  314.98931884765625
                ],
                [
                  346.04296875,
                  324.951904296875
                ],
                [
                  223.224609375,
                  324.951904296875
                ]
              ],
              "bbox": [
                223.224609375,
                314.98931884765625,
                346.04296875,
                324.951904296875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/234/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/235/Code/3",
          "block_type": "Code",
          "html": "<pre>numbers = [17, 123]\nempty = []</pre>",
          "polygon": [
            [
              85.46484375,
              346.28875732421875
            ],
            [
              185.7769317626953,
              346.28875732421875
            ],
            [
              185.7769317626953,
              368.4453430175781
            ],
            [
              85.46484375,
              368.4453430175781
            ]
          ],
          "bbox": [
            85.46484375,
            346.28875732421875,
            185.7769317626953,
            368.4453430175781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Code/4",
          "block_type": "Code",
          "html": "<pre>lumpy.object_diagram()</pre>",
          "polygon": [
            [
              85.39013671875,
              382.8515625
            ],
            [
              201.4779815673828,
              382.8515625
            ],
            [
              201.4779815673828,
              392.8343505859375
            ],
            [
              85.39013671875,
              392.8343505859375
            ]
          ],
          "bbox": [
            85.39013671875,
            382.8515625,
            201.4779815673828,
            392.8343505859375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-234-1\">C.3</a> shows the result. Lists are represented by a box that shows the indices mapping to the elements. This representation is slightly misleading, since indices are not actually part of the list, but I think they make the diagram easier to read. The empty list is represented by an empty box.</p>",
          "polygon": [
            [
              85.46484375,
              397.93359375
            ],
            [
              482.90625,
              397.93359375
            ],
            [
              482.90625,
              445.00091552734375
            ],
            [
              85.46484375,
              445.00091552734375
            ]
          ],
          "bbox": [
            85.46484375,
            397.93359375,
            482.90625,
            445.00091552734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">And here's an example showing the dictionaries from Section <a href=\"#page-126-0\">11.4.</a> You can download it from <a href=\"http://thinkpython.com/code/lumpy_demo4.py\">http://thinkpython.com/code/lumpy_demo4.py</a>.</p>",
          "polygon": [
            [
              85.6142578125,
              454.0078125
            ],
            [
              482.40325927734375,
              454.0078125
            ],
            [
              482.40325927734375,
              476.6009216308594
            ],
            [
              85.6142578125,
              476.6009216308594
            ]
          ],
          "bbox": [
            85.6142578125,
            454.0078125,
            482.40325927734375,
            476.6009216308594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">from swampy.Lumpy import Lumpy</p>",
          "polygon": [
            [
              86.13720703125,
              481.9227600097656
            ],
            [
              243.32086181640625,
              481.9227600097656
            ],
            [
              243.32086181640625,
              491.8853454589844
            ],
            [
              86.13720703125,
              491.8853454589844
            ]
          ],
          "bbox": [
            86.13720703125,
            481.9227600097656,
            243.32086181640625,
            491.8853454589844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">lumpy = Lumpy() lumpy.make_reference()</p>",
          "polygon": [
            [
              85.9130859375,
              506.311767578125
            ],
            [
              203.3525390625,
              506.311767578125
            ],
            [
              203.3525390625,
              533.671875
            ],
            [
              85.9130859375,
              533.671875
            ]
          ],
          "bbox": [
            85.9130859375,
            506.311767578125,
            203.3525390625,
            533.671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">hist = histogram('parrot') inverse = invert_dict(hist)</p>",
          "polygon": [
            [
              85.9130859375,
              542.894775390625
            ],
            [
              227.62977600097656,
              542.894775390625
            ],
            [
              227.62977600097656,
              565.3828125
            ],
            [
              85.9130859375,
              565.3828125
            ]
          ],
          "bbox": [
            85.9130859375,
            542.894775390625,
            227.62977600097656,
            565.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">lumpy.object_diagram()</p>",
          "polygon": [
            [
              86.0625,
              579.477783203125
            ],
            [
              201.47796630859375,
              579.477783203125
            ],
            [
              201.47796630859375,
              589.4403839111328
            ],
            [
              86.0625,
              589.4403839111328
            ]
          ],
          "bbox": [
            86.0625,
            579.477783203125,
            201.47796630859375,
            589.4403839111328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/11",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-235-0\">C.4</a> shows the result. hist is a dictionary that maps from characters (single-letter strings) to integers; inverse maps from integers to lists of strings.</p>",
          "polygon": [
            [
              85.9130859375,
              594.38671875
            ],
            [
              482.4047546386719,
              594.38671875
            ],
            [
              482.4047546386719,
              617.2179412841797
            ],
            [
              85.9130859375,
              617.2179412841797
            ]
          ],
          "bbox": [
            85.9130859375,
            594.38671875,
            482.4047546386719,
            617.2179412841797
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/12",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This example generates an object diagram for Point and Rectangle objects, as in Section <a href=\"#page-168-0\">15.6.</a> You can download it from <a href=\"http://thinkpython.com/code/lumpy_demo5.py\">http://thinkpython.com/code/lumpy_demo5.py</a>.</p>",
          "polygon": [
            [
              86.0625,
              626.09765625
            ],
            [
              482.4033508300781,
              626.09765625
            ],
            [
              482.4033508300781,
              648.8179473876953
            ],
            [
              86.0625,
              648.8179473876953
            ]
          ],
          "bbox": [
            86.0625,
            626.09765625,
            482.4033508300781,
            648.8179473876953
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/235/Text/13",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">import copy from swampy.Lumpy import Lumpy</p>",
          "polygon": [
            [
              85.98779296875,
              666.3347930908203
            ],
            [
              243.32086181640625,
              666.3347930908203
            ],
            [
              243.32086181640625,
              688.4913864135742
            ],
            [
              85.98779296875,
              688.4913864135742
            ]
          ],
          "bbox": [
            85.98779296875,
            666.3347930908203,
            243.32086181640625,
            688.4913864135742
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "2": "/page/233/SectionHeader/16",
        "4": "/page/234/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/236/Page/176",
      "block_type": "Page",
      "html": "<content-ref src='/page/236/PageHeader/0'></content-ref><content-ref src='/page/236/PageHeader/10'></content-ref><content-ref src='/page/236/FigureGroup/172'></content-ref><content-ref src='/page/236/FigureGroup/173'></content-ref><content-ref src='/page/236/Code/5'></content-ref><content-ref src='/page/236/Code/6'></content-ref><content-ref src='/page/236/Text/7'></content-ref><content-ref src='/page/236/SectionHeader/8'></content-ref><content-ref src='/page/236/Text/9'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/236/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              129.2431640625,
              60.8115234375
            ],
            [
              525.6033935546875,
              60.8115234375
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              129.2431640625,
              71.13372802734375
            ]
          ],
          "bbox": [
            129.2431640625,
            60.8115234375,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/236/PageHeader/10",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              510.099609375,
              60.66650390625
            ],
            [
              526.236328125,
              60.66650390625
            ],
            [
              526.236328125,
              70.52783203125
            ],
            [
              510.099609375,
              70.52783203125
            ]
          ],
          "bbox": [
            510.099609375,
            60.66650390625,
            526.236328125,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/236/FigureGroup/172",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/236/Figure/1'></content-ref><content-ref src='/page/236/Caption/2'></content-ref>",
          "polygon": [
            [
              257.58984375,
              89.76708984375
            ],
            [
              393.9335021972656,
              89.76708984375
            ],
            [
              393.9335021972656,
              262.001953125
            ],
            [
              257.58984375,
              262.001953125
            ]
          ],
          "bbox": [
            257.58984375,
            89.76708984375,
            393.9335021972656,
            262.001953125
          ],
          "children": [
            {
              "id": "/page/236/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  257.58984375,
                  89.76708984375
                ],
                [
                  393.9335021972656,
                  89.76708984375
                ],
                [
                  393.9335021972656,
                  239.572265625
                ],
                [
                  257.58984375,
                  239.572265625
                ]
              ],
              "bbox": [
                257.58984375,
                89.76708984375,
                393.9335021972656,
                239.572265625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/234/SectionHeader/8"
              },
              "images": {
                "/page/236/Figure/1": "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"
              }
            },
            {
              "id": "/page/236/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-236-1\"></span>Figure C.5: Object diagram.</p>",
              "polygon": [
                [
                  265.5087890625,
                  251.560546875
                ],
                [
                  388.3171081542969,
                  251.560546875
                ],
                [
                  388.3171081542969,
                  262.001953125
                ],
                [
                  265.5087890625,
                  262.001953125
                ]
              ],
              "bbox": [
                265.5087890625,
                251.560546875,
                388.3171081542969,
                262.001953125
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/234/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/236/FigureGroup/173",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/236/Figure/3'></content-ref><content-ref src='/page/236/Caption/4'></content-ref>",
          "polygon": [
            [
              193.7900390625,
              276.890625
            ],
            [
              457.28631591796875,
              276.890625
            ],
            [
              457.28631591796875,
              367.3749084472656
            ],
            [
              193.7900390625,
              367.3749084472656
            ]
          ],
          "bbox": [
            193.7900390625,
            276.890625,
            457.28631591796875,
            367.3749084472656
          ],
          "children": [
            {
              "id": "/page/236/Figure/3",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  193.7900390625,
                  276.890625
                ],
                [
                  457.28631591796875,
                  276.890625
                ],
                [
                  457.28631591796875,
                  344.56640625
                ],
                [
                  193.7900390625,
                  344.56640625
                ]
              ],
              "bbox": [
                193.7900390625,
                276.890625,
                457.28631591796875,
                344.56640625
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/234/SectionHeader/8"
              },
              "images": {
                "/page/236/Figure/3": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAC1Ar4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiq9890lnK1lFHLcgfIkjbVJ+v+fqOtAFiiuXm1C6it7cLqLw3k90sUou4Au3KsdqLnHbggtn1NV7PxDdywQpPf2iGbyna5CALCroxxjOPvLtBJ6nv0oA7CiuaGtTvFCjX1tFC08kX9obRscKARtycZJJGeR8px7VNG1Zbe0tyb60W1e8uopJAAqAgsykZPHTOPQ0AdhRXI3Gr2FzoGmXt7eWRn+1xmOVmVekwViuTxx1xVjWdent75IreRY7drcTRzgxFZTk8Zd1GAACcc/MOR3AOmorn5b2/kNtLY7pLySJGltvvW4B7+Z/D9QW9dproBnAz170AFFFFABRRRQAUUUUAFFFFABRRRQAUUVh65LPBqOmsupLZQM0iuXA2k7cjOTjsaANyisHUtUns2guIp0mtLiExwmNQ26c/c59G5H1HvVS71S9s9Sazu9YtbbZaRzBng4kkJYEDJ5Hy52j5ueKAOporj7zxJqMc21o1tHW3jlWOUxKrswyQS7qcA8cDI/SuuRi0asQASASAc0AOooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorBXUbNPF72731o0r2+1Y96iRSGHy9cnOc4xVa21qc3kbyajayQvqElkIlUDGAxHOfvcD8O3egDp6K5m01q4uNdFt9tgeOWWVEWIIwUKDjPzB1YY5yCO3GRUmgX5SxYXmrJdToJC0OF8xdrHPAOTQB0VFcbb+KZXN6rXluMWT3URdoyUI7EKx45HBOferLajeTWV/arqUUlw2nC7ikhQBlLbugB6cDB689TQB1NFZGn30TaVI76zbTsiBnnBTEWRxuwcfnWbZa5bReFI5La6t3kV/JzAUIVixAJywC568n8+lAHU0Vx41m51DQXlTUY4ZLa/jilmQo3yb15Yg4xg89iBV/UtZktNPtGtrqO5WSYxS3cRjwnBP8TBQc4HJ/A0AdDRWbod7Nf6f5s5jZhIyBo2RtwHQnazAH1AP5dK0qACiiigAooooAKKKKACiiigAopCQoySAPU0AgjIOR7UALRSO6xozuwVFGWZjgAepoVldA6MGVhkEHIIoAWiiigArlfFUmoS634e0yy1O409L2acTSQKhYhIiwA3KR1HpXVVy+v8A/I6+Ef8Artdf+iGrqwf8W9tlJ99osmWwf8Itqv8A0Oetf98W/wD8aoPhTVGBB8Za0QeoMdv/APGq6iij65V8v/AY/wCQcqOWPhPUyu0+MtZK+nl2+P8A0VQfCmqMMN4y1kj3jt//AI1XU0UfXKvl/wCAx/yDlRy//CLar/0Oetf98W//AMapG8J6mwAbxlrJwc8x2/8A8arqaKPrlXy/8Bj/AJByo5f/AIRbVf8Aoc9a/wC+Lf8A+NUf8Itqv/Q561/3xb//ABqtS61o21/LaLpt7OYolmaSLy9u05HQuCfunjFTyavp0FvBPPfW8EU6hommkCbwRnjOPWj65V8v/AY/5ByoxP8AhFtV/wChz1r/AL4t/wD41R/w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"
              }
            },
            {
              "id": "/page/236/Caption/4",
              "block_type": "Caption",
              "html": "<p><span id=\"page-236-2\"></span>Figure C.6: Object diagram.</p>",
              "polygon": [
                [
                  265.95703125,
                  356.94140625
                ],
                [
                  388.3171081542969,
                  356.94140625
                ],
                [
                  388.3171081542969,
                  367.3749084472656
                ],
                [
                  265.95703125,
                  367.3749084472656
                ]
              ],
              "bbox": [
                265.95703125,
                356.94140625,
                388.3171081542969,
                367.3749084472656
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/234/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/236/Code/5",
          "block_type": "Code",
          "html": "<pre>lumpy = Lumpy()\nlumpy.make_reference()\nbox = Rectangle()\nbox.width = 100.0\nbox.height = 200.0\nbox.corner = Point()\nbox.corner.x = 0.0\nbox.corner.y = 0.0\nbox2 = copy.copy(box)</pre>",
          "polygon": [
            [
              128.57080078125,
              391.5007629394531
            ],
            [
              244.6779327392578,
              391.5007629394531
            ],
            [
              244.6779327392578,
              531.3515625
            ],
            [
              128.57080078125,
              531.3515625
            ]
          ],
          "bbox": [
            128.57080078125,
            391.5007629394531,
            244.6779327392578,
            531.3515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/236/Code/6",
          "block_type": "Code",
          "html": "<pre>lumpy.object_diagram()</pre>",
          "polygon": [
            [
              129.5419921875,
              537.8327941894531
            ],
            [
              244.6779327392578,
              537.8327941894531
            ],
            [
              244.6779327392578,
              548.3671875
            ],
            [
              129.5419921875,
              548.3671875
            ]
          ],
          "bbox": [
            129.5419921875,
            537.8327941894531,
            244.6779327392578,
            548.3671875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/236/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-236-1\">C.5</a> shows the result. copy.copy make a shallow copy, so box and box2 have their own width and height, but they share the same embedded Point object. This kind of sharing is usually fine with immutable objects, but with mutable types, it is highly errorprone.</p>",
          "polygon": [
            [
              128.6455078125,
              555.8057861328125
            ],
            [
              526.53515625,
              555.8057861328125
            ],
            [
              526.53515625,
              602.5009460449219
            ],
            [
              128.6455078125,
              602.5009460449219
            ]
          ],
          "bbox": [
            128.6455078125,
            555.8057861328125,
            526.53515625,
            602.5009460449219
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/234/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/236/SectionHeader/8",
          "block_type": "SectionHeader",
          "html": "<h4><span id=\"page-236-0\"></span><b>C.4 Function and class objects</b></h4>",
          "polygon": [
            [
              128.57080078125,
              636.92578125
            ],
            [
              335.9700012207031,
              636.92578125
            ],
            [
              335.9700012207031,
              651.62109375
            ],
            [
              128.57080078125,
              651.62109375
            ]
          ],
          "bbox": [
            128.57080078125,
            636.92578125,
            335.9700012207031,
            651.62109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/236/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">When I use Lumpy to make object diagrams, I usually define the functions and classes before I make the reference point. That way, function and class objects don't appear in the diagram.</p>",
          "polygon": [
            [
              127.8984375,
              665.54296875
            ],
            [
              525.9375,
              665.54296875
            ],
            [
              525.9375,
              700.8349533081055
            ],
            [
              127.8984375,
              700.8349533081055
            ]
          ],
          "bbox": [
            127.8984375,
            665.54296875,
            525.9375,
            700.8349533081055
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "2": "/page/233/SectionHeader/16",
        "4": "/page/236/SectionHeader/8"
      },
      "images": null
    },
    {
      "id": "/page/237/Page/158",
      "block_type": "Page",
      "html": "<content-ref src='/page/237/PageHeader/0'></content-ref><content-ref src='/page/237/PageHeader/11'></content-ref><content-ref src='/page/237/FigureGroup/156'></content-ref><content-ref src='/page/237/Text/3'></content-ref><content-ref src='/page/237/Code/4'></content-ref><content-ref src='/page/237/Code/5'></content-ref><content-ref src='/page/237/Text/6'></content-ref><content-ref src='/page/237/Text/7'></content-ref><content-ref src='/page/237/Text/8'></content-ref><content-ref src='/page/237/SectionHeader/9'></content-ref><content-ref src='/page/237/Text/10'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/237/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.328125
            ],
            [
              482.4034729003906,
              60.328125
            ],
            [
              482.4034729003906,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.328125,
            482.4034729003906,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/PageHeader/11",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              85.0166015625,
              60.76318359375
            ],
            [
              102.19921875,
              60.76318359375
            ],
            [
              102.19921875,
              70.91455078125
            ],
            [
              85.0166015625,
              70.91455078125
            ]
          ],
          "bbox": [
            85.0166015625,
            60.76318359375,
            102.19921875,
            70.91455078125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/FigureGroup/156",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/237/Figure/1'></content-ref><content-ref src='/page/237/Caption/2'></content-ref>",
          "polygon": [
            [
              218.2939453125,
              81.6943359375
            ],
            [
              360.38671875,
              81.6943359375
            ],
            [
              360.38671875,
              208.0546875
            ],
            [
              218.2939453125,
              208.0546875
            ]
          ],
          "bbox": [
            218.2939453125,
            81.6943359375,
            360.38671875,
            208.0546875
          ],
          "children": [
            {
              "id": "/page/237/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  218.2939453125,
                  81.6943359375
                ],
                [
                  360.38671875,
                  81.6943359375
                ],
                [
                  360.38671875,
                  184.5615234375
                ],
                [
                  218.2939453125,
                  184.5615234375
                ]
              ],
              "bbox": [
                218.2939453125,
                81.6943359375,
                360.38671875,
                184.5615234375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/236/SectionHeader/8"
              },
              "images": {
                "/page/237/Figure/1": "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Agvf+PC4/wCuTfyNYvgT/kQPD/8A2D4f/QBW1e/8eFx/1yb+RrF8Cf8AIgeH/wDsHw/+gCuqP+6y/wAS/KRP2joaKKK5SgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArmPhz/AMk80P8A69V/rXT15/4T1rUNC8K6bpd14T19p7WERu0UMRUkehMg/lXbQpuph5xjvePVLpLuS3Zo7e70+yvwgvLO3uNhyvnRK+36ZHFWQAAABgDtXMf8Jhc/9Ch4j/78Q/8Ax2j/AITC5/6FDxH/AN+If/jtR9Trdl96/wAw5kdPRXMf8Jhc/wDQoeI/+/EP/wAdo/4TC5/6FDxH/wB+If8A47R9Trdl96/zDmR09Fcx/wAJhc/9Ch4j/wC/EP8A8do/4TC5/wChQ8R/9+If/jtH1Ot2X3r/ADDmR0F7/wAeFx/1yb+RrF8Cf8iB4f8A+wfD/wCgCqlx4supbWWNfCPiLc6FRmCHuP8ArrWl4PtJ7DwZotpdRNFcQWUUckbdVYKAQa0nSlSwzU93JdU+j7Be7NqiiiuEoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z"
              }
            },
            {
              "id": "/page/237/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-237-1\"></span>Figure C.7: Class diagram.</p>",
              "polygon": [
                [
                  225.615234375,
                  197.9033203125
                ],
                [
                  343.65234375,
                  197.9033203125
                ],
                [
                  343.65234375,
                  208.0546875
                ],
                [
                  225.615234375,
                  208.0546875
                ]
              ],
              "bbox": [
                225.615234375,
                197.9033203125,
                343.65234375,
                208.0546875
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/233/SectionHeader/16",
                "4": "/page/236/SectionHeader/8"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": null
        },
        {
          "id": "/page/237/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">But if you are passing functions and classes as parameters, you might want them to appear. This example shows what that looks like; you can download it from <a href=\"http://thinkpython.com/code/lumpy_demo6.py\">http://thinkpython.</a> <a href=\"http://thinkpython.com/code/lumpy_demo6.py\">com/code/lumpy_demo6.py</a>.</p>",
          "polygon": [
            [
              85.0166015625,
              230.677734375
            ],
            [
              482.43389892578125,
              230.677734375
            ],
            [
              482.43389892578125,
              265.5469970703125
            ],
            [
              85.0166015625,
              265.5469970703125
            ]
          ],
          "bbox": [
            85.0166015625,
            230.677734375,
            482.43389892578125,
            265.5469970703125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/Code/4",
          "block_type": "Code",
          "html": "<pre>import copy\nfrom swampy.Lumpy import Lumpy\nlumpy = Lumpy()\nlumpy.make_reference()\nclass Point(object):\n    \"\"\"Represents a point in 2-D space.\"\"\"\nclass Rectangle(object):\n    \"\"\"Represents a rectangle.\"\"\"\ndef instantiate(constructor):\n    \"\"\"Instantiates a new object.\"\"\"\n    obj = constructor()\n    lumpy.object_diagram()\n    return obj</pre>",
          "polygon": [
            [
              85.0166015625,
              272.07879638671875
            ],
            [
              306.07977294921875,
              272.07879638671875
            ],
            [
              306.07977294921875,
              484.9453125
            ],
            [
              85.0166015625,
              484.9453125
            ]
          ],
          "bbox": [
            85.0166015625,
            272.07879638671875,
            306.07977294921875,
            484.9453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/Code/5",
          "block_type": "Code",
          "html": "<pre>point = instantiate(Point)</pre>",
          "polygon": [
            [
              86.361328125,
              491.1328125
            ],
            [
              224.12109375,
              491.1328125
            ],
            [
              224.12109375,
              501.5394287109375
            ],
            [
              86.361328125,
              501.5394287109375
            ]
          ],
          "bbox": [
            86.361328125,
            491.1328125,
            224.12109375,
            501.5394287109375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-236-2\">C.6</a> shows the result. Since we invoke object_diagram inside a function, we get a stack diagram with a frame for the module-level variables and for the invocation of instantiate.</p>",
          "polygon": [
            [
              85.9130859375,
              507.375
            ],
            [
              482.4033203125,
              507.375
            ],
            [
              482.4033203125,
              542.7229919433594
            ],
            [
              85.9130859375,
              542.7229919433594
            ]
          ],
          "bbox": [
            85.9130859375,
            507.375,
            482.4033203125,
            542.7229919433594
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/Text/7",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">At the module level, Point and Rectangle refer to class objects (which have type type); instantiate refers to a function object.</p>",
          "polygon": [
            [
              86.0625,
              551.84765625
            ],
            [
              483.50390625,
              551.84765625
            ],
            [
              483.50390625,
              575.5329895019531
            ],
            [
              86.0625,
              575.5329895019531
            ]
          ],
          "bbox": [
            86.0625,
            551.84765625,
            483.50390625,
            575.5329895019531
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/Text/8",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This diagram might clarify two points of common confusion: (1) the difference between the class object, Point, and the instance of Point, obj, and (2) the difference between the function object created when instantiate is defined, and the frame created with it is called.</p>",
          "polygon": [
            [
              86.2119140625,
              584.33203125
            ],
            [
              483.50390625,
              584.33203125
            ],
            [
              483.50390625,
              620.68359375
            ],
            [
              86.2119140625,
              620.68359375
            ]
          ],
          "bbox": [
            86.2119140625,
            584.33203125,
            483.50390625,
            620.68359375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/233/SectionHeader/16",
            "4": "/page/236/SectionHeader/8"
          },
          "images": {}
        },
        {
          "id": "/page/237/SectionHeader/9",
          "block_type": "SectionHeader",
          "html": "<h2><span id=\"page-237-0\"></span><b>C.5 Class Diagrams</b></h2>",
          "polygon": [
            [
              85.9130859375,
              649.30078125
            ],
            [
              225.1669921875,
              649.30078125
            ],
            [
              225.1669921875,
              665.6630401611328
            ],
            [
              85.9130859375,
              665.6630401611328
            ]
          ],
          "bbox": [
            85.9130859375,
            649.30078125,
            225.1669921875,
            665.6630401611328
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/237/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Although I distinguish between state diagrams, stack diagrams and object diagrams, they are mostly the same thing: they show the state of a running program at a point in time.</p>",
          "polygon": [
            [
              86.361328125,
              676.7578125
            ],
            [
              483.205078125,
              676.7578125
            ],
            [
              483.205078125,
              700.8349990844727
            ],
            [
              86.361328125,
              700.8349990844727
            ]
          ],
          "bbox": [
            86.361328125,
            676.7578125,
            483.205078125,
            700.8349990844727
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "2": "/page/237/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/238/Page/197",
      "block_type": "Page",
      "html": "<content-ref src='/page/238/PageHeader/0'></content-ref><content-ref src='/page/238/PageHeader/11'></content-ref><content-ref src='/page/238/FigureGroup/196'></content-ref><content-ref src='/page/238/Text/3'></content-ref><content-ref src='/page/238/Text/4'></content-ref><content-ref src='/page/238/Code/5'></content-ref><content-ref src='/page/238/Text/6'></content-ref><content-ref src='/page/238/Code/7'></content-ref><content-ref src='/page/238/Code/8'></content-ref><content-ref src='/page/238/Text/9'></content-ref><content-ref src='/page/238/Text/10'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/238/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              128.12255859375,
              61.171142578125
            ],
            [
              525.6033935546875,
              61.171142578125
            ],
            [
              525.6033935546875,
              71.13372802734375
            ],
            [
              128.12255859375,
              71.13372802734375
            ]
          ],
          "bbox": [
            128.12255859375,
            61.171142578125,
            525.6033935546875,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/PageHeader/11",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              509.501953125,
              60.328125
            ],
            [
              525.638671875,
              60.328125
            ],
            [
              525.638671875,
              70.3828125
            ],
            [
              509.501953125,
              70.3828125
            ]
          ],
          "bbox": [
            509.501953125,
            60.328125,
            525.638671875,
            70.3828125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/FigureGroup/196",
          "block_type": "FigureGroup",
          "html": "<content-ref src='/page/238/Figure/1'></content-ref><content-ref src='/page/238/Caption/2'></content-ref>",
          "polygon": [
            [
              186.767578125,
              84.0146484375
            ],
            [
              473.044921875,
              84.0146484375
            ],
            [
              473.044921875,
              332.6518859863281
            ],
            [
              186.767578125,
              332.6518859863281
            ]
          ],
          "bbox": [
            186.767578125,
            84.0146484375,
            473.044921875,
            332.6518859863281
          ],
          "children": [
            {
              "id": "/page/238/Figure/1",
              "block_type": "Figure",
              "html": "",
              "polygon": [
                [
                  186.767578125,
                  84.0146484375
                ],
                [
                  473.044921875,
                  84.0146484375
                ],
                [
                  473.044921875,
                  310.1484375
                ],
                [
                  186.767578125,
                  310.1484375
                ]
              ],
              "bbox": [
                186.767578125,
                84.0146484375,
                473.044921875,
                310.1484375
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/237/SectionHeader/9"
              },
              "images": {
                "/page/238/Figure/1": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAJbAvsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3HV9YsNCsDe6jOYbcOqbgjOdzHAGFBJyfasX/AIWF4a/5+7r/AMF9x/8AG6Xxz/yC9M/7DFj/AOj0rp67IwoRoxnNNtt7NLa3919ydb2Ry/8AwsLw1/z93X/gvuP/AI3R/wALC8Nf8/d1/wCC+4/+N11FFTz4X+SX/gS/+RD3jl/+FheGv+fu6/8ABfcf/G6P+FheGv8An7uv/Bfcf/G66iijnwv8kv8AwJf/ACIe8cv/AMLC8Nf8/d1/4L7j/wCN0f8ACwvDX/P3df8AgvuP/jddRRRz4X+SX/gS/wDkQ945f/hYXhr/AJ+7r/wX3H/xurGn+NdA1TU4dOtbyQ3cwYxxyWsse4KMnBZQOBXQVzGu/wDI8eE/967/APRNaU44aq3FRknZv4k9k3/KuwO6OnoqvfX1rpljNe3s6QW0Kl5JHOAornPCvii/8Qa3rEFzp/2K0t47eW0WQETMknmfM4zgZ2AgYBAPNc8MPUnTlVS92O/3pfqNtXsdXRRRWIwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkZgilmOABkmlqK5/49Zv8Acb+VNK7A5qL4j+Fpo1kiv7iSNhlWWwuCD9Dsp3/CwvDX/P3df+C+4/8AjdS+Af8Akn2gf9eEX/oIro67qywtOrKHLLRtfEun/bpK5mrnL/8ACwvDX/P3df8AgvuP/jdH/CwvDX/P3df+C+4/+N11FFZc+F/kl/4Ev/kQ945f/hYXhr/n7uv/AAX3H/xuj/hYXhr/AJ+7r/wX3H/xuuooo58L/JL/AMCX/wAiHvHL/wDCwvDX/P3df+C+4/8AjdH/AAsLw1/z93X/AIL7j/43XUUUc+F/kl/4Ev8A5EPeOX/4WF4a/wCfu6/8F9x/8bo/4WF4a/5+7r/wX3H/AMbrqKKOfC/yS/8AAl/8iHvHL/8ACwvDX/P3df8AgvuP/jdH/CwvDX/P3df+C+4/+N11FFHPhf5Jf+BL/wCRD3jl/wDhYXhr/n7uv/Bfcf8Axuj/AIWF4a/5+7r/AMF9x/8AG66iijnwv8kv/Al/8iHvHL/8LC8Nf8/d1/4L7j/43TZPiP4WiTfLfzxpkDc9jOoGTgclPWuqrl/iL/yIOrf9c1/9DWtaEcLVqxp8sldpfEur/wAIPmSudRRRRXAUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBzHjn/AJBemf8AYYsf/R6V09cx45/5Bemf9hix/wDR6V09dVT/AHeHrL9CVuzCutS1DfqUls9nHDp/DpOjFpMIHJ3BgEGDgHDevtVO3nvZNa1VrCW0t18mC4dLhGYksp6gMNvTrz9OK3rjStPu7hbi5sreaZcYd4wTxyOT6Go59E0q5maafTbSSVzud2hUlj7nHPQdfSuUop3j3OreG1uITbwxz23mSxTxNJkFc4BV1I+tU59e1FprS2s7Yb3s0uXcQGUfNxgLvXGMdcnqK2tQtbq6g8i2uYreN1KSFod7YIx8vzAA/UH6US6RYXFtBb3FrFOkChY/NUMVAGOv4UAZ8ep6ldmxtlihsruaF5pfPQyBdpC4ChhnOc9eBUN1LrbXGkoL2xile4lSXZC7o+EcjjeMcAZHOD34rXl0nTp7WK2ksbdoIv8AVxmMbU/3R2/Ch9K0+SzSzayt/syHKRCMBVPqB26mgC1GJBEolZWkA+ZlXaCfYZOPzNcp4ouoLHxZ4au7mQR28AvZZXPRVWDJP4AV1FvbQWkCwW0McMS/dSNQoH4Cub8QIknjXwrHIqsjG7DKwyCDD0IrrwVvau+3LL/0lky2K2nWk/jO6t9c1SJo9HjIl03T3/5ad1nlHc91Xt160+2vLbTvHPiu8vJkht4bGxeSRzgKB5/JqH974An/AI5fCsre7NprE/mYSf8Avn6Vb0gxz/EDxIylZInsrAgjkMD5/wCYrtnrGcl/D5dLduaN1/i7/fqrErp3F/4WT4N/6GKy/wC+z/hR/wALJ8G/9DFZf99n/Cui+xWv/PtD/wB+xR9itf8An2h/79iuPmwf8kv/AAJf/Ile8c7/AMLJ8G/9DFZf99n/AAo/4WT4N/6GKy/77P8AhXRfYrX/AJ9of+/Yo+xWv/PtD/37FHNg/wCSX/gS/wDkQ9453/hZPg3/AKGKy/77P+FH/CyfBv8A0MVl/wB9n/Cui+xWv/PtD/37FH2K1/59of8Av2KObB/yS/8AAl/8iHvHO/8ACyfBv/QxWX/fZ/wo/wCFk+Df+hisv++z/hXRfYrX/n2h/wC/Yo+xWv8Az7Q/9+xRzYP+SX/gS/8AkQ9453/hZPg3/oYrL/vs/wCFKvxH8HOwUeIrHJOBl8V0P2K1/wCfaH/v2K474q2tunw01lkgiVgsWCEAI/epW2Hhg69aFLlkuZpfEurt/KJuSVzuKKKK80sKKKKACiiigAooooAKiuf+PWb/AHG/lUtRXP8Ax6zf7jfypx3QGD4B/wCSfaB/14Rf+girOp24ute06F5rpI2hmLLDcyRBiNmM7GGepqt4B/5J9oH/AF4Rf+giti80rTtQdHvbC1uXjBCNNCrlQeuMjiujGf7zU/xP8xR2Rzo1y/gjt7S1DXLSTzpHcNH5uUjOBwGXcecZz/CTzV6PVtTktrWGS3jtrye4aEPMh2YVS27YGzkgY27vXk451ptOsri1S1mtIHgTGyMoNq46YHbHtTP7J077F9i+w232XO7yvKG3Prj1965hmJrE19b6Z514kN3cW19CYVslKswLLxtZjhjkjr0rX0W5uLzTI7m5mtpXkyf9GRlVR/d+YkkjoenPYVJFpOnQxRxR2FsqRyeaiiJcK/8AeHH3vfrUtvZWlm0rW1rDA0zmSUxRhS7H+JsdT7mgCeiiigAooooAKKKKACiiigArl/iL/wAiDq3/AFzX/wBDWuorl/iL/wAiDq3/AFzX/wBDWurA/wC9U/8AEvzJl8LOoooorlKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA5Xx7IkOj6fLK6pGmr2TM7HAUCdMknsK2P+Ei0T/oMaf/4Ep/jVy6s7a+gMF3bw3EJIJjmQOpx7GqH/AAi/h/8A6AWmf+Akf+FdcalF0lCpe6b2t1t/kTZ3uh//AAkWif8AQY0//wACU/xo/wCEi0T/AKDGn/8AgSn+NM/4Rfw//wBALTP/AAEj/wAKP+EX8P8A/QC0z/wEj/wpf7L/AHvwD3h//CRaJ/0GNP8A/AlP8aP+Ei0T/oMaf/4Ep/jTP+EX8P8A/QC0z/wEj/wo/wCEX8P/APQC0z/wEj/wo/2X+9+Ae8P/AOEi0T/oMaf/AOBKf40f8JFon/QY0/8A8CU/xpn/AAi/h/8A6AWmf+Akf+FH/CL+H/8AoBaZ/wCAkf8AhR/sv978A94f/wAJFon/AEGNP/8AAlP8a5/U9TsL/wAd+FUs762uGU3ZYQyq5A8rvg1u/wDCL+H/APoBaZ/4CR/4VNa6FpFjOs9ppVjbzLkCSK3RGGevIGaunUw9NuUb3s106pr9QabLrokkbRyKrIwIZWGQQexFc74b8HWvhjVNUubK4la3vREsds/It1TedqnP3cucDtXSUVzwrVIQlTi9Jbr0dx2W4UUUVkMKKKKACiiigAooooAK4z4sf8kx1r/di/8ARqV2dcZ8WP8AkmOtf7sX/o1K7ct/32j/AIo/miZ/Czs6KKK4igooooAKKKKACiiigAqK5/49Zv8Acb+VS1Fc/wDHrN/uN/KnHdAYPgH/AJJ9oH/XhF/6CK6OvO/BnhC3u/BWi3Daxr0Zls43KQ6nKiLlRwqg4A9q3f8AhB7b/oOeI/8Awbzf/FV6OLp0PrE7ze76efqRFuy0OnormP8AhB7b/oOeI/8Awbzf/FUf8IPbf9BzxH/4N5v/AIquf2eH/wCfj/8AAf8Agju+x09Fcx/wg9t/0HPEf/g3m/8AiqP+EHtv+g54j/8ABvN/8VR7PD/8/H/4D/wQu+x09Fcx/wAIPbf9BzxH/wCDeb/4qj/hB7b/AKDniP8A8G83/wAVR7PD/wDPx/8AgP8AwQu+x09Fcx/wg9t/0HPEf/g3m/8AiqP+EHtv+g54j/8ABvN/8VR7PD/8/H/4D/wQu+x09Fcx/wAIPbf9BzxH/wCDeb/4qj/hB7b/AKDniP8A8G83/wAVR7PD/wDPx/8AgP8AwQu+x09Fcx/wg9t/0HPEf/g3m/8AiqP+EHtv+g54j/8ABvN/8VR7PD/8/H/4D/wQu+x09cv8Rf8AkQdW/wCua/8Aoa0v/CD23/Qc8R/+Deb/AOKrn/G/hKCx8G6lcrq+uTNGikRz6lLIjfMOqk4NdOCp0PrNO038S6efqKTdnoej0UUV5hYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVxnxY/wCSY61/uxf+jUrs64z4sf8AJMda/wB2L/0alduW/wC+0f8AFH80TP4WdnRRRXEUFFFFABRRRQAUUUUAFRXP/HrN/uN/Kpaiuf8Aj1m/3G/lTjugMHwD/wAk+0D/AK8Iv/QRXR1zngH/AJJ9oH/XhF/6CK6OujGf7zU/xP8AMUdkFFFVNUvPsGmz3P8AEiEqfKeQA44JCAnHrXMMt0VRudVtbC0guLuQhZiqKY43fcxHAAAJ57flTodTtri0luYjKyREq6+Q4dSOxTG7PI4x3oAuUVjvri2vhgavMvn4h8wi3ifDH2GNwH1HHetG0u472IyRLMqg4xNA8R/JwDQBPRRRQAUUUUAFFFFABXL/ABF/5EHVv+ua/wDoa11Fcv8AEX/kQdW/65r/AOhrXVgf96p/4l+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVxnxY/5JjrX+7F/6NSuzrjPix/yTHWv92L/0alduW/77R/xR/NEz+FnZ0UUVxFBRRRQAUUUUAFFFFABUVz/x6zf7jfyqWorn/j1m/wBxv5U47oDB8A/8k+0D/rwi/wDQRWpeahc2swjh0e9u1xnzIHhC/T55FP6Vl+Af+SfaB/14Rf8AoIro66MZ/vNT/E/zFHZGR/bF9/0LWq/9/LX/AOPUkzahrGn3FslrLpbOpQteRxyhgQQcCOXr9TWxRXMMx30u/lsrGGS+tvMtp0kLrasA6r/DjzOD75P0qaGwvbZtQeK7g8y6nEsZa3JEY2quCN43cL1yK0qKAMW20W6Xw9NpN1ewyhojGkkVuY9uc8kF2z19qsedqlnA0lxAL9iQFiso1jKjuSZJAD/nrWlRQBkf2xff9C1qv/fy1/8Aj1S22p3c9wkcmhahbo3WWV7cqv12yk/kDWlRQAUUUUAFFFFABXL/ABF/5EHVv+ua/wDoa11Fcv8AEX/kQdW/65r/AOhrXVgf96p/4l+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAGR4o1eXQfDl3qUEKTSwhdscjFVJZwvJH1rP87x3/z4+HP/AANn/wDjVJ8RP+RF1H6xf+jUrqK7YyjTw8Zcqbbe9+ij5+bJ3ZzHneO/+fHw5/4Gz/8AxqjzvHf/AD4+HP8AwNn/APjVbUus6XBdG1m1KzjuQQDC86h+enBOeau1H1mP/PuP4/5hbzOY87x3/wA+Phz/AMDZ/wD41R53jv8A58fDn/gbP/8AGq6E3UK3i2hfE7IZFXB5UEAnPTuPzqaj6zH/AJ9x/H/MLeZzHneO/wDnx8Of+Bs//wAao87x3/z4+HP/AANn/wDjVdPUM13bW0kUc9xFE8zbIldwpdvRQep+lH1mP/PuP4/5hbzOe87x3/z4+HP/AANn/wDjVHneO/8Anx8Of+Bs/wD8aroba7tryMyWtxFOisULROGAYdRkd6mo+sx/59x/H/MLeZzHneO/+fHw5/4Gz/8AxqjzvHf/AD4+HP8AwNn/APjVdPUMN3BPPPDG+ZICFkXBG0kZHWj6zH/n3H8f8wt5nPed47/58fDn/gbP/wDGqPO8d/8APj4c/wDA2f8A+NV09FH1mP8Az7j+P+YW8zjNW1fxro+kXmp3GneH2htIXmdY7yYsVUEnGYwM8etddbyme1ilIwXQNj0yM1i+Of8AkQfEH/YOn/8AQDWvYf8AIOtf+uKfyFVWcZ0IzUUndrS/ZeYLcsUUUVxlBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVxnxY/5JjrX+7F/wCjUrs64z4sf8kx1r/di/8ARqV25b/vtH/FH80TP4WdnRRRXEUFFFFABRRRQAUUUUAFRXP/AB6zf7jfyqWorn/j1m/3G/lTjugMHwD/AMk+0D/rwi/9BFdHXOeAf+SfaB/14Rf+gitS81C5tZhHDo97drjPmQPCF+nzyKf0roxn+81P8T/MUdkX6r3l9b2ESyXDMAzBFCRs7Mx7BVBJPXoO1UP7Yvv+ha1X/v5a/wDx6o7lLzW7YRPp5s1jcM0eowxTpMMHgBJDjBwc+3euYY+68R2dvYx3aR3MqPcLblVtpdysWAOV25GM9xzV19St49Oe/kE6W6KWbdbyBwB1Ozbu/Ss+LQ7iPSPsv2xTMtwtxGSjGOPawYIAWJ28evfjHSrNxaajd6Rc2st1arcTKyCRbdiiqRj7u/JPXnI+lAE1hqlpqSlrR3kQAMJPKdUYHurEAMPoTVysuNr/AEzT4o5LdtSkXCAWcaRYUDqRJLj8j+FM/ti+/wCha1X/AL+Wv/x6gDXorOtdSu7i4WOXRL+2Q9ZZXgKj67ZGP6Vo0AFFFFABRRRQAVy/xF/5EHVv+ua/+hrXUVy/xF/5EHVv+ua/+hrXVgf96p/4l+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHL/ABE/5EXUfrF/6NSuorl/iJ/yIuo/WL/0aldRXVP/AHWH+KX5RJ+0cvdxXN74k1CyR3gt7i1iid3sJHVv9Zu2ycIDhh1z1/CpL9Vhv5Irx9UW2SBFtPsZmwSM7s+X1bpw3GOneukorlKON1WPWJ49LwlwLhLKRrwwqyuQTHlUdflWQ4OPocY6h+qS3UpsHt3vYtMMB/1i3KyCTIx5m0iQcf3uOvfFdfRQByN610vh7TBJdao1x9oXdNa284fy9/O5dpP3ePnHPXrVm/gKvoqWMuoIGuWfznilmaMGNh828EqMkD5sYzXS0UAcYk1zHopgZbwGS/m8y5eCeIqNzMG2x7WIPGMED37UQyXk+i2sM7asrrqXll44biNzFuOCc5bbtI5JOPXIrs6KAOVZrmOG6tgdT+xw6gFdsSmXySgPyOfmYb+pUkgZ5qfw7hdX1by0v/s7+U0Ml2knzAKQcM4yRnPU5/DFdHRQAUUUUAYHjn/kQfEH/YOn/wDQDWvYf8g61/64p/IVkeOf+RB8Qf8AYOn/APQDWvYf8g61/wCuKfyFdUv91j/if5In7RYooorlKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArjPix/wAkx1r/AHYv/RqV2dcZ8WP+SY61/uxf+jUrty3/AH2j/ij+aJn8LOzoooriKCiiigAooooAKKKKACorn/j1m/3G/lUtRXP/AB6zf7jfypx3QGD4B/5J9oH/AF4Rf+giujrnPAP/ACT7QP8Arwi/9BFbd3eRWUavKs7AnA8mB5T+SAkV0Yz/AHmp/if5ijsixRVB9ZsUtoLjzXdLj/VLHE7u2OuEALcd+OO9U7DxFBNZyT3DjAunt4xDE7M+O2wAtkDORjjB6VzDNuiszRtU/tRb1sqVguTCpCspxtU/Mrcgjdgj2q7dXUNnbtPcOEjXGTgnrwAAOSSeMDrQBNRVCDWbO5+0CM3G+3UPJG1tIrgHOCFKgnOD0B6U6DVbS4hnkjM37j/WI1vIrjjP3CoY/gOaALtFZlr4h0y8t2uYLhmt1j80zmJ1j2jr85GCR3GciorXXEvNdWyhDCNrZpsSwSRSAhlGcOBlTu647UAbFFFFABRRRQAVy/xF/wCRB1b/AK5r/wChrXUVy/xF/wCRB1b/AK5r/wChrXVgf96p/wCJfmTL4WdRRRRXKUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBy3xHdY/AWpu5wq+UST2HmpS/wDCxfCH/QetPzP+FHxE/wCRF1H6xf8Ao1K6iu+LpLCx9pFv3pbNLpHyZOvNocv/AMLF8If9B60/M/4Uf8LF8If9B60/M/4V1FFZc+F/kl/4Ev8A5EPeOX/4WL4Q/wCg9afmf8KP+Fi+EP8AoPWn5n/Cuooo58L/ACS/8CX/AMiHvHL/APCxfCH/AEHrT8z/AIUf8LF8If8AQetPzP8AhXUUUc+F/kl/4Ev/AJEPeOX/AOFi+EP+g9afmf8ACj/hYvhD/oPWn5n/AArqKKOfC/yS/wDAl/8AIh7xy/8AwsXwh/0HrT8z/hR/wsXwh/0HrT8z/hXUUUc+F/kl/wCBL/5EPeOX/wCFi+EP+g9afmf8KP8AhYvhD/oPWn5n/Cuooo58L/JL/wACX/yIe8ee+L/Hnha98Ga3a22tW0k81jNHGik5ZihAHSu6sP8AkHWv/XFP5Csjxz/yIPiD/sHT/wDoBrXsP+Qda/8AXFP5CtKzpvDR9mmvee7v0XkgV76liiiiuEoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuM+LH/JMda/3Yv/AEaldnXGfFj/AJJjrX+7F/6NSu3Lf99o/wCKP5omfws7OiiiuIoKKKKACiiigAooooAKiuf+PWb/AHG/lUtRXP8Ax6zf7jfypx3QGD4B/wCSfaB/14Rf+girusaRJqctu6vbskYYNBdRGWNicYYqGGSMHGc9T0ql4B/5J9oH/XhF/wCgiujroxn+81P8T/MUdkc/Z6Bd6faWSwXsBuLTzEVjbEI0bnJUqG4IIHIPbpRb6BfWzm4GowPdC5knVmtiEw4AZSA/sMHORjnPOegormGYFtHqOiy3bvbz6qbybzybSOKIRHaq4PmSjI+UY/WppTdazAYX0+702SJ0miluPJdd6sCBhJCSOOen1rZooAx7nTdSvrGeG5voA77NohhZVwDkhvnyQ3Q4I4NQ6ZoNzpj30kM9hEbpFCxw2ZRI2XIzgP8AN19vr2reooAxbbRLlfD/APZN3exSBI1jjlhtzGV24wSC7Z5APanwabqP9tQ6jd31u4jgeAxRWxUEMVOclyQcqPUfzrXooAKKKKACiiigArl/iL/yIOrf9c1/9DWuorl/iL/yIOrf9c1/9DWurA/71T/xL8yZfCzqKKKK5SgooooAKKKKACiiigArA8b31zpngnWL2ymMNzBbM8cgAJUjvzW/XMfEb/knWvf9eb104NKWJpp7cy/MUtmJ/wAInqGP+Ry1/wDO3/8AjVL/AMInqH/Q5a/+dv8A/Gq6cdKzrnVltru5t/slxIYLb7QzJswRkjAywOflPUY96f1yr5f+Ax/yFyoyf+ET1D/octf/ADt//jVH/CJ6h/0OWv8A52//AMarYOtafFbW013dQ2f2hA6JcyojYIz6479s1LdanYWJUXd9bW5Ybl82VUyPUZPTkUfXKvl/4DH/ACDlRhf8InqH/Q5a/wDnb/8Axqj/AIRPUP8Aoctf/O3/APjVb02pWNvbR3M97bxQSY2SvKqq2eRgk4NR6XqA1OzNwqKoEjx/K+8HaxGQe4OM0fXKvl/4DH/IOVGL/wAInqH/AEOWv/nb/wDxqj/hE9Q/6HLX/wA7f/41XT0UfXKvl/4DH/IOVHMf8InqH/Q5a/8Anb//ABqj/hE9Q/6HLX/zt/8A41XT0UfXKvl/4DH/ACDlRx+kR6hpnjqTSp9avtRtW0z7QBd+XlX83bxsVe1dhXMf81TP/YF/9r109PFu8oy7xXl+QRCiiiuQoKKKKACiiigAooooA5f4if8AIi6j9Yv/AEaldRXL/ET/AJEXUfrF/wCjUrqK6p/7rD/FL8ok/aCiudutQvrDWNUeGEXFtDbRTustwV2ffzsG08kL04HHWpdY8RHTeYYI7jbD50iB5N6L64SNgAcHliorlKN2isjVNZmsUtngsvNjmUs0rl1SMcYBKI+Cc9wBweav2Nybywt7kqimWMPtSQOoyOzDg/WgCxRWP4kuL+30tf7PEfmSTRxMzSlCoZwpwdrc8+nHWor+3uLbwpdF5547iGJ5QyXTOVYAkDeQCR7EUAbtFUbm+ktZtPTyldLmXymYvgodhYEDHP3T3FVH1q6XTrmcaf5k8FyYDFE7OMZHzZCbsYOThSaANmiuZudXurzSI7uBESeO/iiEcNySr5dQQxKgj7xBDLkdcdK2NPvZbp7mK4gSGe3kCOI5C6nKhgQSAeh9KAL1FFFAGB45/wCRB8Qf9g6f/wBANa9h/wAg61/64p/IVkeOf+RB8Qf9g6f/ANANa9h/yDrX/rin8hXVL/dY/wCJ/kiftFiiiiuUoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuM+LH/JMda/3Yv/RqV2dcZ8WP+SY61/uxf+jUrty3/faP+KP5omfws7OiiiuIoKKKKACiiigAooooAKiuf+PWb/cb+VS1Fc/8es3+438qcd0Bg+Af+SfaB/14Rf8AoIq5quvxaTOIpLK7mHktMzwhCFVSAc5YHuOAD14qn4B/5J9oH/XhF/6CK0NR0SPUp3kkuriMNbvblI9mMMQS3Kk54HfHtXRjP95qf4n+Yo7IjXX43jULY3ZumkaP7KAnmAqASSd23GCOd3cd+KX+34v9H/0O6zLcfZnBCDyJMZw+W79iuc5HqKRtBQTNPDe3MVwZWlWQbDt3KAy4K4KnaDz36EVJ/YkLabPZvPO7Tv5j3BK+Z5nGGHGARhccY4HFcwyvJ4ntYYpHltriPFybaMO0Y85xnO078YGDyxHSrml6vbatFK0G5XhfZJGzKSpxkcqSDwR0JqKXQbWTT7W0DyKbU7opvlZg2CCTkEHOTnI701bXUNNt9tisN7I75f7TKLcKMfw+XEc/iPxoAv3l3FY2r3E24quAFUZZiTgAD1JIFVYdUeR50l029t2ij8zEvl4cc8Bg5XPHQkVC0Gp6lE9tqVnaW0DAMJbW9aSRXBBUgNEo4Iz17dDSy6K11aT295qV1cLKAPmWMBMHIIAXB5AznIoANM1+21YXItonMtuAzRiSJyc5xgo5XsRyRTLTxFDd2LXxsryCzWNpDPMigcdRgMWJ9wMHHBNSWuivbXVxdHU7t5p4liYlYgF25wVATgjceuRRaaFHbaVJps15dXds6eXibYCo56FFX1oArx6vcy6/a2z2t1axS20shjnRDu2lcEFScH5uhP4VNpXiGDWJQtvbXAQqW81jGyjBHB2sSp56MAeD6Ui6C5vYbubVr+WWGN4kz5aja2M5wg54Bz7U600MW+oRXs17cXU0URiRpVQHacZ3FVBY8Drx7ZoA1qKKKACuX+Iv/Ig6t/1zX/0Na6iuX+Iv/Ig6t/1zX/0Na6sD/vVP/EvzJl8LOooork5fG0b+MrDQrC1NzbyzSQXN6GxHFKsbP5a/3m+Xn047njOlQqVr8ivZNv0Q20tzrKKKKxGFFFFABRRRQAVzHxG/5J1r3/Xm9dPXMfEb/knWvf8AXm9dWB/3qn/iX5ky+FnTjpXO6toMupandzvaWc0bWQhgMkzKwfLHkBDgfN1yenSuiHSiuUo5e70jWJ7WG3zGUFosPlx3skSRyAEFiVXLjpgHA46c5q3babfpc6NJLDaEWdq8UpEzEhyFGVynI+Xqcda3aKAOcs9K1OxSxnEFnLPbpLE0XnsFAdwwZW2deACMfjxzd8P2F1p1jNDdR2yM1zLKotmJXDuWxyBgjOP19q1qKACiiigAooooA5j/AJqmf+wL/wC166euY/5qmf8AsC/+166C8vLbT7Oa8vJkgt4VLySOcBQO5rrxKbcEv5USupPRWD4V8TxeKrK8uobSe2jt7prcLONrOAqsGx2yGHBrerCrSnSm4TVmhp31QUUUVmMKKKKACiiigDl/iJ/yIuo/WL/0aldRXL/ET/kRdR+sX/o1K6iuqf8AusP8UvyiT9oz59FsbmW8klWYteRCGfFxIoZBnAADYXqeRg8mop/Dun3KssguNjxiKRVupFEigYG7DfNx3PXvWrRXKUZ0uiWcnkkNdRtDH5SPHdSK2z0J3c9Opyajaw1K2WODS7uwtrSNAqRTWbysP+BCVc/lWrRQBlPpEuoWoh1m4W4KyB0Nn5tqBjBGcSEnBGev4VNdaPaXlgLGc3LQAFSBdyqzA9QzBtzfiTV+igCg+j2klnHasbjZG/mI5uZDIreoctu7kde9Qp4d06O3MCLcKpm+0bhdS7vMxjdu3Z/oa1aKAMz+wLA2/kss7AzrcM5uZA7SLjBLBsnGBx04HFWrewt7W6ubiISCW5YNKWlZgSBgYBJC8AdMVZooAKKKKAMDxz/yIPiD/sHT/wDoBrXsP+Qda/8AXFP5Csjxz/yIPiD/ALB0/wD6Aa17D/kHWv8A1xT+Qrql/usf8T/JE/aLFFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcZ8WP8AkmOtf7sX/o1K7OuW+Iyhvh/q4YAgxrwf99a68vdsXSf96P5omfws1f8AhJtA/wCg5pv/AIFx/wCNH/CTaB/0HNN/8C4/8aX/AIRzQ/8AoC6d/wCAqf4Uf8I5of8A0BdO/wDAVP8ACl/sv978A94T/hJtA/6Dmm/+Bcf+NH/CTaB/0HNN/wDAuP8Axpf+Ec0P/oC6d/4Cp/hR/wAI5of/AEBdO/8AAVP8KP8AZf734B7wn/CTaB/0HNN/8C4/8aP+Em0D/oOab/4Fx/40v/COaH/0BdO/8BU/wo/4RzQ/+gLp3/gKn+FH+y/3vwD3hP8AhJtA/wCg5pv/AIFx/wCNH/CTaB/0HNN/8C4/8aX/AIRzQ/8AoC6d/wCAqf4Uf8I5of8A0BdO/wDAVP8ACj/Zf734B7wn/CTaB/0HNN/8C4/8ajm8R6HJBIiazpzOykKq3SEk46Dmpf8AhHND/wCgLp3/AICp/hUVz4d0QWsxTSLBGCNhltkBBx1BxwaP9m6c1/kPXqVPAP8AyT7QP+vCL/0EV0dct8OLjz/h9ooPDR2saMP+AjH6EVr3+rixvrezFjd3MtwjNH5ATHy4yCWYY6g88fjxUYqSlXm1/M/zGk0rM0qKyhr0LRxiO0upLp5Gj+yqFEilfvZJYKAMjndg5GM5qKTxHFGLdVsL2SaaZrfyUVNySBd21stgcDOcke9YAbVFVLG/S+Eq+TLBNC2ySGYDcpxkfdJBBB6gmn3t5HY2xmkV2+YIqIMs7E4AHuSaALFFZ0WrO63Pm6beW7W6CQrN5YDg5+6wcr25yRjiotO1+21S3uZLWKR3t8bolkicnIyMMrlfX+KgDWorHtfEUNzpx1A2V7DZ+V5qyyoo3dPlChi2eeOMHsTTLbVLmfxHHaSW1zaxtaPL5U6p1DKAQyE/3jkZ9OKANuiiigAooooAK5f4i/8AIg6t/wBc1/8AQ1rqK5f4i/8AIg6t/wBc1/8AQ1rqwP8AvVP/ABL8yZfCyHUtSu/EupT6Doc7QW0D+XqWpR9Yj3hiP/PT1P8AAD61HqWm2eka34KsLCBYLaG8mVEXt/o0v5k9Se9S6lpt54b1KfXtCgae3nbzNS02PrKe80Q7SAdR/GB64qLUtSs9X1rwVf2E6z2015MyOv8A17S8H0I6EHpXdDZey+Dll/4FyO9/Pt0ttrcn13N+TxFocUjRyazpyOhKsrXSAgjqCM0n/CTaB/0HNN/8C4/8ae/h/RZZGkk0iwd2JZma2Qkk9STim/8ACOaH/wBAXTv/AAFT/CuBfVuvN+BXvCf8JNoH/Qc03/wLj/xo/wCEm0H/AKDem/8AgXH/AI0v/COaH/0BdO/8BU/wpkvhfw/PE8Umh6cyOMMDapyPyp/7L/e/APeNXI9RRkeormf+FdeDv+hc0/8A79Uf8K68Hf8AQuaf/wB+qOTC/wA8v/AV/wDJB7x02R6iuY+IpH/Cu9e5/wCXR6X/AIV14O/6FzT/APv1WD428FeGtK8Ea1e2GiWdvcxWkhSWOPDLkYOPwJrpwccN9Yp2lK/Mvsrv/iFK9mbo8ReIcf8AIkah/wCBtr/8cpf+Ei8Q/wDQkah/4G2v/wAcrpx0orm+sU/+fUfvl/8AJDs+5zH/AAkXiH/oSNQ/8DbX/wCOUf8ACReIf+hI1D/wNtf/AI5XT0UfWKf/AD6j98v/AJILPucx/wAJF4h/6EjUP/A21/8AjlH/AAkXiH/oSNQ/8DbX/wCOV09FH1in/wA+o/fL/wCSCz7nMf8ACReIf+hI1D/wNtf/AI5R/wAJF4h/6EjUP/A21/8AjldPRR9Yp/8APqP3y/8Akgs+5zH/AAkXiH/oSNQ/8DbX/wCOUf8ACReIf+hI1D/wNtf/AI5XT0UfWKf/AD6j98v/AJILPucDaa1KPH91f61p76NFb6LlvtM8bjaJs7soxHtjrV2zs7nxleQ6rqsLwaLCwksNPkGDOR0mmH6qh6dTzUOtaPaa/wCO7nS75WNvPoYDbG2spFxlWB9QQD+FX9F1q8sdRXw94hdTfEE2d6BtS+Qdx/dkA+8v4jjp6FSS9mp0VafKvlG28b3+fVLbraVvZh4P/wCPzxR/2GpP/RUVdRXGaDpltq48VWl353lNrjk+VM8TcRRfxIQf1q5/wr/Qf+on/wCDW5/+OVy4iNF1XzyaemyT6LzQ1e2h09Fcx/wr/Qf+on/4Nbn/AOOUf8K/0H/qJ/8Ag1uf/jlY8mG/nl/4Cv8A5IfvHT0Vyknw/wBJ+RrW91qzmRgwlh1SYt9MOzDH4U//AIQxv+ho8R/+Bq//ABFHssO9qn3x/wAmwu+x1FFcv/whjf8AQ0eI/wDwNX/4ij/hDG/6GjxH/wCBq/8AxFHsaH/Pz8GF32D4if8AIi6j9Yv/AEaldRXmHirRpLfw5qU8etateW0PloRd3O9HfzUHAAHT1Oea9PonKEsNH2buuaWu19Ibf1+BTi4yszn9a1TU7O4l+yJB9mhh3ySNEZirc/eCuGUYAOQrd/TmafU7tZr5I5bUJHZJcwu0ZIBO7O75hkfL7dau3Oj6Zez+dc2FtNKQAXeIEkDoCe49jTrvStPv3R7uxt52QYUyxhsD057VygZuozzT6Rp12RAVeW3eSNkY5LOmCpDDGCc85p2rNqX9tabHZXkEEcgl3rLA0gYgZ5w61cn0TSbmKGK40uyljhG2JJLdGCD0UEcfhUk2l6fPax2stlA0EX+rj8sbU+g7fhQBZQMEUOQz4+YqMAn2HOKxtbSc6nozWrRJOZ3XfIpYBfKcngEZ6DjIqxLpEnyJZandafAi7VgtYoAg9xujY/rToNHjWSOW9nfUZom3wy3cMO6E4wdhRFxQBSnubu98MX7ObbzovPikzGxjkCFgcAOCMgf3uPerN5d3cGjW8ljHE1xJ5aojkd+uAWXcQM8bh061M2iaS9s1s2l2TQO5kaI26FWc9WIxjPvS/wBjaX9jFoNOtBbBt4hEKhQ3qBjAPvQBiXGo6pc6HM0d1BBdw3sUT/6M6lVLpwV38H5uzEEfXjo7ZbhYQLqWKWXPLRRmNfyLN/Ooo9MsIrJ7NLOBbZ874hGNrZ65Hen2lhaWEbJaW0UCscsI1A3H1PqaALFFFFAGB45/5EHxB/2Dp/8A0A1r2H/IOtf+uKfyFZHjn/kQfEH/AGDp/wD0A1r2H/IOtf8Arin8hXVL/dY/4n+SJ+0WKKKK5SgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5f4i/8AIg6t/wBc1/8AQ1rqK5f4i/8AIg6t/wBc1/8AQ1rqwP8AvVP/ABL8yZfCzqKKKK5SgooooAKKKKACiiigAqK5/wCPWb/cb+VS1Fc/8es3+438qcd0ByXgP/RfC/h5ukd3p0Sn/fVOPzGfyrV1iyurvW9NkgW7jSFJA1zbvGPLLbeoc8jAOflPbvWf4Sgaf4ZaF5f+ujsYZI/95VBH+H411FvOtzbRzp92RQwoxHuY2tT7ybXzev46/Mt+9TjL5f5fh+Rnf2DEiRtBdXMV1G7v9pyrO5bG7cCMEHA4wMYGMYqhqGizI+nrb/bpnW7a4nuo5I1kDFCobDYU9RwFIwOldLRSIMgWl/pu46fDDfSzNvnmvbsxOTgAcJEwxgdAAKU2+oanC8GpW1vaKCrxS2l20rq4OQcNEoGMe/0rWooAyZtEa6tJYLvUbmcuyMGZYwEKtuGFC4PI5yDmlttEe3lvJv7TvHmukVXcrF8u3OCo2YHBxzkVq0UAZVtoUcGjnTJb26uYPLEamXYGQDpgoq88A5OelFvozxapFqE2p3lxNHE0IV/LCFWIPIVRzlQcj+XFatFABRRRQAUUUUAFcv8AEX/kQdW/65r/AOhrXUVy/wARf+RB1b/rmv8A6GtdWB/3qn/iX5ky+FnUVyc3gmJfGVhrtjdG2gimknubILmOWVo2QSL/AHWw3P8Ae47jnrKKypV6lG/I7XTT9GNpPcKKKKyGFFFFABRRRQAVzHxG/wCSda9/15vXT1zHxG/5J1r3/Xm9dWB/3qn/AIl+ZMvhZ046UUDpRXKUFMkljhTfK6ouQNzHAyTgfrT6wfFV9b2WnI82ow2rCVGWOUx4lAdcjDg9OvGCPWgDepskkcMbSSuqRqMszHAA9SawtR1EXGpaRBZa0kEV55nMJicyhRkbSwPf0z3/AAoXmswy+Crm5n1eBHQzxiVjERMUZgFIYFTkAZAA9sUAddRXN63cQ3un6dd2ureTbrdx757d42T05LBhwf51tWE0M9ophvlvVUlTMGRskeuwAZ+goAtUUUUAcx/zVM/9gX/2vWvrWi2evac1leoxUkPHIh2vE4+66N/CwPQ1kf8ANUz/ANgX/wBr109dlecoSpyi7NRRK1uc14M0PVNCtNTTV7uG7uLm/e4WeMEb0KIoLDAwx2ZIGR710tFFYVqsq03UluxpWVgooorIYUUUUAFZ93LJcz/YLZipxmeQf8s19B/tH/69S3t08WyC3Aa6l4QHoo7sfYVJaWqWkHlqSzE7nc9XY9Sa5qjdWXso7dX+nq+vZeqNYrkXO9+n+Zzfj6KODwBfRRKFRPJAA7fvUrq65b4juI/AWpuQSF8onAyf9ananf8ACeaV/wA+Wt/+Cm4/+Ir14YepUwkFSjdKUtvSJg5e82zp6K5j/hPNK/58tb/8FNx/8RR/wnmlf8+Wt/8AgpuP/iKz+pYn+R/cHMu509Fcx/wnmlf8+Wt/+Cm4/wDiKP8AhPNK/wCfLW//AAU3H/xFH1LE/wAj+4OZdzp6K5j/AITzSv8Any1v/wAFNx/8RR/wnmlf8+Wt/wDgpuP/AIij6lif5H9wcy7nT0VzH/CeaV/z5a3/AOCm4/8AiKP+E80r/ny1v/wU3H/xFH1LE/yP7g5l3OnormP+E80r/ny1v/wU3H/xFH/CeaV/z5a3/wCCm4/+Io+pYn+R/cHMu509Fcx/wnmlf8+Wt/8AgpuP/iKP+E80r/ny1v8A8FNx/wDEUfUsT/I/uDmXcseOf+RB8Qf9g6f/ANANa9h/yDrX/rin8hXDeL/Gmm3fgzW7aO01dXlsZkUyaZOiglCOWKYA9zXc2H/IOtf+uKfyFaVqNSlhoqaa957+iBNN6FiiiiuEoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX+Iv/Ig6t/1zX/0Na6iuX+Iv/Ig6t/1zX/0Na6sD/vVP/EvzJl8LOoooorlKCiiigAooooAKKKKACorn/j1m/wBxv5VLUVz/AMes3+438qcd0Bg+Af8Akn2gf9eEX/oIqWbVY9Bkkt5re4liaZfK8hQxAkPAxnJ+bI4z1qLwD/yT7QP+vCL/ANBFTeI9N+1Gyuxd3FsLaZS7QhMlSRgncrdCAfzozP3cROr/ACyd/S+v+fyLo6rk7/n0/wAvmTXXiCGyih+1WlxDPMzBLd3iDEL1bJfaByP4u9V38W2n2eKaGzu7gOZAyxeWTGYxlgx346c8Eg9u1XLzRkvUtmkuJftNuCEuCiFjnqCCu0g4HYdOMVC3h5JFhEl9ct5ayqcLEobeuDkBO3bGPfNIgIvEcEsO4Wd2JzIsaW5VPMcsu8EfNgDbzyRjHOKWbxBHBZzTvY3geCRY5oP3e+PdjDE79pXkcgn9DQPDsS/Ol7dLMDGyS/JlGRNmR8uDleCCCPTFWINJijguo7iWS6e7GJ5JcZYYxjAAAAHoKAILjxFbWj3ongnRLQorSnZtd3xtVfmznkdQAM9ak0zXLbVJpoI1aOeJQzRs6MdpzggozDqD3zTE8P2o0g6c8s8oL+YZ5CDIXBBDE4xkYHbHGMUkdhe6bG72bR3szkDZcMluigZ5BjiJJ+o/KgDSurmKztZbmdtsUSlmOM8D2qnbapJPciGTTL63JjMivKE2kDHGVY4PPQ471CY9V1BHtNS0+xjtJUKyNBfO7jI7AxL/ADpx0aSa3ngvNTvLmKWJodrCNcAjGflUZP149qAG6Z4htdUuprWKN1miTeVMsT5GcdUdgDnscUWWvpfB3FhewwxM6SzTKirGyEhgfmyenVQR70Wmhm2vlu21G6kkWAwKuyJUC5yMAIOQRUmn6MLGCaCS/uruGYuWjnEeMuSW+4inuaAKf9tzz6rpSR213b2907jMyJtlXy2YEYJKngcHHU8Vv1jR+HytxZSvql9Itk+6CNjHjG0rhvly3Bxk8++ea2aACuX+Iv8AyIOrf9c1/wDQ1rqK5f4i/wDIg6t/1zX/ANDWurA/71T/AMS/MmXws6iiiiuUoKKKKACiiigAooooAK5j4jf8k617/rzeunrmfiGjyfD3XURWZjaOAqjJNdWC/wB5p/4l+ZMtmdMOlZk+g2dzO8zzaiGc5Ij1G4RfwVXAH4CsofEPwtj/AJCTf+As3/xFH/Cw/C3/AEEm/wDAWb/4ij6jiv8An3L7mHNHuaP/AAjVj/z31X/wbXX/AMcrQs7OKxg8mJp2XOczTvK3/fTkn9a57/hYfhb/AKCTf+As3/xFH/Cw/C3/AEEm/wDAWb/4ij6jiv8An3L7mHNHudRRXL/8LD8Lf9BJv/AWb/4ij/hYfhb/AKCTf+As3/xFH1HFf8+5fcw5o9zp2UMpVgCD1B71TvNLtr7y/Ne6jEYwot7uWAfiEYZ/GsT/AIWH4W/6CTf+As3/AMRR/wALD8Lf9BJv/AWb/wCIo+o4r/n3L7mHNHuaP/CNWP8Az31X/wAG11/8cqzZaTbWEpkhkvWYjaRPezTD8nYj8axf+Fh+Fv8AoJN/4Czf/EUf8LD8Lf8AQSb/AMBZv/iKPqOK/wCfcvuYc0e4v/NUz/2Bf/a9dPXE6RrNjrvxIkutNleaCPSBGzmJ0Abzs4+YDtXbVWMhKEoxkrNRQRCiiiuMoKKKKACoLu6S0gMjAsxO1EHV2PQCpJZUgiaWVgqKMsT2FUrSJ7qcX9wpU4xBGf4F9T/tH9Kwq1HdU4fE/wAF3/y7v5mkIr4pbL8fIlsrV4t89wQ11L98joo7KPYVboorSnTVOPLEmUnJ3Zy/xE/5EXUfrF/6NSuorl/iJ/yIuo/WL/0aldRXbP8A3WH+KX5RM/tBRRRXKUFFFFABRRRQAUUUUAFFFFABRRRQBgeOf+RB8Qf9g6f/ANANa9h/yDrX/rin8hWR45/5EHxB/wBg6f8A9ANa9h/yDrX/AK4p/IV1S/3WP+J/kiftFiiiiuUoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX+Iv/ACIOrf8AXNf/AENa6iuX+Iv/ACIOrf8AXNf/AENa6sD/AL1T/wAS/MmXws6iiiiuUoKKKKACiiigAooooAKiuf8Aj1m/3G/lUtRXP/HrN/uN/KnHdAYPgH/kn2gf9eEX/oIrfmhS4gkhcZR1Kn6GsDwD/wAk+0D/AK8Iv/QRWnq2sQaRHC06O5mfYgVkUZwTyzsqjp681vjUniKifd/mKDsk0SaZM8lmElOZoSYpPqvGfxGD+NXK5W41W5ttY0y5t7a6EGpM6SWpRN5dEYg5JwOFBzuwQPpWvFrUUgtD9nuF+0TvbkMF/dOu7Ib5v9k8jNcGHuocst1p/l961Natua666mnRWNea48eh6hfW9jO01p5imFymdyjOfvYx0PXNLaXOoW+kT3d3FczTKpZYXWJWOB22sVx9TmtzM2KKxNCm1K/003F488DzxqyBo4gEJGcrtZsjn+LmnWmri28Of2hqM27yyys4UAsQ5UcDjJ4/OgDZorL0zXrXU7mS2RHinRBJsd43yucZBRmHX3zWpQAUUUUAFFFFABXL/EX/AJEHVv8Armv/AKGtdRXL/EX/AJEHVv8Armv/AKGtdWB/3qn/AIl+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRWdcu1/cNZQsRCv/HxIP/QB7nv6CsqtT2a7t7Luy4Q5n5CL/wATW4Eh/wCPKJvkH/PVh3/3R29TWlSIixoqIoVVGAB0ApaKVPkV5at7v+ui6BOfNotkFFFFakHL/ET/AJEXUfrF/wCjUrqK5f4if8iLqP1i/wDRqV1FdU/91h/il+USftGRPd6jcahd21hLZw/ZUUn7REzlywJHRl2jtnnv6c0dV1zULWBntFimkt7YTXQSDeinGeHMiAA4PQMcc4rZu9K0/UJFkvLG3ndRtDSxhjj057e1NuNG0y7kV7nT7WZlUIDJErfKOg5HQVylFTUr/UUbTPsAtf8AS5PLcTqx25Rm3Agjpt6Y59RSyXOpm9h05J7MT+S00kzwMVYbsAKm/P1O4449eLM+iaTcpCk+l2UqwDbEslujCMei5HA+lS3OmWN5FHFc2cEqRf6tXjBCduPTigDm9MvtQi8O2S2EdvJK9xcBwuJNqLI/KKXTcAcDrwOxroNHvHv9MjnleNpCzK5jRkAIYjG1uQRjketNbQ9JeJYjplmEVi6qIVG1j1IwOCccmrkFvDawJBbxJFEgwqRqFUfQCgCSiiigAooooAKKKKAMDxz/AMiD4g/7B0//AKAa17D/AJB1r/1xT+QrI8c/8iD4g/7B0/8A6Aa17D/kHWv/AFxT+Qrql/usf8T/ACRP2ixRRRXKUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXL/EX/kQdW/65r/6GtdRXL/EX/kQdW/65r/6GtdWB/wB6p/4l+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAVFc/8AHrN/uN/Kpaiuf+PWb/cb+VOO6AwfAP8AyT7QP+vCL/0EVrX1jJeNG0d7PbFAwIjCsrg4+8rA56cVk+Af+SfaB/14Rf8AoIro66MZ/vNT/E/zFHZHPXPhtIdPsha3NwH06VrmJQExI5ySGG3gfMwwuOtTQaNHNp0Zh1C63NcG8imYRlkZskjG3BHzEcjPPWtuqGn/AOjz3NiekbeZH/uNz+hyK86T5KyfSWnzWq/C/wCBsveptdv6/wAir/wjwOl3tidTviLx2eWU+Vv+YYIHyYAP0+lXPsEjabJZvqF0zOCvnlY94HoMJt/SrtFdBkZ9ppslnpv2NdSu32qFSZ1i3oAAABhAp6dwarw+Hok0uXTp726uoJDuHneWCjbt2QVQc555z0rYooAz9P0s2MryNdyTFhtAaKNAP++FBJ/zitCiigAooooAKKKKACuX+Iv/ACIOrf8AXNf/AENa6iuX+Iv/ACIOrf8AXNf/AENa6sD/AL1T/wAS/MmXws6iiiiuUoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiq15di1iG1d8znbFGOrN/h6mpnOMIuUthxi5OyI725k3raWpH2mQZ3dRGvdj/T3qe2to7SBYYwcDqT1Y9yfeo7K0NsjPI2+4lO6V/U+g9h2q1WVKEm/az3ey7L/AD7/APANJySXJHb8/wCugUUUVuZBRRRQBy/xE/5EXUfrF/6NSuorl/iJ/wAiLqP1i/8ARqV1FdU/91h/il+USftBRWRqkMY1fR7gIBN9oaPeOu3ynOPpmquva1eWLT/2eqy/ZYTLcK1vuCjBIy5kQDIHQBj3xXKUdDRXNzSXUvimD7FJbQSXGn+Y5mUvkBxjChlz97rnj8agbxHqMz21vbWy+eySNJIkJmU7H2fKu9eCRnOeMgc9aAOrorndSaS/8ISXN9aiG6jUsFPVGViAw54z168ZroqACiiigAooooAKKKKAMDxz/wAiD4g/7B0//oBrXsP+Qda/9cU/kKyPHP8AyIPiD/sHT/8AoBrXsP8AkHWv/XFP5CuqX+6x/wAT/JE/aLFFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcv8Rf+RB1b/rmv/oa11Fcv8Rf+RB1b/rmv/oa11YH/eqf+JfmTL4WdRRRRXKUFFFFABRRRQAUUUUAFRXP/HrN/uN/Kpaiuf8Aj1m/3G/lTjugMHwD/wAk+0D/AK8Iv/QRWlq+pT6bFC8Fmbje+1j8+2MYJydisfbpj1IrN8A/8k+0D/rwi/8AQRWve6bb37xSStMkkWQjwzNGRnGfukZ6DrXRjP8Aean+J/mKOyKMWtz3FtZfZ7WCS6ut5VBc/u1VDgneFJ7jjbnnnGDVHU9ans7X+1hYBp7Of7LdQLN1ViuCrEc8spGcdecVrnQ7H7LFbqkqCFmeORJnEgZs7jvzuOcnOTz3qO68Oadd6U+myJN5DsXbbcSKzN13MwbLHODyT0FcVWHPG3Xdeq1NIS5WV9Sv9at7GGVLK0jme6ijKG6JGxmA5Pl9ecdOOuTWxbtO0Cm5jjjl/iWOQuo+hIGfyrOsrOG80RLO4MzGJtrlp3Lh1bOd5O7OQCOav2lolnEY0kmfJyWmmaQ5+rE4+g4p05qpBTXUUouMnFk9FFFWSFFFFABRRRQAUUUUAFcv8Rf+RB1b/rmv/oa11Fcv8Rf+RB1b/rmv/oa11YH/AHqn/iX5ky+FnUUUUVylBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSEhVLMQABkk9qAI7ieO1geaVsIoyarWcEjym9ulxM4wif88l9Pr61HADqVwt3ICLaM5gQ/wAZ/vn+n51pVyw/fSVR/CtvPz/y+/tbaX7tcq36/wCX+f3BRRRXUYhRRRQAUUUUAcv8RP8AkRdR+sX/AKNSuorlviMyp4D1JmYKo8okk4AHmpWj/wAJZ4c/6GDSv/AyP/Gu32c54WHKm/el+USb+8WrvRtLv5hNeabZ3Eo4DzQK7D8SKLnRtMvJFkudPtZmVQgMkSt8o6DkdKq/8JZ4c/6GDSv/AAMj/wAaP+Es8Of9DBpX/gZH/jWH1et/I/uY7osSaFpEoXzNMs22oEU+QuQo6AccAZPHvUs+l2Fzbx281lbvDFxGhjGE7fL6celUv+Es8Of9DBpX/gZH/jR/wlnhz/oYNK/8DI/8aPq9b+R/cwui1LoulT2sdrNplnJbxZ8uJ4FZEz1wCMCrNvbQWkCwW0EcMS/djjQKo+gFZn/CWeHP+hg0r/wMj/xo/wCEs8Of9DBpX/gZH/jR9XrfyP7mF0bFFY//AAlnhz/oYNK/8DI/8aP+Es8Of9DBpX/gZH/jR9XrfyP7mF0bFFY//CWeHP8AoYNK/wDAyP8Axo/4Szw5/wBDBpX/AIGR/wCNH1et/I/uYXRsUVj/APCWeHP+hg0r/wADI/8AGj/hLPDn/QwaV/4GR/40fV638j+5hdEHjn/kQfEH/YOn/wDQDWvYf8g61/64p/IVyfjTxNoFx4I12GHXNNklksJlREu4yzMUIAAB5NdZYf8AIOtf+uKfyFbVKc4YaPMre8/yQk9SxRRRXGUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXL/ABF/5EHVv+ua/wDoa11Fcv8AEX/kQdW/65r/AOhrXVgf96p/4l+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAVFc/8es3+438qlqK5/49Zv8Acb+VOO6AwfAP/JPtA/68Iv8A0EV0dcB4K8Z+GLLwRoltc6/p0M8VnEkkb3ChlYKMgjPBrd/4T3wj/wBDJpf/AIFJ/jXfi8JiHiKjUHu+j7kRkrLU6Kiud/4T3wj/ANDJpf8A4FJ/jR/wnvhH/oZNL/8AApP8a5/qeI/59y+5lcy7mmv+i6wy9I7tdw/316/mMflV+uR1Lxv4VktfMh8R6WZoWEsYF0nJHbr3GR+NW18feEWQN/wkemDIzg3KAj9awpYLEwnKHs5W3Wj67/jf70aTlGUVK/l93/AOjornf+E98I/9DJpf/gUn+NH/AAnvhH/oZNL/APApP8a3+p4j/n3L7mZ8y7nRUVzv/Ce+Ef8AoZNL/wDApP8AGj/hPfCP/QyaX/4FJ/jR9TxH/PuX3MOZdzoqK53/AIT3wj/0Mml/+BSf40f8J74R/wChk0v/AMCk/wAaPqeI/wCfcvuYcy7nRUVzv/Ce+Ef+hk0v/wACk/xo/wCE98I/9DJpf/gUn+NH1PEf8+5fcw5l3Oirl/iL/wAiDq3/AFzX/wBDWpv+E98I/wDQyaX/AOBSf41z3jnxj4av/BepWtnrunz3EiKEijuFZmO9egBrqwWFrrE024P4l0fcmUlZ6nodFFFeaWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFZspOp3DWyH/RIjiZh/wAtG/uD29fyp95PJNMLG1bbKwzLIP8Alkv+J7fnVuCCO2gSGJdqIMAVyz/fScF8K38/L/P7u5tH92ubr0/z/wAvvHgAAADAHQCloorqMQooooAKKKKACiiigBk0MVxE0U8SSxt95HUMD9Qapf2Fo/8A0CrH/wAB0/wrQoqozlHSLsFjP/sLR/8AoFWP/gOn+FH9haP/ANAqx/8AAdP8K0KKr2tT+Z/eKyM/+wtH/wCgVY/+A6f4Uf2Fo/8A0CrH/wAB0/wrQoo9rU/mf3hZGf8A2Fo//QKsf/AdP8KP7C0f/oFWP/gOn+FaFFHtan8z+8LIz/7C0f8A6BVj/wCA6f4Uf2Fo/wD0CrH/AMB0/wAK0KKPa1P5n94WRn/2Fo//AECrH/wHT/Cj+wtH/wCgVY/+A6f4VoUUe1qfzP7wsjP/ALC0f/oFWP8A4Dp/hR/YWj/9Aqx/8B0/wrQoo9rU/mf3hZGf/YWj/wDQKsf/AAHT/Cr4AAAAAA6AUtFTKcpfE7jCiiipAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX+Iv/Ig6t/1zX/0Na6iuX+Iv/Ig6t/1zX/0Na6sD/vVP/EvzJl8LOoooorlKCiiigAooooAKKKKACorn/j1m/wBxv5VLUVz/AMes3+438qcd0BzngK2gbwBoDNBGSbGLJKDn5RXRfZLb/n3i/wC+BWF4B/5J9oH/AF4Rf+giujrpxkn9Yqa/af5kx2RD9ktv+feL/vgUfZLb/n3i/wC+BU1Fc3M+5RD9ktv+feL/AL4FUNOtbeGS4smgi/cvujyg+43I/I5H4Vq1Qvf9HvLa8HC58mX/AHW6H8Gx+dc9eUouNW+2/o9/u0fyNaet4d/z/rQs/ZLb/n3i/wC+BR9ktv8An3i/74FTUV0cz7mRD9ktv+feL/vgUfZLb/n3i/74FTUUcz7gQ/ZLb/n3i/74FH2S2/594v8AvgVNRRzPuBD9ktv+feL/AL4FH2S2/wCfeL/vgVNRRzPuBD9ktv8An3i/74Fcz8Q7aBPAWrMsMasI1wQoH8a11lcv8Rf+RB1b/rmv/oa11YGT+tU9ftL8yZfCzqKKKK5CgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqt7dtbqscKh7mU7Y0/mT7CpLq5jtIDLJk9lUdWJ6Ae9Q2VtIrNdXODcyjkDoi9lH+eTXPVnKT9lDfq+y/wA30+/oawikueW35/11JLO0W0hK7i8jndJIert61YooraEIwiox2RnKTk7sKKKKoQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcv8AEX/kQdW/65r/AOhrXUVy/wARf+RB1b/rmv8A6GtdWB/3qn/iX5ky+FnUUUUVylBRRRQAUUUUAFFFFABUVz/x6zf7jfyqWorn/j1m/wBxv5U47oDB8A/8k+0D/rwi/wDQRWpfX00FzBaWtuk9zMrOBJL5aKq4ySQCerAYxWX4B/5J9oH/AF4Rf+giti9063v/AC2l8xZIiTHJFI0brnrgqQcH06V0Yz/ean+J/mKOyKNxrN3aWKSXFlDFdvKyLbmdn3gfxJsjZm45xt+uKjbxBKfDo1aKw8xhJskg8wqeH2HaSoyc9AQvvirbaFZNFEgNyrRFisi3Mgk+b72X3ZOcDqew9KYfDmm/2cbAJcC2MplKrdyg7ic53Bs9ecZxmuYYkupX8CQRyWEIu7iTZDEtySuApYlm2cYAPAB7VmrdXr2fiFbi0llkilCpbpKZAMxoflOM4yc/dz1wK25dKtZrSO2fzysTb43M7mRW55Dk7u5HXocdKrp4c01I7hFSf/SHSSVvtUu5nXG1s7sg8DkegpSipJxezGm07oh8NazNrFnIbiGKOaBhG4SUsdwHOQVVlPsRW3WNYafBpGsTrGZG+3KHMkshdi6cEZJ9Dn862ayoSvHle60f9ea1KqKzv31CiiitiAooooAKKKKACuX+Iv8AyIOrf9c1/wDQ1rqK5f4i/wDIg6t/1zX/ANDWurA/71T/AMS/MmXws6iiiiuUoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACmySJFG0jsFRRkk9hTqzD/AMTW4x1sYm59JnH/ALKP1NZVanIko6ye39dl1/zLhDm1eyHWsb3s4vp1KoP+PeM9h/ePuf0FaNFFOlT9mrbt7vuwnPmYUUUVoQFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVy/xF/5EHVv+ua/+hrXUVy/xF/5EHVv+ua/+hrXVgf96p/4l+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAVFc/8es3+438qlpGUOpVhkEYIpp2YHO+Af+SfaB/14Rf+giujrlY/hx4VhjWOLTpURRgKt7OAPw307/hXnhn/AJ8Z/wDwOn/+LrurPC1Ksp88tW38K6/9vErmSsdRRXL/APCvPDP/AD4z/wDgdP8A/F0f8K88M/8APjP/AOB0/wD8XWXJhf55f+Ar/wCSD3jqKK5f/hXnhn/nxn/8Dp//AIuj/hXnhn/nxn/8Dp//AIujkwv88v8AwFf/ACQe8beqRsbUTxjMtuwlUeuOo/EZq3HIssayIcqwDA+oNcz/AMK88M/8+M//AIHT/wDxdU7HwD4bElxayWU5eF/lP22cZQ8r/H9R+FYOGFhWvzy97+6t1/2/2/I1vKUNtv67f1c7SiuX/wCFeeGf+fGf/wADp/8A4uj/AIV54Z/58Z//AAOn/wDi635ML/PL/wABX/yRl7x1FFcv/wAK88M/8+M//gdP/wDF0f8ACvPDP/PjP/4HT/8AxdHJhf55f+Ar/wCSD3jqKK5f/hXnhn/nxn/8Dp//AIuj/hXnhn/nxn/8Dp//AIujkwv88v8AwFf/ACQe8dRXL/EX/kQdW/65r/6GtH/CvPDP/PjP/wCB0/8A8XTX+HPhWVdsmnSuuQdr3k7A4ORwX9a1oSwtKrGpzSdmn8K6P/ED5mrHVUUUVwFBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRVO9unQpbW2DdS/dz0Qd2PsP1qKlRU48zKjFydkR3Uj3k5sYGKqB/pEg/hH90e5/QVejjSGNY41CoowAOwqK1tUtIBEmTzlmPVmPUn3qes6VNpuc/if4eX9bsqcl8Mdl/VwooorczCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX+Iv/Ig6t/1zX/0Na6iuX+Iv/Ig6t/1zX/0Na6sD/vVP/EvzJl8LOoooorlKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAqhef6Nf212PusfIk+h+6fz/nV+obu3W6tJYGON64B9D2P51jXg5QfLutV6ounJKWuxNRVbT7hrmyjkcYkHyyD0YcH9as1pCanFSWzJlFxbTCiiiqEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVHNNHbwvNKwVEGSTSbSV2NJt2RHeXS2kO4qXdjtjjHV27CmWVq0AeWZg9zLzIw6D0UewqOzhknm+3XKlXIxFGf8Almv/AMUe/wCVX656adSXtZbdF+vq/wAF6s0k1Bci+f8AkFFFFdJkFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXL/EX/AJEHVv8Armv/AKGtdRXL/EX/AJEHVv8Armv/AKGtdWB/3qn/AIl+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAUUVHcEi2lIOCEOCPpTSuwJKK8+8JeE7XVfCGkahealrb3NzaxyyMNVnGWIyeA/FbX/CCaZ/z/65/wCDe4/+LrsqUMPTm4Obunb4f/tiU21ex09Fcx/wgmmf8/8Arn/g3uP/AIuj/hBNM/5/9c/8G9x/8XUezw387/8AAf8A7YLvsdPRXMf8IJpn/P8A65/4N7j/AOLo/wCEE0z/AJ/9c/8ABvcf/F0ezw387/8AAf8A7YLvsdPRXMf8IJpn/P8A65/4N7j/AOLo/wCEE0z/AJ/9c/8ABvcf/F0ezw387/8AAf8A7YLvsbEX+i6tLD0juV81P94cMPywfzq/XGaj4F0+K1NxFe62zwHfg6rcElf4gPn44zVpPA2lSIrrqGuFWGQf7XuOR/33XPSp4aEpU/aPv8PR/wDb3e/4Gs3KSUreX3f8A6miuY/4QTTP+f8A1z/wb3H/AMXR/wAIJpn/AD/65/4N7j/4uuj2eG/nf/gP/wBsZXfY6eiuY/4QTTP+f/XP/Bvcf/F0f8IJpn/P/rn/AIN7j/4uj2eG/nf/AID/APbBd9jp6K5j/hBNM/5/9c/8G9x/8XSeAWl/4RyWOW4nn8m/u4VeeVpH2rM6qCxJJwAKJ0afs3Upybs0tVbe/m+wXd7M6iiiiuUoKKKKACiiigAooooAKKKKACiiigAJAGTwKzYwdUuBO3/HnE2YlP8Ay0YfxH2Hb86LhjqNw1nGSLeM/wCkOP4j/cH9a0VUIoVQAoGAB2rl/jyt9lfi/wDJfi/TXb+Gv7z/AA/4LFooorqMQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX+Iv/Ig6t/1zX/0Na6iuX+Iv/Ig6t/1zX/0Na6sD/vVP/EvzJl8LOoooorlKCiiigAooooAKKKKACorn/j1m/3G/lUtRXP/AB6zf7jfypx3QGD4B/5J9oH/AF4Rf+gitS9v54buGzs7ZJ7mRWkIkl8tFQYBJIVj1IwMVl+Af+SfaB/14Rf+gitS9sZ5buG8s50iuY0aM+ZGXR0JBwQCDnIGDn1610Yz/ean+J/mKOyGxalLHZmbULKa3cSGPy4Fe4zjow2LnB9wKWbW9Pg01dRlnKWhbaZDG3yHOPmGMrg8HOMd6p32jXl/Dbi4u7ad42ZnjmtyYXz0+QNzt7ZJ6n2xCnh28i8PHSor+1X9+ZA/2M7QpfftCiQd+M56dq5hml/bdiLb7QWmCFwihraQM7EZG1SuW454B71HpGrf2nNfqNpS2nEanYyNgqrYZW5BGfalubC8uIrWU3UAvraQusggPltkFSCm4nof73X8qNL067sru+uLq8inN3Ism2ODy9hChcD5jkYUe/WgDTooooACAQQRkGqGmExJNZMebZ9q57oeV/Tj8Kv1Quv9G1K2uuiS/uJPx5U/nx+Nc9f3ZRq9tH6P/g2ZrT1Th3/NF+iiiugyCiiigArl/Af/ACArv/sKXv8A6UPXUVy/gP8A5AV3/wBhS9/9KHrqp/7tP1j/AO3Ev4kdRRRRXKUFFFFABRRRQAUUUUAFFFFABVG9uJGkWytTidxln/55L/e+vpUt7d/Zo1VF3zyHbFH/AHj/AIDvRZWn2WNi7eZPId0sh/iP+HoK56knUl7KHzfby9X+C17GsEornl8v67Elvbx2sCwxDCqPxPufepaKK3jFRSitkZttu7CiiimIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArl/iL/wAiDq3/AFzX/wBDWuorl/iL/wAiDq3/AFzX/wBDWurA/wC9U/8AEvzJl8LOoooorlKCiiigAooooAKKKKACorn/AI9Zv9xv5VLUVz/x6zf7jfypx3QGD4B/5J9oH/XhF/6CK6OvO/Bl54uTwVoq2mj6TLbCzjEbyag6My7RgkCI4Ptk1ufbvG3/AEAtF/8ABlJ/8ar0cXhZvETfNHd/aXf1IjLRHUUVy/27xt/0AtF/8GUn/wAao+3eNv8AoBaL/wCDKT/41XP9Un/NH/wKP+Y+Y6iiuX+3eNv+gFov/gyk/wDjVH27xt/0AtF/8GUn/wAao+qT/mj/AOBR/wAw5jqKK5f7d42/6AWi/wDgyk/+NUfbvG3/AEAtF/8ABlJ/8ao+qT/mj/4FH/MOY6ioLy3F3ZywZwWXg+h7H88Vz327xt/0AtF/8GUn/wAao+3eNv8AoBaL/wCDKT/41UzwUpxcZONn/ej/AJlRnytNHQWNwbqyjlYYcjDj0YcEfnViuLhvfGdrqEsI0TR/9IzMqnUXwDwGwfK+hq59u8bf9ALRf/BlJ/8AGqzoYWo4WlKN1o/ej/n13KqNKV0tGdRRXL/bvG3/AEAtF/8ABlJ/8ao+3eNv+gFov/gyk/8AjVbfVJ/zR/8AAo/5mfMdRXL+A/8AkBXf/YUvf/Sh6Pt3jb/oBaL/AODKT/41Ufw7MzeGZmuERJjqN4ZFRtyq3nvkA4GRnvitXRlTw022nrHZp/zdhXvI6yiiiuAsKKKKACiiigAooooAKiubiO1gaaU4Vew6k9gPepGZUQsxCqoySewrPt1bULhb2UEQJ/x7xnv/ALZ/pWNWo1aEPif4eb/rXY0hFP3pbL+rEllbyGRry6H+kSDAXtGv90f1q7RRVU6apx5V/wAOTOTk7sKKKK0JCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX+Iv8AyIOrf9c1/wDQ1rqK5f4i/wDIg6t/1zX/ANDWurA/71T/AMS/MmXws6iiiiuUoKKKKACiiigAooooAKiuf+PWb/cb+VS1Fc/8es3+438qcd0Bg+Af+SfaB/14Rf8AoIro65zwD/yT7QP+vCL/ANBFdHXRjP8Aean+J/mKOyCiiiuYYUUUUAFFFFABRRRQBR1RSkCXaDL2z+Zx3Xow/LP5VdVg6hlOQRkEd6GAZSrDIIwQao6WTHFJZufmtn2DPdOqn8uPwrn+Ct5S/Nf5r8jX4qfp+T/4P5l+iiiugyCuX8B/8gK7/wCwpe/+lD11Fcv4D/5AV3/2FL3/ANKHrqp/7tP1j/7cS/iR1FFFFcpQUUUUAFFFFABRRVC7mkuJ/sNsxViMzSD/AJZr6D/aP/16zq1FTjfr0XdlQhzOwx/+JpcGIf8AHlE37w/89WH8P0HetLpTIYY4IUiiUKiDAA7U+ppU3G8paye/+S8l/wAEc530WyCiiitiAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5f4i/8iDq3/XNf/Q1rqK5f4i/8iDq3/XNf/Q1rqwP+9U/8S/MmXws6iiiiuUoKKKKACiiigAooooAKiuf+PWb/cb+VS1Fc/8AHrN/uN/KnHdAYPgH/kn2gf8AXhF/6CK6Ouc8A/8AJPtA/wCvCL/0EVqXmh6TqMwmvtLsrqUDbvnt0dsemSK6MZ/vNT/E/wAxR2RfrJ11pFS1ybkWZl/0k2u7eF2nH3PmA3YyR/LNJ/winhz/AKAGlf8AgHH/AIVcsdK07TA4sLC1tN+N/kQrHux0zgc1zDOZuIFma1jtJ9eaCS4kJLPcLgeUcDd97buCkFj1JwcVTkN7DpGGl1gOWspNxeVZCzsFlUFsc/7HbsBxXe1WvtPt9RhWK5EhRXDjy5WjIYcg5Ug8HmgDN0bf9uuDb/bxp/lpt+2mTd5mTnb5vz4xjrxnp3rbqrd6ZY6hAkN9ZwXcaHKrcRiQA9M/Nnn3ql/winhz/oAaV/4Bx/4UAa9FZ1r4f0WxuFuLTSLC3mX7skVsiMPoQM1o0AFULj/RtUguOiTjyJPr1U/zH41fqvfW/wBqs5YQcMRlD6MOQfzxWNeLlC8d1qvVf57GlNpS12ZYoqvZXH2uzimxhmHzD0YcEfnmrFaQkpxUo7MiScW0wrl/Af8AyArv/sKXv/pQ9dRXL+A/+QFd/wDYUvf/AEoeuyn/ALtP1j/7cQ/iR1FFFFcpQUUUUAFFFQXd0lpAZHBYk7UQdXY9AKmUlCLlLZDScnZEd7dNCEhgAe5l4jU9B6sfYVJaWq2kGwEsxO53PV2PUmorK1eMvcXBDXUv3yOijso9hVysaUXKXtZ79F2X+b6/d66TaS5I/Pz/AOAFFFFdBkFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVy/xF/5EHVv+ua/+hrXUVy/xF/5EHVv+ua/+hrXVgf96p/4l+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAVFc/8es3+438qlqK5/wCPWb/cb+VOO6AwfAP/ACT7QP8Arwi/9BFdHXOeAf8Akn2gf9eEX/oIro66MZ/vNT/E/wAxR2QVHPPHbW8k8zbYo1Lu2M4AGTUlZfiF1XRrgEXm8o3l/Y1lL78HH+r56/hXMM01YOispyrDINLXN39w17pWmFP7UjLXMSSmKGeN8Y+bdgAhfc8e+amsnWG21W3uP7SNtDcbIyVnaQoVX7jD52G4tyCcetAGvDeW89mt4kq/Z2XeJG+UY9eelT1ye2TVvAc9q8eom5S3IZZUmikZucDLYZv1zW3pEtm0LpZteMqnJNz5xOT6NLyenQHigDRooooAKKKKAKFt/o2p3Ft0Sb9/H9ejD88H8av1Q1QGKOK8UfNbPvOO6Hhh+XP4VeBDAEHIPINc9H3JSpdtV6P/AIN16WNanvJT/q6/pC1y/gP/AJAV3/2FL3/0oeuorl/Af/ICu/8AsKXv/pQ9elT/AN2n6x/9uMH8SOoooorlKCiiigBksqQxNLIwVFGWJ7CqVpE91OL+4UrxiCM/wL6n3P6Cmr/xNbgOf+PKJvlHaZx3/wB0fqa0q5Y/v5c32Vt5vv6Lp9/Y2f7tW6v8PL/P7u4UUUV1GIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVy/wARf+RB1b/rmv8A6GtdRXL/ABF/5EHVv+ua/wDoa11YH/eqf+JfmTL4WdRRRRXKUFFFFABRRRQAUUUUAFRXP/HrN/uN/Kpaiuf+PWb/AHG/lTjugMHwD/yT7QP+vCL/ANBFal5oek6jMJr7S7K6lA2757dHbHpkisvwD/yT7QP+vCL/ANBFdHXRjP8Aean+J/mKOyMj/hFPDn/QA0r/AMA4/wDCrljpWnaYHFhYWtpvxv8AIhWPdjpnA5q3RXMMKKjmuIrdVaV9oZ1QH1ZjgD8zUlABVe8sLPUYRDfWkF1EDuCTxh1z64IqxRQBkf8ACKeHP+gBpX/gHH/hUtt4e0SzuEuLXR9PgmTlZIrZFZfoQMitKigAooooARlV0ZGGVYYI9RVLS2Zbd7Vzl7ZvL57r1U/lir1UJv8ARdWhm6R3A8l/94cqf5j8q563uSjU+T9H/wAG3yua0/eTh8/u/wCAX65fwH/yArv/ALCl7/6UPXUVy/gP/kBXf/YUvf8A0oevSp/7tP1j/wC3GD+JHUUUUVylBWdcu19O1jCxES/8fEg9P7g9z39BUl7cyB1tLbH2mUZz1Ea92P8AT3qe1to7SBYo84HJJ6se5PvXNN+2k6a2W/8Al/n5eum0fcXO9+n+f+RIiLGioihVUYAHQCnUUV0pW0RiFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXL/EX/AJEHVv8Armv/AKGtdRXL/EX/AJEHVv8Armv/AKGtdWB/3qn/AIl+ZMvhZ1FFFFcpQUUUUAFFFFABRRRQAVFc/wDHrN/uN/Kpaiuf+PWb/cb+VOO6AwfAP/JPtA/68Iv/AEEVqXmuaTp0whvtUsrWUjdsnuERseuCay/AP/JPtA/68Iv/AEEV0ddGM/3mp/if5ijsjI/4Svw5/wBB/Sv/AAMj/wAap6rdaf4hsUhsZE1ONJlab7DPDIYxgkFlbKsM8YP1HSujormGcgNDabw4sNxo0L+VerOluYowWQOCTt3FVYjPAIH0zitK7t1uPC93aW+hvGjRskdnthXJI4IG7aOTnkg8Vu0UAc/pr6XoOmxzXsEOkSOFjeS8mjDysB1LhjuPXqc1Z/4Svw5/0H9K/wDAyP8AxrXooAzrXxBot9cLb2mr2FxM33Y4rlHY/QA5rRoooAKKKKACq1/bm6spI1OJMbkPow5B/OrNFTOCnFxlsxxk4tNEFncC7tIpwMb1yR6HuPzrnvAf/ICu/wDsKXv/AKUPWzaf6NqNzan7j/v4/wAeGH58/jWN4D/5AV3/ANhS9/8ASh62wk3LBz5t04p+q5v+HHVilPTY6iq15di1iBC75XO2OMdWb/D3qWeeO2geaVtqKMk1Vs4JJJTe3S4mYYjjP/LJfT6nvXJVnK/s4bv8F3/y/wAkyoRVuaW35/11JLK0NujPKwe4lO6V/U+g9h2q1RRWkIRhFRjsTKTk7sKKKKskKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACuX+Iv/ACIOrf8AXNf/AENa6iuZ+ISPJ4C1ZY0d28oHailicMpPArqwX+80/wDEvzJlszpqK5f/AIWH4Z/5/Z//AABn/wDiKP8AhYfhn/n9n/8AAGf/AOIo+o4r/n3L7mHNHudRRXL/APCw/DP/AD+z/wDgDP8A/EUf8LD8M/8AP7P/AOAM/wD8RR9RxX/PuX3MOaPc6iiuX/4WH4Z/5/Z//AGf/wCIo/4WH4Z/5/Z//AGf/wCIo+o4r/n3L7mHNHudRRXL/wDCw/DP/P7P/wCAM/8A8RR/wsPwz/z+z/8AgDP/APEUfUcV/wA+5fcw5o9zqKiuf+PWb/cb+Vc5/wALD8M/8/s//gDP/wDEUj+PfDk8bQx3k5eQFVBspxkngclKawWJT/hy+5hzR7k3gH/kn2gf9eEX/oIro6878GWfi5/BWitaazpUVubOMxpJp7uyrtGASJRk++BW79h8bf8AQd0b/wAFkn/x6t8Xh4PETftI7v8Am7+govRaHT0VzH2Hxt/0HdG/8Fkn/wAeo+w+Nv8AoO6N/wCCyT/49XP9Xh/z9j/5N/8AIjv5HT0VzH2Hxt/0HdG/8Fkn/wAeo+w+Nv8AoO6N/wCCyT/49R9Xh/z9j/5N/wDIhfyOnormPsPjb/oO6N/4LJP/AI9R9h8bf9B3Rv8AwWSf/HqPq8P+fsf/ACb/AORC/kdPRXMfYfG3/Qd0b/wWSf8Ax6j7D42/6Dujf+CyT/49R9Xh/wA/Y/8Ak3/yIX8jp6K5j7D42/6Dujf+CyT/AOPUfYfG3/Qd0b/wWSf/AB6j6vD/AJ+x/wDJv/kQv5HT0VzH2Hxt/wBB3Rv/AAWSf/HqPsPjb/oO6N/4LJP/AI9R9Xh/z9j/AOTf/IhfyH67qc9jeQn7MFeMkxS7sq6kYIIx9PyrE8I6g9r4AuLjf++e/uwp/wBozvz/ADNX73Q/F9/bmCfW9GKnkEaa+QfUfvaxPBmj3194dWylkRY7e/uxLMowHfzmB2r+B/OvKxOGxOHw+IlSqKfO4qKV7p2ktdEtF18jvpVKNRwUlbl381/XQ62x1CDV7qKSaVEEePLgJ5Z8csfp2/Ot6qdhpdrp0e2CP5j9525Y/jVyjB0qsKf76zk97GNecJS/d7IKKKK6zAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACorn/AI9Zv9xv5VLUVz/x6zf7jfypx3QGD4B/5J9oH/XhF/6CK6Ouc8A/8k+0D/rwi/8AQRXR10Yz/ean+J/mKOyCiiiuYYUVWu72OyEJkRyssqxAqM7SxwM+2as0AFFFFABRRRQAUUUUAFFFFABXL+A/+QFd/wDYUvf/AEoeuorl/Af/ACArv/sKXv8A6UPXVT/3afrH/wBuJfxI6iiiiuUoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqK5/49Zv9xv5VLUVz/wAes3+438qcd0Bg+Af+SfaB/wBeEX/oIqXxRZNfW1pGmmzXpS5SQmF0RkUEbsFmUjI44NReAf8Akn2gf9eEX/oIro66MZ/vNT/E/wAxR2RzWqabu0+0trXR1js2YvNBFbwO8bY4wrEoM85PP65qnBpFzLpWk2l7o8sq29+7OsjQkJEd+0kBsbcMo2gdsYxXY0VzDOTm0u/fSp9PtLWayB1JWgeMxYiiDK29V3YA4PGM89Kt6Vc2Ph/S1t9RhtdGCyFQ0s8apcN3dTuJOevzc89+tdDRQBzWs6lpmvaPc2GmXVpqdy4Ui3trqJnwGGTywxj1zSPp9xZPqsemaQkcEtvF5abY/LdssH+TcMttI64Bx1rpqKAODGiXYs9UtY9GuXtbiOExo4to9zq53fKhUA4xyeeOvSp/+EcuoHuRptiLGSX7VGs8ZRdqsFMfQ5C5BAAHB5x3rtaKAOS0TSprK+adLK6gKwMrJ5UESSNxgEoSWPo3bJ5o8PaTJY6rFImmSQRiBllkuFiEisSp2h4z+86dWBPHXJIPW0UAFFFFABXL+A/+QFd/9hS9/wDSh66iuX8B/wDICu/+wpe/+lD11U/92n6x/wDbiX8SOoooorlKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKiuf+PWb/AHG/lUtRXP8Ax6zf7jfypx3QGD4B/wCSfaB/14Rf+giujrnPAP8AyT7QP+vCL/0EVN4ksjfLao1lcXESOzkxCJwpxgbo5OGByenIxXRjP95qf4n+Yo7I3ajnl8i3km8t5NiltkYyzYHQDua5q30+5tLHR520oebaTS7oYAgZY3DgYBbAzlSQGIHbpTVsJv8AhFr2zk8PuxlmnMVoDAQoYko3L7RjI75B/OuYZ0slzFDFHJKTGHZUG4c7mOAPzNTVzmoWDap4ftVutHLy28sLm3nETsQrLux8xXkZ71di1LTNKsI/tKQaNAWKxR3LxQhu/ADY7/WgDWormtZ1LTNe0e5sNMurTU7lwpFvbXUTPgMMnlhjHrmkfT7iyfVY9M0hI4JbeLy02x+W7ZYP8m4ZbaR1wDjrQB01FcGNEuxZ6pax6Ncva3EcJjRxbR7nVzu+VCoBxjk88delT/8ACOXUD3I02xFjJL9qjWeMou1WCmPochcggADg8470AdrRXJaJpU1lfNOlldQFYGVk8qCJJG4wCUJLH0btk80eHtJksdVikTTJIIxAyyyXCxCRWJU7Q8Z/edOrAnjrkkEA62iiigArl/Af/ICu/wDsKXv/AKUPXUVy/gP/AJAV3/2FL3/0oeuqn/u0/WP/ALcS/iR1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUVz/x6zf7jfyqWorn/AI9Zv9xv5U47oDB8A/8AJPtA/wCvCL/0EV0dc54B/wCSfaB/14Rf+giujroxn+81P8T/ADFHZBRRRXMMKKKKACiiigAooooAKKKKACiiigArl/Af/ICu/wDsKXv/AKUPXUVy/gP/AJAV3/2FL3/0oeuqn/u0/WP/ALcS/iR1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUVz/x6zf7jfyqWorn/AI9Zv9xv5U47oDgPBmh69P4K0WWDxddW0L2cZSFbK3YRjaMAEpk4963P+Ee8Sf8AQ7Xn/gBbf/EVL4B/5J9oH/XhF/6CK6OvRxeLqLETVo7v7Me/oRGKsjl/+Ee8Sf8AQ7Xn/gBbf/EUf8I94k/6Ha8/8ALb/wCIrqKK5/rlTtH/AMBj/kPlRy//AAj3iT/odrz/AMALb/4ij/hHvEn/AEO15/4AW3/xFdRRR9cqdo/+Ax/yDlRy/wDwj3iT/odrz/wAtv8A4ij/AIR7xJ/0O15/4AW3/wARXUUUfXKnaP8A4DH/ACDlRy//AAj3iT/odrz/AMALb/4ij/hHvEn/AEO15/4AW3/xFdRRR9cqdo/+Ax/yDlRy/wDwj3iT/odrz/wAtv8A4ij/AIR7xJ/0O15/4AW3/wARXUUUfXKnaP8A4DH/ACDlRy//AAj3iT/odrz/AMALb/4ij/hHvEn/AEO15/4AW3/xFdRRR9cqdo/+Ax/yDlRy/wDwj3iT/odrz/wAtv8A4io/h2kkXhmaOWYzSLqN4rylQC5E75OBwM9eK6yuX8B/8gK7/wCwpe/+lD1q60qmGmpJbx2SX83ZIVrSOoooorgLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKiuf+PWb/AHG/lUtRXP8Ax6zf7jfypx3QGD4B/wCSfaB/14Rf+gity4vLW0KC5uYYTIdqeY4XcfQZ61h+Af8Akn2gf9eEX/oIq54gsLrUba3ht7a0uEWdJZEuZSikKwOOEbNdGM/3mp/if5ijsi0dY0wWguzqNoLYtsE3nrsLem7OM06TVNPht47iW/tUgl/1cjTKFfjPBzg8VS1O21O6itfKVFAybiCK7aLccDGJAu7A56AZ/DBoWmi6nDZadBLFZuba/e4cm5dvkJcjBKZLDf39OvNcwzXn1WFba2ubYx3UE06ReZFKCBubbkEZB5qza3lrfRtJaXMNwisULRSBwGHUZHesG60K+vbK6s5PJijn1ATl4bhlZYsqSQQnD8dOnPWtXRoLy0sha3cdqqwnZC1uT86DoWXaApx1AyKANCiiigAooooAKKKKACiiigArl/Af/ICu/wDsKXv/AKUPXUVy/gP/AJAV3/2FL3/0oeuqn/u0/WP/ALcS/iR1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUVz/x6zf7jfyqWorn/AI9Zv9xv5U47oDB8A/8AJPtA/wCvCL/0EV0dc54B/wCSfaB/14Rf+gity6vbWxiEt5cw28ZO0NNIEBPpk10Yz/ean+J/mKOyJ6KrR6jZS+T5d5bv54Ji2yqfMA67eece1Q3Gr2cOlyX8d1ayQqCFc3CqjMP4d5OBzxXMMv0VQv8AWbHS7WC4vriKBJnSNS0igZYgdSeQM/lVq3uYLuBZ7aaOaJvuyRuGU/QigCWiiigAooooAKKKKACiiigArl/Af/ICu/8AsKXv/pQ9dRXL+A/+QFd/9hS9/wDSh66qf+7T9Y/+3Ev4kdRRRRXKUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVFc/8es3+438qlqK5/49Zv8Acb+VOO6AwfAP/JPtA/68Iv8A0EVd1qyuLt7ZoLeOURFmJ+0vBIpIwCrKD75B46VS8A/8k+0D/rwi/wDQRXR10Yz/AHmp/if5ijsjn49N1OCx01ttvNdWs7yMm/YrKwcY3BOSNwydozg0JY6wmhXtsYLFrq5lmOPtLhFVySOfLJyM9Mfj2roKK5hmNLZ6jPosETw2yXUEkThFnZkcIyn7xQEZwe1aVo91JEWu4IoXzwscpk49ztHP5/Wp6KACiiigAooooAKKKKACiiigArl/Af8AyArv/sKXv/pQ9dRXL+A/+QFd/wDYUvf/AEoeuqn/ALtP1j/7cS/iR1FFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTJUMkLoOrKQM0+ihaAcRoeneONE0Oy0uNPD0qWkKwq7TTgsFGAT8tX9/jv8A54eHP+/0/wD8RXUUV2TxjnJylCN35f8ABJ5fM5ff47/54eHP+/0//wARRv8AHf8Azw8Of9/p/wD4iuooqfrK/wCfcfu/4Icvmcvv8d/88PDn/f6f/wCIo3+O/wDnh4c/7/T/APxFdRRR9ZX/AD7j93/BDl8zl9/jv/nh4c/7/T//ABFG/wAd/wDPDw5/3+n/APiK6iij6yv+fcfu/wCCHL5nL7/Hf/PDw5/3+n/+Io3+O/8Anh4c/wC/0/8A8RXUUUfWV/z7j93/AAQ5fM5ff47/AOeHhz/v9P8A/EUb/Hf/ADw8Of8Af6f/AOIrqKKPrK/59x+7/ghy+Zy+/wAd/wDPDw5/3+n/APiKN/jv/nh4c/7/AE//AMRXUUUfWV/z7j93/BDl8zl9/jv/AJ4eHP8Av9P/APEVc8JaTe6NohttQe3e6kuZ7iQ25JQGSRnwMgHjdW5RSniXKDgopJ66eX/DjS1uFFFFcwwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z"
              }
            },
            {
              "id": "/page/238/Caption/2",
              "block_type": "Caption",
              "html": "<p><span id=\"page-238-0\"></span>Figure C.8: Class diagram.</p>",
              "polygon": [
                [
                  266.853515625,
                  322.330078125
                ],
                [
                  386.384765625,
                  322.330078125
                ],
                [
                  386.384765625,
                  332.6518859863281
                ],
                [
                  266.853515625,
                  332.6518859863281
                ]
              ],
              "bbox": [
                266.853515625,
                322.330078125,
                386.384765625,
                332.6518859863281
              ],
              "children": null,
              "section_hierarchy": {
                "1": "/page/232/SectionHeader/1",
                "2": "/page/237/SectionHeader/9"
              },
              "images": {}
            }
          ],
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": null
        },
        {
          "id": "/page/238/Text/3",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Class diagrams are different. They show the classes that make up a program and the relationships between them. They are timeless in the sense that they describe the program as a whole, not any particular point in time. For example, if an instance of Class A generally contains a reference to an instance of Class B, we say there is a \"HAS-A relationship\" between those classes.</p>",
          "polygon": [
            [
              128.49609375,
              353.267578125
            ],
            [
              525.6034545898438,
              353.267578125
            ],
            [
              525.6034545898438,
              412.51287841796875
            ],
            [
              128.49609375,
              412.51287841796875
            ]
          ],
          "bbox": [
            128.49609375,
            353.267578125,
            525.6034545898438,
            412.51287841796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's an example that shows a HAS-A relationship. You can download it from <a href=\"http://thinkpython.com/code/lumpy_demo7.py\">http:</a> <a href=\"http://thinkpython.com/code/lumpy_demo7.py\">//thinkpython.com/code/lumpy_demo7.py</a>.</p>",
          "polygon": [
            [
              128.49609375,
              421.13671875
            ],
            [
              525.6057739257812,
              421.13671875
            ],
            [
              525.6057739257812,
              443.89886474609375
            ],
            [
              128.49609375,
              443.89886474609375
            ]
          ],
          "bbox": [
            128.49609375,
            421.13671875,
            525.6057739257812,
            443.89886474609375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/Code/5",
          "block_type": "Code",
          "html": "<pre>from swampy.Lumpy import Lumpy</pre>",
          "polygon": [
            [
              128.49609375,
              449.0077209472656
            ],
            [
              286.875,
              449.0077209472656
            ],
            [
              286.875,
              459.03515625
            ],
            [
              128.49609375,
              459.03515625
            ]
          ],
          "bbox": [
            128.49609375,
            449.0077209472656,
            286.875,
            459.03515625
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/Text/6",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">lumpy = Lumpy() lumpy.make_reference()</p>",
          "polygon": [
            [
              128.72021484375,
              473.3957214355469
            ],
            [
              244.67799377441406,
              473.3957214355469
            ],
            [
              244.67799377441406,
              495.5533142089844
            ],
            [
              128.72021484375,
              495.5533142089844
            ]
          ],
          "bbox": [
            128.72021484375,
            473.3957214355469,
            244.67799377441406,
            495.5533142089844
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/Code/7",
          "block_type": "Code",
          "html": "<pre>box = Rectangle()\nbox.width = 100.0\nbox.height = 200.0\nbox.corner = Point()\nbox.corner.x = 0.0\nbox.corner.y = 0.0</pre>",
          "polygon": [
            [
              128.57080078125,
              509.9787292480469
            ],
            [
              234.21726989746094,
              509.9787292480469
            ],
            [
              234.21726989746094,
              580.9133453369141
            ],
            [
              128.57080078125,
              580.9133453369141
            ]
          ],
          "bbox": [
            128.57080078125,
            509.9787292480469,
            234.21726989746094,
            580.9133453369141
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/Code/8",
          "block_type": "Code",
          "html": "<pre>lumpy.class_diagram()</pre>",
          "polygon": [
            [
              129.09375,
              595.3397521972656
            ],
            [
              239.4476318359375,
              595.3397521972656
            ],
            [
              239.4476318359375,
              605.3023529052734
            ],
            [
              129.09375,
              605.3023529052734
            ]
          ],
          "bbox": [
            129.09375,
            595.3397521972656,
            239.4476318359375,
            605.3023529052734
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/Text/9",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-237-1\">C.7</a> shows the result. Each class is represented with a box that contains the name of the class, any methods the class provides, any class variables, and any instance variables. In this example, Rectangle and Point have instance variables, but no methods or class variables.</p>",
          "polygon": [
            [
              129.5419921875,
              610.2421875
            ],
            [
              525.9375,
              610.2421875
            ],
            [
              525.9375,
              657.2549133300781
            ],
            [
              129.5419921875,
              657.2549133300781
            ]
          ],
          "bbox": [
            129.5419921875,
            610.2421875,
            525.9375,
            657.2549133300781
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/238/Text/10",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">The arrow from Rectangle to Point shows that Rectangles contain an embedded Point. In addition, Rectangle and Point both inherit from object, which is represented in the diagram with a triangle-headed arrow.</p>",
          "polygon": [
            [
              129.392578125,
              665.9296875
            ],
            [
              525.638671875,
              665.9296875
            ],
            [
              525.638671875,
              700.8349227905273
            ],
            [
              129.392578125,
              700.8349227905273
            ]
          ],
          "bbox": [
            129.392578125,
            665.9296875,
            525.638671875,
            700.8349227905273
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "2": "/page/237/SectionHeader/9"
      },
      "images": null
    },
    {
      "id": "/page/239/Page/86",
      "block_type": "Page",
      "html": "<content-ref src='/page/239/PageHeader/0'></content-ref><content-ref src='/page/239/PageHeader/6'></content-ref><content-ref src='/page/239/Text/1'></content-ref><content-ref src='/page/239/Code/2'></content-ref><content-ref src='/page/239/Code/3'></content-ref><content-ref src='/page/239/Text/4'></content-ref><content-ref src='/page/239/Text/5'></content-ref>",
      "polygon": [
        [
          0.0,
          0.0
        ],
        [
          612.0,
          0.0
        ],
        [
          612.0,
          792.0
        ],
        [
          0.0,
          792.0
        ]
      ],
      "bbox": [
        0.0,
        0.0,
        612.0,
        792.0
      ],
      "children": [
        {
          "id": "/page/239/PageHeader/0",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              86.4000015258789,
              60.8115234375
            ],
            [
              482.4034729003906,
              60.8115234375
            ],
            [
              482.4034729003906,
              71.13372802734375
            ],
            [
              86.4000015258789,
              71.13372802734375
            ]
          ],
          "bbox": [
            86.4000015258789,
            60.8115234375,
            482.4034729003906,
            71.13372802734375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/239/PageHeader/6",
          "block_type": "PageHeader",
          "html": "",
          "polygon": [
            [
              84.568359375,
              60.95654296875
            ],
            [
              102.3486328125,
              60.95654296875
            ],
            [
              102.3486328125,
              70.52783203125
            ],
            [
              84.568359375,
              70.52783203125
            ]
          ],
          "bbox": [
            84.568359375,
            60.95654296875,
            102.3486328125,
            70.52783203125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/239/Text/1",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Here's a more complex example using my solution to Exercise <a href=\"#page-198-1\">18.6.</a> You can download the code from <a href=\"http://thinkpython.com/code/lumpy_demo8.py\">http://thinkpython.com/code/lumpy_demo8.py</a>; you will also need <a href=\"http://thinkpython.com/code/PokerHand.py\">http:</a> <a href=\"http://thinkpython.com/code/PokerHand.py\">//thinkpython.com/code/PokerHand.py</a>.</p>",
          "polygon": [
            [
              85.46484375,
              88.365234375
            ],
            [
              482.40582275390625,
              88.365234375
            ],
            [
              482.40582275390625,
              123.1868896484375
            ],
            [
              85.46484375,
              123.1868896484375
            ]
          ],
          "bbox": [
            85.46484375,
            88.365234375,
            482.40582275390625,
            123.1868896484375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/239/Code/2",
          "block_type": "Code",
          "html": "<pre>from swampy.Lumpy import Lumpy\nfrom PokerHand import *\nlumpy = Lumpy()\nlumpy.make_reference()\ndeck = Deck()\nhand = PokerHand()\ndeck.move_cards(hand, 7)</pre>",
          "polygon": [
            [
              86.2119140625,
              129.23968505859375
            ],
            [
              243.3955078125,
              129.23968505859375
            ],
            [
              243.3955078125,
              261.615234375
            ],
            [
              86.2119140625,
              261.615234375
            ]
          ],
          "bbox": [
            86.2119140625,
            129.23968505859375,
            243.3955078125,
            261.615234375
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/239/Code/3",
          "block_type": "Code",
          "html": "<pre>lumpy.class_diagram()</pre>",
          "polygon": [
            [
              86.40000915527344,
              263.3775634765625
            ],
            [
              196.330078125,
              263.3775634765625
            ],
            [
              196.330078125,
              273.796875
            ],
            [
              86.40000915527344,
              273.796875
            ]
          ],
          "bbox": [
            86.40000915527344,
            263.3775634765625,
            196.330078125,
            273.796875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/239/Text/4",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">Figure <a href=\"#page-238-0\">C.8</a> shows the result. PokerHand inherits from Hand, which inherits from Deck. Both Deck and PokerHand have Cards.</p>",
          "polygon": [
            [
              86.0625,
              278.4375
            ],
            [
              482.90625,
              278.4375
            ],
            [
              482.90625,
              301.8497314453125
            ],
            [
              86.0625,
              301.8497314453125
            ]
          ],
          "bbox": [
            86.0625,
            278.4375,
            482.90625,
            301.8497314453125
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        },
        {
          "id": "/page/239/Text/5",
          "block_type": "Text",
          "html": "<p block-type=\"Text\">This diagram does not show that Hand also has cards, because in the program there are no instances of Hand. This example demonstrates a limitation of Lumpy; it only knows about the attributes and HAS-A relationships of objects that are instantiated.</p>",
          "polygon": [
            [
              86.361328125,
              311.30859375
            ],
            [
              483.50390625,
              311.30859375
            ],
            [
              483.50390625,
              346.375732421875
            ],
            [
              86.361328125,
              346.375732421875
            ]
          ],
          "bbox": [
            86.361328125,
            311.30859375,
            483.50390625,
            346.375732421875
          ],
          "children": null,
          "section_hierarchy": {
            "1": "/page/232/SectionHeader/1",
            "2": "/page/237/SectionHeader/9"
          },
          "images": {}
        }
      ],
      "section_hierarchy": {
        "1": "/page/232/SectionHeader/1",
        "2": "/page/237/SectionHeader/9"
      },
      "images": null
    }
  ],
  "block_type": "Document"
}