diff --git a/book/Makefile b/book/Makefile index e696f9c..ff9ca07 100644 --- a/book/Makefile +++ b/book/Makefile @@ -20,7 +20,8 @@ all: book.tex makeindex book pdflatex book mv book.pdf thinkpython.pdf - evince thinkpython.pdf + zathura thinkpython.pdf + #evince thinkpython.pdf hevea: book.tex header.html footer.html # replace the pdfs with eps diff --git a/book/book.aux b/book/book.aux new file mode 100644 index 0000000..0d22d3c --- /dev/null +++ b/book/book.aux @@ -0,0 +1,493 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\@writefile{toc}{\contentsline {chapter}{Preface}{v}{chapter*.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}The way of the program}{1}{chapter.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}The Python programming language}{1}{section.1.1}} +\@writefile{lof}{\contentsline {figure}{\numberline {1.1}{\ignorespaces An interpreter processes the program a little at a time, alternately reading lines and performing computations.}}{2}{figure.1.1}} +\newlabel{fig.interpret}{{1.1}{2}{An interpreter processes the program a little at a time, alternately reading lines and performing computations}{figure.1.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {1.2}{\ignorespaces A compiler translates source code into object code, which is run by a hardware executor.}}{2}{figure.1.2}} +\newlabel{fig.compile}{{1.2}{2}{A compiler translates source code into object code, which is run by a hardware executor}{figure.1.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.2}What is a program?}{3}{section.1.2}} +\@writefile{toc}{\contentsline {section}{\numberline {1.3}What is debugging?}{3}{section.1.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.1}Syntax errors}{3}{subsection.1.3.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.2}Runtime errors}{4}{subsection.1.3.2}} +\newlabel{runtime}{{1.3.2}{4}{Runtime errors}{subsection.1.3.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.3}Semantic errors}{4}{subsection.1.3.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {1.3.4}Experimental debugging}{4}{subsection.1.3.4}} +\@writefile{toc}{\contentsline {section}{\numberline {1.4}Formal and natural languages}{5}{section.1.4}} +\@writefile{toc}{\contentsline {section}{\numberline {1.5}The first program}{6}{section.1.5}} +\newlabel{hello}{{1.5}{6}{The first program}{section.1.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.6}Debugging}{7}{section.1.6}} +\@writefile{toc}{\contentsline {section}{\numberline {1.7}Glossary}{7}{section.1.7}} +\@writefile{toc}{\contentsline {section}{\numberline {1.8}Exercises}{9}{section.1.8}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Variables, expressions and statements}{11}{chapter.2}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}Values and types}{11}{section.2.1}} +\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces State diagram.}}{12}{figure.2.1}} +\newlabel{fig.state2}{{2.1}{12}{State diagram}{figure.2.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.2}Variables}{12}{section.2.2}} +\newlabel{variables}{{2.2}{12}{Variables}{section.2.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.3}Variable names and keywords}{12}{section.2.3}} +\@writefile{toc}{\contentsline {section}{\numberline {2.4}Operators and operands}{13}{section.2.4}} +\@writefile{toc}{\contentsline {section}{\numberline {2.5}Expressions and statements}{14}{section.2.5}} +\@writefile{toc}{\contentsline {section}{\numberline {2.6}Interactive mode and script mode}{14}{section.2.6}} +\@writefile{toc}{\contentsline {section}{\numberline {2.7}Order of operations}{15}{section.2.7}} +\@writefile{toc}{\contentsline {section}{\numberline {2.8}String operations}{15}{section.2.8}} +\@writefile{toc}{\contentsline {section}{\numberline {2.9}Comments}{16}{section.2.9}} +\@writefile{toc}{\contentsline {section}{\numberline {2.10}Debugging}{16}{section.2.10}} +\@writefile{toc}{\contentsline {section}{\numberline {2.11}Glossary}{17}{section.2.11}} +\@writefile{toc}{\contentsline {section}{\numberline {2.12}Exercises}{18}{section.2.12}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Functions}{19}{chapter.3}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{funcchap}{{3}{19}{Functions}{chapter.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}Function calls}{19}{section.3.1}} +\newlabel{functionchap}{{3.1}{19}{Function calls}{section.3.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.2}Type conversion functions}{19}{section.3.2}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}Math functions}{20}{section.3.3}} +\@writefile{toc}{\contentsline {section}{\numberline {3.4}Composition}{21}{section.3.4}} +\@writefile{toc}{\contentsline {section}{\numberline {3.5}Adding new functions}{21}{section.3.5}} +\@writefile{toc}{\contentsline {section}{\numberline {3.6}Definitions and uses}{22}{section.3.6}} +\@writefile{toc}{\contentsline {section}{\numberline {3.7}Flow of execution}{23}{section.3.7}} +\@writefile{toc}{\contentsline {section}{\numberline {3.8}Parameters and arguments}{23}{section.3.8}} +\newlabel{parameters}{{3.8}{23}{Parameters and arguments}{section.3.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.9}Variables and parameters are local}{24}{section.3.9}} +\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Stack diagram.}}{25}{figure.3.1}} +\newlabel{fig.stack}{{3.1}{25}{Stack diagram}{figure.3.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.10}Stack diagrams}{25}{section.3.10}} +\newlabel{stackdiagram}{{3.10}{25}{Stack diagrams}{section.3.10}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.11}Fruitful functions and void functions}{26}{section.3.11}} +\@writefile{toc}{\contentsline {section}{\numberline {3.12}Why functions?}{26}{section.3.12}} +\@writefile{toc}{\contentsline {section}{\numberline {3.13}Importing with {\tt from}}{27}{section.3.13}} +\@writefile{toc}{\contentsline {section}{\numberline {3.14}Debugging}{27}{section.3.14}} +\newlabel{editor}{{3.14}{27}{Debugging}{section.3.14}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.15}Glossary}{28}{section.3.15}} +\@writefile{toc}{\contentsline {section}{\numberline {3.16}Exercises}{29}{section.3.16}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Case study: interface design}{31}{chapter.4}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{turtlechap}{{4}{31}{Case study: interface design}{chapter.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}TurtleWorld}{31}{section.4.1}} +\newlabel{turtleworld}{{4.1}{31}{TurtleWorld}{section.4.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Simple repetition}{32}{section.4.2}} +\newlabel{repetition}{{4.2}{32}{Simple repetition}{section.4.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Exercises}{33}{section.4.3}} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Encapsulation}{34}{section.4.4}} +\@writefile{toc}{\contentsline {section}{\numberline {4.5}Generalization}{34}{section.4.5}} +\@writefile{toc}{\contentsline {section}{\numberline {4.6}Interface design}{35}{section.4.6}} +\@writefile{toc}{\contentsline {section}{\numberline {4.7}Refactoring}{36}{section.4.7}} +\newlabel{refactoring}{{4.7}{36}{Refactoring}{section.4.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.8}A development plan}{37}{section.4.8}} +\@writefile{toc}{\contentsline {section}{\numberline {4.9}docstring}{37}{section.4.9}} +\newlabel{docstring}{{4.9}{37}{docstring}{section.4.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.10}Debugging}{38}{section.4.10}} +\@writefile{toc}{\contentsline {section}{\numberline {4.11}Glossary}{38}{section.4.11}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Turtle flowers.}}{39}{figure.4.1}} +\newlabel{fig.flowers}{{4.1}{39}{Turtle flowers}{figure.4.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Turtle pies.}}{39}{figure.4.2}} +\newlabel{fig.pies}{{4.2}{39}{Turtle pies}{figure.4.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.12}Exercises}{39}{section.4.12}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Conditionals and recursion}{41}{chapter.5}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}Modulus operator}{41}{section.5.1}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}Boolean expressions}{41}{section.5.2}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}Logical operators}{42}{section.5.3}} +\@writefile{toc}{\contentsline {section}{\numberline {5.4}Conditional execution}{42}{section.5.4}} +\newlabel{conditional.execution}{{5.4}{42}{Conditional execution}{section.5.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.5}Alternative execution}{43}{section.5.5}} +\newlabel{alternative.execution}{{5.5}{43}{Alternative execution}{section.5.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.6}Chained conditionals}{43}{section.5.6}} +\@writefile{toc}{\contentsline {section}{\numberline {5.7}Nested conditionals}{43}{section.5.7}} +\@writefile{toc}{\contentsline {section}{\numberline {5.8}Recursion}{44}{section.5.8}} +\newlabel{recursion}{{5.8}{44}{Recursion}{section.5.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.9}Stack diagrams for recursive functions}{45}{section.5.9}} +\newlabel{recursive.stack}{{5.9}{45}{Stack diagrams for recursive functions}{section.5.9}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Stack diagram.}}{46}{figure.5.1}} +\newlabel{fig.stack2}{{5.1}{46}{Stack diagram}{figure.5.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.10}Infinite recursion}{46}{section.5.10}} +\@writefile{toc}{\contentsline {section}{\numberline {5.11}Keyboard input}{46}{section.5.11}} +\@writefile{toc}{\contentsline {section}{\numberline {5.12}Debugging}{47}{section.5.12}} +\newlabel{whitespace}{{5.12}{47}{Debugging}{section.5.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.13}Glossary}{48}{section.5.13}} +\@writefile{toc}{\contentsline {section}{\numberline {5.14}Exercises}{49}{section.5.14}} +\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces A Koch curve.}}{50}{figure.5.2}} +\newlabel{fig.koch}{{5.2}{50}{A Koch curve}{figure.5.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Fruitful functions}{51}{chapter.6}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{fruitchap}{{6}{51}{Fruitful functions}{chapter.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}Return values}{51}{section.6.1}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}Incremental development}{52}{section.6.2}} +\newlabel{incremental.development}{{6.2}{52}{Incremental development}{section.6.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.3}Composition}{54}{section.6.3}} +\@writefile{toc}{\contentsline {section}{\numberline {6.4}Boolean functions}{54}{section.6.4}} +\newlabel{boolean}{{6.4}{54}{Boolean functions}{section.6.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.5}More recursion}{55}{section.6.5}} +\newlabel{more.recursion}{{6.5}{55}{More recursion}{section.6.5}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Stack diagram.}}{57}{figure.6.1}} +\newlabel{fig.stack3}{{6.1}{57}{Stack diagram}{figure.6.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.6}Leap of faith}{57}{section.6.6}} +\@writefile{toc}{\contentsline {section}{\numberline {6.7}One more example}{57}{section.6.7}} +\newlabel{one.more.example}{{6.7}{57}{One more example}{section.6.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.8}Checking types}{58}{section.6.8}} +\newlabel{guardian}{{6.8}{58}{Checking types}{section.6.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.9}Debugging}{59}{section.6.9}} +\newlabel{factdebug}{{6.9}{59}{Debugging}{section.6.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.10}Glossary}{60}{section.6.10}} +\@writefile{toc}{\contentsline {section}{\numberline {6.11}Exercises}{60}{section.6.11}} +\newlabel{ackermann}{{6.5}{61}{}{exercise.6.5}{}} +\newlabel{palindrome}{{6.6}{61}{}{exercise.6.6}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Iteration}{63}{chapter.7}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {7.1}Multiple assignment}{63}{section.7.1}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.1}{\ignorespaces State diagram.}}{64}{figure.7.1}} +\newlabel{fig.assign2}{{7.1}{64}{State diagram}{figure.7.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {7.2}Updating variables}{64}{section.7.2}} +\newlabel{update}{{7.2}{64}{Updating variables}{section.7.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {7.3}The {\tt while} statement}{64}{section.7.3}} +\@writefile{toc}{\contentsline {section}{\numberline {7.4}{\tt break}}{65}{section.7.4}} +\@writefile{toc}{\contentsline {section}{\numberline {7.5}Square roots}{66}{section.7.5}} +\newlabel{squareroot}{{7.5}{66}{Square roots}{section.7.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {7.6}Algorithms}{67}{section.7.6}} +\@writefile{toc}{\contentsline {section}{\numberline {7.7}Debugging}{68}{section.7.7}} +\@writefile{toc}{\contentsline {section}{\numberline {7.8}Glossary}{68}{section.7.8}} +\@writefile{toc}{\contentsline {section}{\numberline {7.9}Exercises}{69}{section.7.9}} +\@writefile{toc}{\contentsline {chapter}{\numberline {8}Strings}{71}{chapter.8}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{strings}{{8}{71}{Strings}{chapter.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.1}A string is a sequence}{71}{section.8.1}} +\@writefile{toc}{\contentsline {section}{\numberline {8.2}{\tt len}}{71}{section.8.2}} +\@writefile{toc}{\contentsline {section}{\numberline {8.3}Traversal with a {\tt for} loop}{72}{section.8.3}} +\newlabel{for}{{8.3}{72}{Traversal with a {\tt for} loop}{section.8.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Slice indices.}}{73}{figure.8.1}} +\newlabel{fig.banana}{{8.1}{73}{Slice indices}{figure.8.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.4}String slices}{73}{section.8.4}} +\newlabel{slice}{{8.4}{73}{String slices}{section.8.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.5}Strings are immutable}{74}{section.8.5}} +\@writefile{toc}{\contentsline {section}{\numberline {8.6}Searching}{74}{section.8.6}} +\newlabel{find}{{8.6}{74}{Searching}{section.8.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.7}Looping and counting}{75}{section.8.7}} +\newlabel{counter}{{8.7}{75}{Looping and counting}{section.8.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.8}String methods}{75}{section.8.8}} +\@writefile{toc}{\contentsline {section}{\numberline {8.9}The {\tt in} operator}{76}{section.8.9}} +\newlabel{inboth}{{8.9}{76}{The {\tt in} operator}{section.8.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.10}String comparison}{76}{section.8.10}} +\@writefile{toc}{\contentsline {section}{\numberline {8.11}Debugging}{77}{section.8.11}} +\@writefile{lof}{\contentsline {figure}{\numberline {8.2}{\ignorespaces State diagram.}}{78}{figure.8.2}} +\newlabel{fig.state4}{{8.2}{78}{State diagram}{figure.8.2}{}} +\newlabel{isreverse}{{8.9}{78}{}{exercise.8.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.12}Glossary}{78}{section.8.12}} +\@writefile{toc}{\contentsline {section}{\numberline {8.13}Exercises}{79}{section.8.13}} +\newlabel{exrotate}{{8.12}{80}{}{exercise.8.12}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {9}Case study: word play}{81}{chapter.9}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {9.1}Reading word lists}{81}{section.9.1}} +\newlabel{wordlist}{{9.1}{81}{Reading word lists}{section.9.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {9.2}Exercises}{82}{section.9.2}} +\@writefile{toc}{\contentsline {section}{\numberline {9.3}Search}{82}{section.9.3}} +\@writefile{toc}{\contentsline {section}{\numberline {9.4}Looping with indices}{83}{section.9.4}} +\@writefile{toc}{\contentsline {section}{\numberline {9.5}Debugging}{85}{section.9.5}} +\@writefile{toc}{\contentsline {section}{\numberline {9.6}Glossary}{85}{section.9.6}} +\@writefile{toc}{\contentsline {section}{\numberline {9.7}Exercises}{86}{section.9.7}} +\@writefile{toc}{\contentsline {chapter}{\numberline {10}Lists}{87}{chapter.10}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {10.1}A list is a sequence}{87}{section.10.1}} +\newlabel{sequence}{{10.1}{87}{A list is a sequence}{section.10.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.2}Lists are mutable}{87}{section.10.2}} +\newlabel{mutable}{{10.2}{87}{Lists are mutable}{section.10.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {10.1}{\ignorespaces State diagram.}}{88}{figure.10.1}} +\newlabel{fig.liststate}{{10.1}{88}{State diagram}{figure.10.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.3}Traversing a list}{89}{section.10.3}} +\@writefile{toc}{\contentsline {section}{\numberline {10.4}List operations}{89}{section.10.4}} +\@writefile{toc}{\contentsline {section}{\numberline {10.5}List slices}{89}{section.10.5}} +\@writefile{toc}{\contentsline {section}{\numberline {10.6}List methods}{90}{section.10.6}} +\@writefile{toc}{\contentsline {section}{\numberline {10.7}Map, filter and reduce}{91}{section.10.7}} +\newlabel{cumulative}{{10.3}{92}{}{exercise.10.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.8}Deleting elements}{92}{section.10.8}} +\@writefile{toc}{\contentsline {section}{\numberline {10.9}Lists and strings}{93}{section.10.9}} +\@writefile{toc}{\contentsline {section}{\numberline {10.10}Objects and values}{93}{section.10.10}} +\@writefile{lof}{\contentsline {figure}{\numberline {10.2}{\ignorespaces State diagram.}}{94}{figure.10.2}} +\newlabel{fig.list1}{{10.2}{94}{State diagram}{figure.10.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {10.3}{\ignorespaces State diagram.}}{94}{figure.10.3}} +\newlabel{fig.list2}{{10.3}{94}{State diagram}{figure.10.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.11}Aliasing}{94}{section.10.11}} +\@writefile{lof}{\contentsline {figure}{\numberline {10.4}{\ignorespaces State diagram.}}{95}{figure.10.4}} +\newlabel{fig.list3}{{10.4}{95}{State diagram}{figure.10.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {10.5}{\ignorespaces Stack diagram.}}{95}{figure.10.5}} +\newlabel{fig.stack5}{{10.5}{95}{Stack diagram}{figure.10.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.12}List arguments}{95}{section.10.12}} +\newlabel{list.arguments}{{10.12}{95}{List arguments}{section.10.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.13}Debugging}{96}{section.10.13}} +\@writefile{toc}{\contentsline {section}{\numberline {10.14}Glossary}{97}{section.10.14}} +\@writefile{toc}{\contentsline {section}{\numberline {10.15}Exercises}{98}{section.10.15}} +\newlabel{anagram}{{10.7}{98}{}{exercise.10.7}{}} +\newlabel{duplicate}{{10.8}{98}{}{exercise.10.8}{}} +\newlabel{wordlist1}{{10.11}{98}{}{exercise.10.11}{}} +\newlabel{bisection}{{10.11}{98}{}{exercise.10.11}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {11}Dictionaries}{101}{chapter.11}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{wordlist2}{{11.1}{102}{}{exercise.11.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {11.1}Dictionary as a set of counters}{102}{section.11.1}} +\newlabel{histogram}{{11.1}{102}{Dictionary as a set of counters}{section.11.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {11.2}Looping and dictionaries}{103}{section.11.2}} +\@writefile{toc}{\contentsline {section}{\numberline {11.3}Reverse lookup}{104}{section.11.3}} +\newlabel{raise}{{11.3}{104}{Reverse lookup}{section.11.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {11.4}Dictionaries and lists}{105}{section.11.4}} +\newlabel{invert}{{11.4}{105}{Dictionaries and lists}{section.11.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {11.1}{\ignorespaces State diagram.}}{106}{figure.11.1}} +\newlabel{fig.dict1}{{11.1}{106}{State diagram}{figure.11.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {11.5}Memos}{106}{section.11.5}} +\@writefile{lof}{\contentsline {figure}{\numberline {11.2}{\ignorespaces Call graph.}}{107}{figure.11.2}} +\newlabel{fig.fibonacci}{{11.2}{107}{Call graph}{figure.11.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {11.6}Global variables}{108}{section.11.6}} +\@writefile{toc}{\contentsline {section}{\numberline {11.7}Long integers}{109}{section.11.7}} +\@writefile{toc}{\contentsline {section}{\numberline {11.8}Debugging}{109}{section.11.8}} +\@writefile{toc}{\contentsline {section}{\numberline {11.9}Glossary}{110}{section.11.9}} +\@writefile{toc}{\contentsline {section}{\numberline {11.10}Exercises}{111}{section.11.10}} +\newlabel{exrotatepairs}{{11.10}{111}{}{exercise.11.10}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {12}Tuples}{113}{chapter.12}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{tuplechap}{{12}{113}{Tuples}{chapter.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {12.1}Tuples are immutable}{113}{section.12.1}} +\@writefile{toc}{\contentsline {section}{\numberline {12.2}Tuple assignment}{114}{section.12.2}} +\newlabel{tuple.assignment}{{12.2}{114}{Tuple assignment}{section.12.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {12.3}Tuples as return values}{115}{section.12.3}} +\@writefile{toc}{\contentsline {section}{\numberline {12.4}Variable-length argument tuples}{115}{section.12.4}} +\@writefile{toc}{\contentsline {section}{\numberline {12.5}Lists and tuples}{116}{section.12.5}} +\@writefile{toc}{\contentsline {section}{\numberline {12.6}Dictionaries and tuples}{117}{section.12.6}} +\newlabel{dictuple}{{12.6}{117}{Dictionaries and tuples}{section.12.6}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {12.1}{\ignorespaces State diagram.}}{118}{figure.12.1}} +\newlabel{fig.tuple1}{{12.1}{118}{State diagram}{figure.12.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {12.2}{\ignorespaces State diagram.}}{118}{figure.12.2}} +\newlabel{fig.dict2}{{12.2}{118}{State diagram}{figure.12.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {12.7}Comparing tuples}{118}{section.12.7}} +\newlabel{DSU}{{12.7}{119}{Comparing tuples}{section.12.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {12.8}Sequences of sequences}{119}{section.12.8}} +\@writefile{toc}{\contentsline {section}{\numberline {12.9}Debugging}{120}{section.12.9}} +\@writefile{toc}{\contentsline {section}{\numberline {12.10}Glossary}{121}{section.12.10}} +\@writefile{toc}{\contentsline {section}{\numberline {12.11}Exercises}{121}{section.12.11}} +\newlabel{anagrams}{{12.4}{121}{}{exercise.12.4}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {13}Case study: data structure selection}{123}{chapter.13}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {13.1}Word frequency analysis}{123}{section.13.1}} +\newlabel{analysis}{{13.1}{123}{Word frequency analysis}{section.13.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.2}Random numbers}{124}{section.13.2}} +\@writefile{toc}{\contentsline {section}{\numberline {13.3}Word histogram}{125}{section.13.3}} +\@writefile{toc}{\contentsline {section}{\numberline {13.4}Most common words}{126}{section.13.4}} +\@writefile{toc}{\contentsline {section}{\numberline {13.5}Optional parameters}{126}{section.13.5}} +\@writefile{toc}{\contentsline {section}{\numberline {13.6}Dictionary subtraction}{127}{section.13.6}} +\@writefile{toc}{\contentsline {section}{\numberline {13.7}Random words}{127}{section.13.7}} +\newlabel{randomwords}{{13.7}{127}{Random words}{section.13.7}{}} +\newlabel{randhist}{{13.7}{128}{}{exercise.13.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.8}Markov analysis}{128}{section.13.8}} +\newlabel{markov}{{13.8}{128}{Markov analysis}{section.13.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.9}Data structures}{129}{section.13.9}} +\@writefile{toc}{\contentsline {section}{\numberline {13.10}Debugging}{131}{section.13.10}} +\@writefile{toc}{\contentsline {section}{\numberline {13.11}Glossary}{132}{section.13.11}} +\@writefile{toc}{\contentsline {section}{\numberline {13.12}Exercises}{132}{section.13.12}} +\@writefile{toc}{\contentsline {chapter}{\numberline {14}Files}{133}{chapter.14}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {14.1}Persistence}{133}{section.14.1}} +\@writefile{toc}{\contentsline {section}{\numberline {14.2}Reading and writing}{133}{section.14.2}} +\@writefile{toc}{\contentsline {section}{\numberline {14.3}Format operator}{134}{section.14.3}} +\@writefile{toc}{\contentsline {section}{\numberline {14.4}Filenames and paths}{135}{section.14.4}} +\newlabel{paths}{{14.4}{135}{Filenames and paths}{section.14.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {14.5}Catching exceptions}{136}{section.14.5}} +\newlabel{catch}{{14.5}{136}{Catching exceptions}{section.14.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {14.6}Databases}{137}{section.14.6}} +\@writefile{toc}{\contentsline {section}{\numberline {14.7}Pickling}{137}{section.14.7}} +\@writefile{toc}{\contentsline {section}{\numberline {14.8}Pipes}{138}{section.14.8}} +\newlabel{checksum}{{14.4}{139}{}{exercise.14.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {14.9}Writing modules}{139}{section.14.9}} +\newlabel{modules}{{14.9}{139}{Writing modules}{section.14.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {14.10}Debugging}{140}{section.14.10}} +\@writefile{toc}{\contentsline {section}{\numberline {14.11}Glossary}{141}{section.14.11}} +\@writefile{toc}{\contentsline {section}{\numberline {14.12}Exercises}{141}{section.14.12}} +\newlabel{urllib}{{14.6}{141}{}{exercise.14.6}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {15}Classes and objects}{143}{chapter.15}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {15.1}User-defined types}{143}{section.15.1}} +\newlabel{point}{{15.1}{143}{User-defined types}{section.15.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {15.1}{\ignorespaces Object diagram.}}{144}{figure.15.1}} +\newlabel{fig.point}{{15.1}{144}{Object diagram}{figure.15.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {15.2}Attributes}{144}{section.15.2}} +\newlabel{attributes}{{15.2}{144}{Attributes}{section.15.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {15.3}Rectangles}{145}{section.15.3}} +\newlabel{rectangles}{{15.3}{145}{Rectangles}{section.15.3}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {15.2}{\ignorespaces Object diagram.}}{146}{figure.15.2}} +\newlabel{fig.rectangle}{{15.2}{146}{Object diagram}{figure.15.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {15.4}Instances as return values}{146}{section.15.4}} +\@writefile{toc}{\contentsline {section}{\numberline {15.5}Objects are mutable}{146}{section.15.5}} +\@writefile{toc}{\contentsline {section}{\numberline {15.6}Copying}{147}{section.15.6}} +\newlabel{copying}{{15.6}{147}{Copying}{section.15.6}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {15.3}{\ignorespaces Object diagram.}}{148}{figure.15.3}} +\newlabel{fig.rectangle2}{{15.3}{148}{Object diagram}{figure.15.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {15.7}Debugging}{148}{section.15.7}} +\newlabel{hasattr}{{15.7}{148}{Debugging}{section.15.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {15.8}Glossary}{149}{section.15.8}} +\@writefile{toc}{\contentsline {section}{\numberline {15.9}Exercises}{149}{section.15.9}} +\newlabel{canvas}{{15.4}{149}{}{exercise.15.4}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {16}Classes and functions}{151}{chapter.16}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{time}{{16}{151}{Classes and functions}{chapter.16}{}} +\@writefile{toc}{\contentsline {section}{\numberline {16.1}Time}{151}{section.16.1}} +\newlabel{time.object}{{16.1}{151}{Time}{section.16.1}{}} +\newlabel{ex.printtime}{{16.1}{151}{}{exercise.16.1}{}} +\newlabel{isafter}{{16.2}{151}{}{exercise.16.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {16.2}Pure functions}{151}{section.16.2}} +\@writefile{lof}{\contentsline {figure}{\numberline {16.1}{\ignorespaces Object diagram.}}{152}{figure.16.1}} +\newlabel{fig.time}{{16.1}{152}{Object diagram}{figure.16.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {16.3}Modifiers}{153}{section.16.3}} +\newlabel{increment}{{16.3}{153}{Modifiers}{section.16.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {16.4}Prototyping versus planning}{154}{section.16.4}} +\newlabel{prototype}{{16.4}{154}{Prototyping versus planning}{section.16.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {16.5}Debugging}{155}{section.16.5}} +\@writefile{toc}{\contentsline {section}{\numberline {16.6}Glossary}{155}{section.16.6}} +\@writefile{toc}{\contentsline {section}{\numberline {16.7}Exercises}{156}{section.16.7}} +\@writefile{toc}{\contentsline {chapter}{\numberline {17}Classes and methods}{157}{chapter.17}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {17.1}Object-oriented features}{157}{section.17.1}} +\@writefile{toc}{\contentsline {section}{\numberline {17.2}Printing objects}{158}{section.17.2}} +\newlabel{convert}{{17.1}{159}{}{exercise.17.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {17.3}Another example}{159}{section.17.3}} +\@writefile{toc}{\contentsline {section}{\numberline {17.4}A more complicated example}{160}{section.17.4}} +\@writefile{toc}{\contentsline {section}{\numberline {17.5}The init method}{160}{section.17.5}} +\@writefile{toc}{\contentsline {section}{\numberline {17.6}The {\tt \_\_str\_\_} method}{161}{section.17.6}} +\@writefile{toc}{\contentsline {section}{\numberline {17.7}Operator overloading}{161}{section.17.7}} +\newlabel{operator.overloading}{{17.7}{161}{Operator overloading}{section.17.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {17.8}Type-based dispatch}{162}{section.17.8}} +\@writefile{toc}{\contentsline {section}{\numberline {17.9}Polymorphism}{163}{section.17.9}} +\@writefile{toc}{\contentsline {section}{\numberline {17.10}Debugging}{164}{section.17.10}} +\@writefile{toc}{\contentsline {section}{\numberline {17.11}Interface and implementation}{164}{section.17.11}} +\@writefile{toc}{\contentsline {section}{\numberline {17.12}Glossary}{165}{section.17.12}} +\@writefile{toc}{\contentsline {section}{\numberline {17.13}Exercises}{165}{section.17.13}} +\@writefile{toc}{\contentsline {chapter}{\numberline {18}Inheritance}{167}{chapter.18}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {18.1}Card objects}{167}{section.18.1}} +\@writefile{toc}{\contentsline {section}{\numberline {18.2}Class attributes}{168}{section.18.2}} +\newlabel{class.attribute}{{18.2}{168}{Class attributes}{section.18.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {18.1}{\ignorespaces Object diagram.}}{169}{figure.18.1}} +\newlabel{fig.card1}{{18.1}{169}{Object diagram}{figure.18.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {18.3}Comparing cards}{169}{section.18.3}} +\newlabel{comparecard}{{18.3}{169}{Comparing cards}{section.18.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {18.4}Decks}{170}{section.18.4}} +\@writefile{toc}{\contentsline {section}{\numberline {18.5}Printing the deck}{171}{section.18.5}} +\newlabel{printdeck}{{18.5}{171}{Printing the deck}{section.18.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {18.6}Add, remove, shuffle and sort}{171}{section.18.6}} +\@writefile{toc}{\contentsline {section}{\numberline {18.7}Inheritance}{172}{section.18.7}} +\@writefile{toc}{\contentsline {section}{\numberline {18.8}Class diagrams}{173}{section.18.8}} +\newlabel{class.diagram}{{18.8}{173}{Class diagrams}{section.18.8}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {18.2}{\ignorespaces Class diagram.}}{174}{figure.18.2}} +\newlabel{fig.class1}{{18.2}{174}{Class diagram}{figure.18.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {18.9}Debugging}{174}{section.18.9}} +\@writefile{toc}{\contentsline {section}{\numberline {18.10}Data encapsulation}{175}{section.18.10}} +\@writefile{toc}{\contentsline {section}{\numberline {18.11}Glossary}{176}{section.18.11}} +\@writefile{toc}{\contentsline {section}{\numberline {18.12}Exercises}{177}{section.18.12}} +\newlabel{poker}{{18.6}{177}{}{exercise.18.6}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {19}Case study: Tkinter}{179}{chapter.19}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{tkinter}{{19}{179}{Case study: Tkinter}{chapter.19}{}} +\@writefile{toc}{\contentsline {section}{\numberline {19.1}GUI}{179}{section.19.1}} +\@writefile{toc}{\contentsline {section}{\numberline {19.2}Buttons and callbacks}{180}{section.19.2}} +\@writefile{toc}{\contentsline {section}{\numberline {19.3}Canvas widgets}{181}{section.19.3}} +\newlabel{circle}{{19.2}{182}{}{exercise.19.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {19.4}Coordinate sequences}{182}{section.19.4}} +\@writefile{toc}{\contentsline {section}{\numberline {19.5}More widgets}{182}{section.19.5}} +\newlabel{circle2}{{19.3}{183}{}{exercise.19.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {19.6}Packing widgets}{183}{section.19.6}} +\@writefile{lof}{\contentsline {figure}{\numberline {19.1}{\ignorespaces TurtleWorld after running the snowflake code.}}{184}{figure.19.1}} +\newlabel{fig.turtleworld}{{19.1}{184}{TurtleWorld after running the snowflake code}{figure.19.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {19.7}Menus and Callables}{185}{section.19.7}} +\@writefile{toc}{\contentsline {section}{\numberline {19.8}Binding}{186}{section.19.8}} +\@writefile{toc}{\contentsline {section}{\numberline {19.9}Debugging}{188}{section.19.9}} +\@writefile{toc}{\contentsline {section}{\numberline {19.10}Glossary}{189}{section.19.10}} +\@writefile{toc}{\contentsline {section}{\numberline {19.11}Exercises}{190}{section.19.11}} +\@writefile{toc}{\contentsline {chapter}{\numberline {A}Debugging}{193}{appendix.A}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {A.1}Syntax errors}{193}{section.A.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.1.1}I keep making changes and it makes no difference.}{194}{subsection.A.1.1}} +\@writefile{toc}{\contentsline {section}{\numberline {A.2}Runtime errors}{195}{section.A.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.2.1}My program does absolutely nothing.}{195}{subsection.A.2.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.2.2}My program hangs.}{195}{subsection.A.2.2}} +\@writefile{toc}{\contentsline {subsubsection}{Infinite Loop}{196}{section*.6}} +\@writefile{toc}{\contentsline {subsubsection}{Infinite Recursion}{196}{section*.7}} +\@writefile{toc}{\contentsline {subsubsection}{Flow of Execution}{196}{section*.8}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.2.3}When I run the program I get an exception.}{196}{subsection.A.2.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.2.4}I added so many {\tt print} statements I get inundated with output.}{197}{subsection.A.2.4}} +\@writefile{toc}{\contentsline {section}{\numberline {A.3}Semantic errors}{198}{section.A.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.3.1}My program doesn't work.}{198}{subsection.A.3.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.3.2}I've got a big hairy expression and it doesn't do what I expect.}{199}{subsection.A.3.2}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.3.3}I've got a function or method that doesn't return what I expect.}{199}{subsection.A.3.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.3.4}I'm really, really stuck and I need help.}{200}{subsection.A.3.4}} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.3.5}No, I really need help.}{200}{subsection.A.3.5}} +\@writefile{toc}{\contentsline {chapter}{\numberline {B}Analysis of Algorithms}{201}{appendix.B}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\@writefile{toc}{\contentsline {section}{\numberline {B.1}Order of growth}{202}{section.B.1}} +\@writefile{toc}{\contentsline {section}{\numberline {B.2}Analysis of basic Python operations}{204}{section.B.2}} +\@writefile{toc}{\contentsline {section}{\numberline {B.3}Analysis of search algorithms}{205}{section.B.3}} +\@writefile{toc}{\contentsline {section}{\numberline {B.4}Hashtables}{206}{section.B.4}} +\newlabel{hashtable}{{B.4}{206}{Hashtables}{section.B.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {B.1}{\ignorespaces The cost of a hashtable add.}}{209}{figure.B.1}} +\newlabel{fig.hash}{{B.1}{209}{The cost of a hashtable add}{figure.B.1}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {C}Lumpy}{211}{appendix.C}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{lumpy}{{C}{211}{Lumpy}{appendix.C}{}} +\@writefile{toc}{\contentsline {section}{\numberline {C.1}State diagram}{211}{section.C.1}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.1}{\ignorespaces State diagram generated by Lumpy.}}{212}{figure.C.1}} +\newlabel{fig.lumpy1}{{C.1}{212}{State diagram generated by Lumpy}{figure.C.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.2}{\ignorespaces Stack diagram.}}{212}{figure.C.2}} +\newlabel{fig.lumpy2}{{C.2}{212}{Stack diagram}{figure.C.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {C.2}Stack diagram}{212}{section.C.2}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.3}{\ignorespaces Object diagram.}}{213}{figure.C.3}} +\newlabel{fig.lumpy3}{{C.3}{213}{Object diagram}{figure.C.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {C.3}Object diagrams}{213}{section.C.3}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.4}{\ignorespaces Object diagram.}}{214}{figure.C.4}} +\newlabel{fig.lumpy4}{{C.4}{214}{Object diagram}{figure.C.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.5}{\ignorespaces Object diagram.}}{215}{figure.C.5}} +\newlabel{fig.lumpy5}{{C.5}{215}{Object diagram}{figure.C.5}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.6}{\ignorespaces Object diagram.}}{215}{figure.C.6}} +\newlabel{fig.lumpy6}{{C.6}{215}{Object diagram}{figure.C.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {C.4}Function and class objects}{215}{section.C.4}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.7}{\ignorespaces Class diagram.}}{216}{figure.C.7}} +\newlabel{fig.lumpy7}{{C.7}{216}{Class diagram}{figure.C.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {C.5}Class Diagrams}{216}{section.C.5}} +\@writefile{lof}{\contentsline {figure}{\numberline {C.8}{\ignorespaces Class diagram.}}{217}{figure.C.8}} +\newlabel{fig.lumpy8}{{C.8}{217}{Class diagram}{figure.C.8}{}} diff --git a/book/book.idx b/book/book.idx new file mode 100644 index 0000000..e0bf36b --- /dev/null +++ b/book/book.idx @@ -0,0 +1,1977 @@ +\indexentry{GNU Free Documentation License|hyperpage}{v} +\indexentry{Free Documentation License, GNU|hyperpage}{v} +\indexentry{Elkner, Jeff|hyperpage}{v} +\indexentry{Olin College|hyperpage}{v} +\indexentry{Elkner, Jeff|hyperpage}{vi} +\indexentry{Meyers, Chris|hyperpage}{vi} +\indexentry{GNU Free Documentation License|hyperpage}{vi} +\indexentry{Free Documentation License, GNU|hyperpage}{vi} +\indexentry{Creative Commons|hyperpage}{vi} +\indexentry{contributors|hyperpage}{vii} +\indexentry{problem solving|hyperpage}{1} +\indexentry{programming language|hyperpage}{1} +\indexentry{language!programming|hyperpage}{1} +\indexentry{portability|hyperpage}{1} +\indexentry{high-level language|hyperpage}{1} +\indexentry{low-level language|hyperpage}{1} +\indexentry{language!high-level|hyperpage}{1} +\indexentry{language!low-level|hyperpage}{1} +\indexentry{compile|hyperpage}{2} +\indexentry{interpret|hyperpage}{2} +\indexentry{source code|hyperpage}{2} +\indexentry{object code|hyperpage}{2} +\indexentry{executable|hyperpage}{2} +\indexentry{interactive mode|hyperpage}{2} +\indexentry{script mode|hyperpage}{2} +\indexentry{prompt|hyperpage}{2} +\indexentry{script|hyperpage}{2} +\indexentry{testing!interactive mode|hyperpage}{2} +\indexentry{program|hyperpage}{3} +\indexentry{algorithm|hyperpage}{3} +\indexentry{debugging|hyperpage}{3} +\indexentry{bug|hyperpage}{3} +\indexentry{debugging|hyperpage}{3} +\indexentry{bug|hyperpage}{3} +\indexentry{syntax error|hyperpage}{3} +\indexentry{error!syntax|hyperpage}{3} +\indexentry{error message|hyperpage}{3} +\indexentry{syntax|hyperpage}{3} +\indexentry{parentheses!matching|hyperpage}{3} +\indexentry{syntax|hyperpage}{3} +\indexentry{cummings, e. e.|hyperpage}{3} +\indexentry{runtime error|hyperpage}{4} +\indexentry{error!runtime|hyperpage}{4} +\indexentry{exception|hyperpage}{4} +\indexentry{safe language|hyperpage}{4} +\indexentry{language!safe|hyperpage}{4} +\indexentry{semantics|hyperpage}{4} +\indexentry{semantic error|hyperpage}{4} +\indexentry{error!semantic|hyperpage}{4} +\indexentry{error message|hyperpage}{4} +\indexentry{experimental debugging|hyperpage}{4} +\indexentry{debugging!experimental|hyperpage}{4} +\indexentry{Holmes, Sherlock|hyperpage}{4} +\indexentry{Doyle, Arthur Conan|hyperpage}{4} +\indexentry{Linux|hyperpage}{4} +\indexentry{formal language|hyperpage}{5} +\indexentry{natural language|hyperpage}{5} +\indexentry{language!formal|hyperpage}{5} +\indexentry{language!natural|hyperpage}{5} +\indexentry{token|hyperpage}{5} +\indexentry{structure|hyperpage}{5} +\indexentry{parse|hyperpage}{5} +\indexentry{ambiguity|hyperpage}{5} +\indexentry{redundancy|hyperpage}{5} +\indexentry{literalness|hyperpage}{5} +\indexentry{poetry|hyperpage}{6} +\indexentry{prose|hyperpage}{6} +\indexentry{Hello, World|hyperpage}{6} +\indexentry{quotation mark|hyperpage}{6} +\indexentry{print statement|hyperpage}{6} +\indexentry{statement!print|hyperpage}{6} +\indexentry{function|hyperpage}{6} +\indexentry{print function|hyperpage}{6} +\indexentry{Python 3|hyperpage}{6} +\indexentry{debugging|hyperpage}{7} +\indexentry{error message|hyperpage}{7} +\indexentry{debugging!emotional response|hyperpage}{7} +\indexentry{emotional debugging|hyperpage}{7} +\indexentry{problem solving|hyperpage}{7} +\indexentry{high-level language|hyperpage}{7} +\indexentry{low-level language|hyperpage}{7} +\indexentry{portability|hyperpage}{7} +\indexentry{interpret|hyperpage}{7} +\indexentry{compile|hyperpage}{7} +\indexentry{source code|hyperpage}{8} +\indexentry{object code|hyperpage}{8} +\indexentry{executable|hyperpage}{8} +\indexentry{prompt|hyperpage}{8} +\indexentry{script|hyperpage}{8} +\indexentry{interactive mode|hyperpage}{8} +\indexentry{script mode|hyperpage}{8} +\indexentry{program|hyperpage}{8} +\indexentry{algorithm|hyperpage}{8} +\indexentry{bug|hyperpage}{8} +\indexentry{debugging|hyperpage}{8} +\indexentry{syntax|hyperpage}{8} +\indexentry{syntax error|hyperpage}{8} +\indexentry{exception|hyperpage}{8} +\indexentry{semantics|hyperpage}{8} +\indexentry{semantic error|hyperpage}{8} +\indexentry{natural language|hyperpage}{8} +\indexentry{formal language|hyperpage}{8} +\indexentry{token|hyperpage}{8} +\indexentry{parse|hyperpage}{8} +\indexentry{print statement|hyperpage}{8} +\indexentry{statement!print|hyperpage}{8} +\indexentry{documentation|hyperpage}{9} +\indexentry{python.org|hyperpage}{9} +\indexentry{help utility|hyperpage}{9} +\indexentry{calculator|hyperpage}{9} +\indexentry{running pace|hyperpage}{9} +\indexentry{value|hyperpage}{11} +\indexentry{type|hyperpage}{11} +\indexentry{string|hyperpage}{11} +\indexentry{quotation mark|hyperpage}{11} +\indexentry{type|hyperpage}{11} +\indexentry{string type|hyperpage}{11} +\indexentry{type!str|hyperpage}{11} +\indexentry{int type|hyperpage}{11} +\indexentry{type!int|hyperpage}{11} +\indexentry{float type|hyperpage}{11} +\indexentry{type!float|hyperpage}{11} +\indexentry{quotation mark|hyperpage}{11} +\indexentry{semantic error|hyperpage}{12} +\indexentry{error!semantic|hyperpage}{12} +\indexentry{error message|hyperpage}{12} +\indexentry{variable|hyperpage}{12} +\indexentry{assignment statement|hyperpage}{12} +\indexentry{statement!assignment|hyperpage}{12} +\indexentry{state diagram|hyperpage}{12} +\indexentry{diagram!state|hyperpage}{12} +\indexentry{keyword|hyperpage}{12} +\indexentry{underscore character|hyperpage}{13} +\indexentry{keyword|hyperpage}{13} +\indexentry{operator, arithmetic|hyperpage}{13} +\indexentry{arithmetic operator|hyperpage}{13} +\indexentry{operand|hyperpage}{13} +\indexentry{expression|hyperpage}{13} +\indexentry{bitwise operator|hyperpage}{13} +\indexentry{operator!bitwise|hyperpage}{13} +\indexentry{Python 3|hyperpage}{14} +\indexentry{floor division|hyperpage}{14} +\indexentry{floating-point division|hyperpage}{14} +\indexentry{division!floor|hyperpage}{14} +\indexentry{division!floating-point|hyperpage}{14} +\indexentry{expression|hyperpage}{14} +\indexentry{evaluate|hyperpage}{14} +\indexentry{interactive mode|hyperpage}{14} +\indexentry{script mode|hyperpage}{14} +\indexentry{order of operations|hyperpage}{15} +\indexentry{rules of precedence|hyperpage}{15} +\indexentry{PEMDAS|hyperpage}{15} +\indexentry{parentheses!overriding precedence|hyperpage}{15} +\indexentry{string!operation|hyperpage}{15} +\indexentry{operator!string|hyperpage}{15} +\indexentry{concatenation|hyperpage}{16} +\indexentry{commutativity|hyperpage}{16} +\indexentry{comment|hyperpage}{16} +\indexentry{debugging|hyperpage}{16} +\indexentry{syntax error|hyperpage}{16} +\indexentry{error!syntax|hyperpage}{16} +\indexentry{error message|hyperpage}{17} +\indexentry{use before def|hyperpage}{17} +\indexentry{exception|hyperpage}{17} +\indexentry{runtime error|hyperpage}{17} +\indexentry{error!runtime|hyperpage}{17} +\indexentry{case-sensitivity, variable names|hyperpage}{17} +\indexentry{semantic error|hyperpage}{17} +\indexentry{error!semantic|hyperpage}{17} +\indexentry{order of operations|hyperpage}{17} +\indexentry{value|hyperpage}{17} +\indexentry{type|hyperpage}{17} +\indexentry{integer|hyperpage}{17} +\indexentry{floating-point|hyperpage}{17} +\indexentry{string|hyperpage}{17} +\indexentry{variable|hyperpage}{17} +\indexentry{statement|hyperpage}{17} +\indexentry{assignment|hyperpage}{17} +\indexentry{state diagram|hyperpage}{17} +\indexentry{keyword|hyperpage}{17} +\indexentry{operator|hyperpage}{17} +\indexentry{operand|hyperpage}{18} +\indexentry{floor division|hyperpage}{18} +\indexentry{expression|hyperpage}{18} +\indexentry{rules of precedence|hyperpage}{18} +\indexentry{precedence|hyperpage}{18} +\indexentry{concatenation|hyperpage}{18} +\indexentry{comment|hyperpage}{18} +\indexentry{calculator|hyperpage}{18} +\indexentry{running pace|hyperpage}{18} +\indexentry{function call|hyperpage}{19} +\indexentry{parentheses!argument in|hyperpage}{19} +\indexentry{argument|hyperpage}{19} +\indexentry{return value|hyperpage}{19} +\indexentry{conversion!type|hyperpage}{19} +\indexentry{type conversion|hyperpage}{19} +\indexentry{int function|hyperpage}{19} +\indexentry{function!int|hyperpage}{19} +\indexentry{float function|hyperpage}{19} +\indexentry{function!float|hyperpage}{19} +\indexentry{str function|hyperpage}{20} +\indexentry{function!str|hyperpage}{20} +\indexentry{math function|hyperpage}{20} +\indexentry{function, math|hyperpage}{20} +\indexentry{module|hyperpage}{20} +\indexentry{module object|hyperpage}{20} +\indexentry{dot notation|hyperpage}{20} +\indexentry{log function|hyperpage}{20} +\indexentry{function!log|hyperpage}{20} +\indexentry{sine function|hyperpage}{20} +\indexentry{radian|hyperpage}{20} +\indexentry{trigonometric function|hyperpage}{20} +\indexentry{function, trigonometric|hyperpage}{20} +\indexentry{pi|hyperpage}{20} +\indexentry{sqrt function|hyperpage}{20} +\indexentry{function!sqrt|hyperpage}{20} +\indexentry{composition|hyperpage}{21} +\indexentry{SyntaxError|hyperpage}{21} +\indexentry{exception!SyntaxError|hyperpage}{21} +\indexentry{function|hyperpage}{21} +\indexentry{function definition|hyperpage}{21} +\indexentry{definition!function|hyperpage}{21} +\indexentry{def keyword|hyperpage}{21} +\indexentry{keyword!def|hyperpage}{21} +\indexentry{argument|hyperpage}{21} +\indexentry{parentheses!empty|hyperpage}{21} +\indexentry{header|hyperpage}{21} +\indexentry{body|hyperpage}{21} +\indexentry{indentation|hyperpage}{21} +\indexentry{colon|hyperpage}{21} +\indexentry{ellipses|hyperpage}{21} +\indexentry{function object|hyperpage}{22} +\indexentry{object!function|hyperpage}{22} +\indexentry{function definition|hyperpage}{22} +\indexentry{use before def|hyperpage}{22} +\indexentry{flow of execution|hyperpage}{23} +\indexentry{parameter|hyperpage}{23} +\indexentry{function parameter|hyperpage}{23} +\indexentry{argument|hyperpage}{23} +\indexentry{function argument|hyperpage}{23} +\indexentry{parentheses!parameters in|hyperpage}{23} +\indexentry{composition|hyperpage}{24} +\indexentry{argument|hyperpage}{24} +\indexentry{local variable|hyperpage}{24} +\indexentry{variable!local|hyperpage}{24} +\indexentry{parentheses!parameters in|hyperpage}{24} +\indexentry{concatenation|hyperpage}{24} +\indexentry{NameError|hyperpage}{24} +\indexentry{exception!NameError|hyperpage}{24} +\indexentry{parameter|hyperpage}{25} +\indexentry{stack diagram|hyperpage}{25} +\indexentry{function frame|hyperpage}{25} +\indexentry{frame|hyperpage}{25} +\indexentry{stack diagram|hyperpage}{25} +\indexentry{diagram!stack|hyperpage}{25} +\indexentry{traceback|hyperpage}{25} +\indexentry{fruitful function|hyperpage}{26} +\indexentry{void function|hyperpage}{26} +\indexentry{function, fruitful|hyperpage}{26} +\indexentry{function, void|hyperpage}{26} +\indexentry{interactive mode|hyperpage}{26} +\indexentry{script mode|hyperpage}{26} +\indexentry{None special value|hyperpage}{26} +\indexentry{special value!None|hyperpage}{26} +\indexentry{function, reasons for|hyperpage}{26} +\indexentry{dot notation|hyperpage}{27} +\indexentry{debugging|hyperpage}{27} +\indexentry{whitespace|hyperpage}{27} +\indexentry{function|hyperpage}{28} +\indexentry{function definition|hyperpage}{28} +\indexentry{function definition|hyperpage}{28} +\indexentry{header|hyperpage}{28} +\indexentry{body|hyperpage}{28} +\indexentry{parameter|hyperpage}{28} +\indexentry{function call|hyperpage}{28} +\indexentry{argument|hyperpage}{28} +\indexentry{local variable|hyperpage}{28} +\indexentry{return value|hyperpage}{28} +\indexentry{fruitful function|hyperpage}{28} +\indexentry{void function|hyperpage}{28} +\indexentry{module|hyperpage}{28} +\indexentry{import statement|hyperpage}{28} +\indexentry{statement!import|hyperpage}{28} +\indexentry{module|hyperpage}{28} +\indexentry{dot notation|hyperpage}{28} +\indexentry{composition|hyperpage}{28} +\indexentry{flow of execution|hyperpage}{28} +\indexentry{stack diagram|hyperpage}{29} +\indexentry{function frame|hyperpage}{29} +\indexentry{frame|hyperpage}{29} +\indexentry{traceback|hyperpage}{29} +\indexentry{len function|hyperpage}{29} +\indexentry{function!len|hyperpage}{29} +\indexentry{function object|hyperpage}{29} +\indexentry{object!function|hyperpage}{29} +\indexentry{grid|hyperpage}{29} +\indexentry{TurtleWorld|hyperpage}{31} +\indexentry{Swampy|hyperpage}{31} +\indexentry{package|hyperpage}{31} +\indexentry{import statement|hyperpage}{32} +\indexentry{statement!import|hyperpage}{32} +\indexentry{instance|hyperpage}{32} +\indexentry{repetition|hyperpage}{32} +\indexentry{for loop|hyperpage}{32} +\indexentry{loop!for|hyperpage}{32} +\indexentry{statement!for|hyperpage}{32} +\indexentry{loop|hyperpage}{33} +\indexentry{polygon function|hyperpage}{33} +\indexentry{function!polygon|hyperpage}{33} +\indexentry{circle function|hyperpage}{33} +\indexentry{function!circle|hyperpage}{33} +\indexentry{arc function|hyperpage}{34} +\indexentry{function!arc|hyperpage}{34} +\indexentry{encapsulation|hyperpage}{34} +\indexentry{generalization|hyperpage}{34} +\indexentry{keyword argument|hyperpage}{35} +\indexentry{argument!keyword|hyperpage}{35} +\indexentry{interface|hyperpage}{35} +\indexentry{Einstein, Albert|hyperpage}{35} +\indexentry{refactoring|hyperpage}{36} +\indexentry{refactoring|hyperpage}{37} +\indexentry{development plan!encapsulation and generalization|hyperpage}{37} +\indexentry{docstring|hyperpage}{37} +\indexentry{quotation mark|hyperpage}{38} +\indexentry{triple-quoted string|hyperpage}{38} +\indexentry{string!triple-quoted|hyperpage}{38} +\indexentry{multiline string|hyperpage}{38} +\indexentry{string!multiline|hyperpage}{38} +\indexentry{debugging|hyperpage}{38} +\indexentry{interface|hyperpage}{38} +\indexentry{precondition|hyperpage}{38} +\indexentry{postcondition|hyperpage}{38} +\indexentry{instance|hyperpage}{38} +\indexentry{loop|hyperpage}{38} +\indexentry{encapsulation|hyperpage}{38} +\indexentry{generalization|hyperpage}{38} +\indexentry{keyword argument|hyperpage}{38} +\indexentry{argument!keyword|hyperpage}{38} +\indexentry{interface|hyperpage}{38} +\indexentry{refactoring|hyperpage}{38} +\indexentry{development plan|hyperpage}{39} +\indexentry{docstring|hyperpage}{39} +\indexentry{precondition|hyperpage}{39} +\indexentry{precondition|hyperpage}{39} +\indexentry{stack diagram|hyperpage}{39} +\indexentry{flower|hyperpage}{39} +\indexentry{pie|hyperpage}{39} +\indexentry{alphabet|hyperpage}{40} +\indexentry{turtle typewriter|hyperpage}{40} +\indexentry{typewriter, turtle|hyperpage}{40} +\indexentry{spiral|hyperpage}{40} +\indexentry{Archimedian spiral|hyperpage}{40} +\indexentry{modulus operator|hyperpage}{41} +\indexentry{operator!modulus|hyperpage}{41} +\indexentry{divisibility|hyperpage}{41} +\indexentry{boolean expression|hyperpage}{41} +\indexentry{expression!boolean|hyperpage}{41} +\indexentry{logical operator|hyperpage}{41} +\indexentry{operator!logical|hyperpage}{41} +\indexentry{True special value|hyperpage}{41} +\indexentry{False special value|hyperpage}{41} +\indexentry{special value!True|hyperpage}{41} +\indexentry{special value!False|hyperpage}{41} +\indexentry{bool type|hyperpage}{41} +\indexentry{type!bool|hyperpage}{41} +\indexentry{relational operator|hyperpage}{42} +\indexentry{operator!relational|hyperpage}{42} +\indexentry{logical operator|hyperpage}{42} +\indexentry{operator!logical|hyperpage}{42} +\indexentry{and operator|hyperpage}{42} +\indexentry{or operator|hyperpage}{42} +\indexentry{not operator|hyperpage}{42} +\indexentry{operator!and|hyperpage}{42} +\indexentry{operator!or|hyperpage}{42} +\indexentry{operator!not|hyperpage}{42} +\indexentry{conditional statement|hyperpage}{42} +\indexentry{statement!conditional|hyperpage}{42} +\indexentry{if statement|hyperpage}{42} +\indexentry{statement!if|hyperpage}{42} +\indexentry{conditional execution|hyperpage}{42} +\indexentry{condition|hyperpage}{42} +\indexentry{compound statement|hyperpage}{42} +\indexentry{statement!compound|hyperpage}{42} +\indexentry{pass statement|hyperpage}{42} +\indexentry{statement!pass|hyperpage}{42} +\indexentry{alternative execution|hyperpage}{43} +\indexentry{else keyword|hyperpage}{43} +\indexentry{keyword!else|hyperpage}{43} +\indexentry{branch|hyperpage}{43} +\indexentry{chained conditional|hyperpage}{43} +\indexentry{conditional!chained|hyperpage}{43} +\indexentry{elif keyword|hyperpage}{43} +\indexentry{keyword!elif|hyperpage}{43} +\indexentry{nested conditional|hyperpage}{43} +\indexentry{conditional!nested|hyperpage}{43} +\indexentry{recursion|hyperpage}{44} +\indexentry{recursion|hyperpage}{45} +\indexentry{function!recursive|hyperpage}{45} +\indexentry{return statement|hyperpage}{45} +\indexentry{statement!return|hyperpage}{45} +\indexentry{stack diagram|hyperpage}{45} +\indexentry{function frame|hyperpage}{45} +\indexentry{frame|hyperpage}{45} +\indexentry{base case|hyperpage}{45} +\indexentry{recursion!base case|hyperpage}{45} +\indexentry{infinite recursion|hyperpage}{46} +\indexentry{recursion!infinite|hyperpage}{46} +\indexentry{runtime error|hyperpage}{46} +\indexentry{error!runtime|hyperpage}{46} +\indexentry{traceback|hyperpage}{46} +\indexentry{exception!RuntimeError|hyperpage}{46} +\indexentry{RuntimeError|hyperpage}{46} +\indexentry{keyboard input|hyperpage}{46} +\indexentry{Python 3|hyperpage}{46} +\indexentry{raw\_input function|hyperpage}{46} +\indexentry{function!raw\_input|hyperpage}{46} +\indexentry{prompt|hyperpage}{47} +\indexentry{newline|hyperpage}{47} +\indexentry{ValueError|hyperpage}{47} +\indexentry{exception!ValueError|hyperpage}{47} +\indexentry{debugging|hyperpage}{47} +\indexentry{traceback|hyperpage}{47} +\indexentry{whitespace|hyperpage}{47} +\indexentry{error!runtime|hyperpage}{47} +\indexentry{runtime error|hyperpage}{47} +\indexentry{exception!OverflowError|hyperpage}{48} +\indexentry{OverflowError|hyperpage}{48} +\indexentry{floor division|hyperpage}{48} +\indexentry{division!floor|hyperpage}{48} +\indexentry{modulus operator|hyperpage}{48} +\indexentry{operator!modulus|hyperpage}{48} +\indexentry{boolean expression|hyperpage}{48} +\indexentry{expression!boolean|hyperpage}{48} +\indexentry{conditional statement|hyperpage}{48} +\indexentry{statement!conditional|hyperpage}{48} +\indexentry{condition|hyperpage}{48} +\indexentry{compound statement|hyperpage}{48} +\indexentry{branch|hyperpage}{48} +\indexentry{chained conditional|hyperpage}{48} +\indexentry{conditional!chained|hyperpage}{48} +\indexentry{nested conditional|hyperpage}{49} +\indexentry{conditional!nested|hyperpage}{49} +\indexentry{recursion|hyperpage}{49} +\indexentry{base case|hyperpage}{49} +\indexentry{infinite recursion|hyperpage}{49} +\indexentry{Fermat's Last Theorem|hyperpage}{49} +\indexentry{triangle|hyperpage}{49} +\indexentry{TurtleWorld|hyperpage}{49} +\indexentry{Koch curve|hyperpage}{50} +\indexentry{return value|hyperpage}{51} +\indexentry{return statement|hyperpage}{51} +\indexentry{statement!return|hyperpage}{51} +\indexentry{temporary variable|hyperpage}{51} +\indexentry{variable!temporary|hyperpage}{51} +\indexentry{dead code|hyperpage}{52} +\indexentry{None special value|hyperpage}{52} +\indexentry{special value!None|hyperpage}{52} +\indexentry{abs function|hyperpage}{52} +\indexentry{function!abs|hyperpage}{52} +\indexentry{compare function|hyperpage}{52} +\indexentry{function!compare|hyperpage}{52} +\indexentry{development plan!incremental|hyperpage}{52} +\indexentry{testing!incremental development|hyperpage}{52} +\indexentry{Pythagorean theorem|hyperpage}{52} +\indexentry{testing!knowing the answer|hyperpage}{53} +\indexentry{sqrt|hyperpage}{53} +\indexentry{function!sqrt|hyperpage}{53} +\indexentry{scaffolding|hyperpage}{53} +\indexentry{hypotenuse|hyperpage}{54} +\indexentry{composition|hyperpage}{54} +\indexentry{function composition|hyperpage}{54} +\indexentry{encapsulation|hyperpage}{54} +\indexentry{boolean function|hyperpage}{54} +\indexentry{conditional statement|hyperpage}{55} +\indexentry{statement!conditional|hyperpage}{55} +\indexentry{recursion|hyperpage}{55} +\indexentry{Turing complete language|hyperpage}{55} +\indexentry{language!Turing complete|hyperpage}{55} +\indexentry{Turing, Alan|hyperpage}{55} +\indexentry{Turing Thesis|hyperpage}{55} +\indexentry{vorpal|hyperpage}{55} +\indexentry{circular definition|hyperpage}{55} +\indexentry{definition!circular|hyperpage}{55} +\indexentry{factorial function|hyperpage}{56} +\indexentry{function!factorial|hyperpage}{56} +\indexentry{recursive definition|hyperpage}{56} +\indexentry{stack diagram|hyperpage}{56} +\indexentry{function frame|hyperpage}{56} +\indexentry{frame|hyperpage}{56} +\indexentry{recursion|hyperpage}{57} +\indexentry{leap of faith|hyperpage}{57} +\indexentry{testing!leap of faith|hyperpage}{57} +\indexentry{fibonacci function|hyperpage}{57} +\indexentry{function!fibonacci|hyperpage}{57} +\indexentry{flow of execution|hyperpage}{58} +\indexentry{type checking|hyperpage}{58} +\indexentry{error checking|hyperpage}{58} +\indexentry{factorial function|hyperpage}{58} +\indexentry{RuntimeError|hyperpage}{58} +\indexentry{infinite recursion|hyperpage}{58} +\indexentry{recursion!infinite|hyperpage}{58} +\indexentry{gamma function|hyperpage}{58} +\indexentry{isinstance function|hyperpage}{58} +\indexentry{function!isinstance|hyperpage}{58} +\indexentry{guardian pattern|hyperpage}{59} +\indexentry{pattern!guardian|hyperpage}{59} +\indexentry{debugging|hyperpage}{59} +\indexentry{precondition|hyperpage}{59} +\indexentry{postcondition|hyperpage}{59} +\indexentry{flow of execution|hyperpage}{59} +\indexentry{temporary variable|hyperpage}{60} +\indexentry{variable!temporary|hyperpage}{60} +\indexentry{dead code|hyperpage}{60} +\indexentry{None special value|hyperpage}{60} +\indexentry{special value!None|hyperpage}{60} +\indexentry{incremental development|hyperpage}{60} +\indexentry{scaffolding|hyperpage}{60} +\indexentry{guardian pattern|hyperpage}{60} +\indexentry{pattern!guardian|hyperpage}{60} +\indexentry{stack diagram|hyperpage}{60} +\indexentry{Ackermann function|hyperpage}{61} +\indexentry{function!ack|hyperpage}{61} +\indexentry{palindrome|hyperpage}{61} +\indexentry{greatest common divisor (GCD)|hyperpage}{61} +\indexentry{GCD (greatest common divisor)|hyperpage}{61} +\indexentry{assignment|hyperpage}{63} +\indexentry{statement!assignment|hyperpage}{63} +\indexentry{multiple assignment|hyperpage}{63} +\indexentry{newline|hyperpage}{63} +\indexentry{state diagram|hyperpage}{63} +\indexentry{diagram!state|hyperpage}{63} +\indexentry{equality and assignment|hyperpage}{63} +\indexentry{update|hyperpage}{64} +\indexentry{variable!updating|hyperpage}{64} +\indexentry{initialization (before update)|hyperpage}{64} +\indexentry{increment|hyperpage}{64} +\indexentry{decrement|hyperpage}{64} +\indexentry{statement!while|hyperpage}{64} +\indexentry{while loop|hyperpage}{64} +\indexentry{loop!while|hyperpage}{64} +\indexentry{iteration|hyperpage}{64} +\indexentry{flow of execution|hyperpage}{64} +\indexentry{condition|hyperpage}{65} +\indexentry{loop|hyperpage}{65} +\indexentry{body|hyperpage}{65} +\indexentry{infinite loop|hyperpage}{65} +\indexentry{loop!infinite|hyperpage}{65} +\indexentry{Collatz conjecture|hyperpage}{65} +\indexentry{break statement|hyperpage}{65} +\indexentry{statement!break|hyperpage}{65} +\indexentry{square root|hyperpage}{66} +\indexentry{Newton's method|hyperpage}{66} +\indexentry{update|hyperpage}{66} +\indexentry{floating-point|hyperpage}{67} +\indexentry{epsilon|hyperpage}{67} +\indexentry{encapsulation|hyperpage}{67} +\indexentry{algorithm|hyperpage}{67} +\indexentry{addition with carrying|hyperpage}{68} +\indexentry{carrying, addition with|hyperpage}{68} +\indexentry{subtraction!with borrowing|hyperpage}{68} +\indexentry{borrowing, subtraction with|hyperpage}{68} +\indexentry{debugging!by bisection|hyperpage}{68} +\indexentry{bisection, debugging by|hyperpage}{68} +\indexentry{multiple assignment|hyperpage}{68} +\indexentry{assignment!multiple|hyperpage}{68} +\indexentry{update|hyperpage}{69} +\indexentry{initialization!variable|hyperpage}{69} +\indexentry{increment|hyperpage}{69} +\indexentry{decrement|hyperpage}{69} +\indexentry{iteration|hyperpage}{69} +\indexentry{infinite loop|hyperpage}{69} +\indexentry{algorithm!square root|hyperpage}{69} +\indexentry{eval function|hyperpage}{69} +\indexentry{function!eval|hyperpage}{69} +\indexentry{Ramanujan, Srinivasa|hyperpage}{69} +\indexentry{pi|hyperpage}{69} +\indexentry{sequence|hyperpage}{71} +\indexentry{character|hyperpage}{71} +\indexentry{bracket operator|hyperpage}{71} +\indexentry{operator!bracket|hyperpage}{71} +\indexentry{index|hyperpage}{71} +\indexentry{index!starting at zero|hyperpage}{71} +\indexentry{zero, index starting at|hyperpage}{71} +\indexentry{index|hyperpage}{71} +\indexentry{exception!TypeError|hyperpage}{71} +\indexentry{TypeError|hyperpage}{71} +\indexentry{len function|hyperpage}{71} +\indexentry{function!len|hyperpage}{71} +\indexentry{exception!IndexError|hyperpage}{72} +\indexentry{IndexError|hyperpage}{72} +\indexentry{index!negative|hyperpage}{72} +\indexentry{negative index|hyperpage}{72} +\indexentry{traversal|hyperpage}{72} +\indexentry{loop!traversal|hyperpage}{72} +\indexentry{for loop|hyperpage}{72} +\indexentry{loop!for|hyperpage}{72} +\indexentry{statement!for|hyperpage}{72} +\indexentry{traversal|hyperpage}{72} +\indexentry{concatenation|hyperpage}{72} +\indexentry{abecedarian|hyperpage}{72} +\indexentry{McCloskey, Robert|hyperpage}{72} +\indexentry{slice operator|hyperpage}{73} +\indexentry{operator!slice|hyperpage}{73} +\indexentry{index!slice|hyperpage}{73} +\indexentry{string!slice|hyperpage}{73} +\indexentry{slice!string|hyperpage}{73} +\indexentry{quotation mark|hyperpage}{73} +\indexentry{copy!slice|hyperpage}{74} +\indexentry{slice!copy|hyperpage}{74} +\indexentry{mutability|hyperpage}{74} +\indexentry{immutability|hyperpage}{74} +\indexentry{string!immutable|hyperpage}{74} +\indexentry{TypeError|hyperpage}{74} +\indexentry{exception!TypeError|hyperpage}{74} +\indexentry{object|hyperpage}{74} +\indexentry{item assignment|hyperpage}{74} +\indexentry{assignment!item|hyperpage}{74} +\indexentry{immutability|hyperpage}{74} +\indexentry{concatenation|hyperpage}{74} +\indexentry{find function|hyperpage}{74} +\indexentry{function!find|hyperpage}{74} +\indexentry{traversal|hyperpage}{74} +\indexentry{search pattern|hyperpage}{74} +\indexentry{pattern!search|hyperpage}{74} +\indexentry{counter|hyperpage}{75} +\indexentry{counting and looping|hyperpage}{75} +\indexentry{looping and counting|hyperpage}{75} +\indexentry{looping!with strings|hyperpage}{75} +\indexentry{encapsulation|hyperpage}{75} +\indexentry{method|hyperpage}{75} +\indexentry{string!method|hyperpage}{75} +\indexentry{dot notation|hyperpage}{75} +\indexentry{parentheses!empty|hyperpage}{75} +\indexentry{invocation|hyperpage}{75} +\indexentry{optional argument|hyperpage}{76} +\indexentry{argument!optional|hyperpage}{76} +\indexentry{count method|hyperpage}{76} +\indexentry{method!count|hyperpage}{76} +\indexentry{string method|hyperpage}{76} +\indexentry{method!string|hyperpage}{76} +\indexentry{in operator|hyperpage}{76} +\indexentry{operator!in|hyperpage}{76} +\indexentry{boolean operator|hyperpage}{76} +\indexentry{operator!boolean|hyperpage}{76} +\indexentry{string!comparison|hyperpage}{76} +\indexentry{comparison!string|hyperpage}{76} +\indexentry{debugging|hyperpage}{77} +\indexentry{traversal|hyperpage}{77} +\indexentry{guardian pattern|hyperpage}{77} +\indexentry{pattern!guardian|hyperpage}{77} +\indexentry{index|hyperpage}{77} +\indexentry{IndexError|hyperpage}{77} +\indexentry{exception!IndexError|hyperpage}{77} +\indexentry{semantic error|hyperpage}{78} +\indexentry{error!semantic|hyperpage}{78} +\indexentry{state diagram|hyperpage}{78} +\indexentry{diagram!state|hyperpage}{78} +\indexentry{object|hyperpage}{78} +\indexentry{sequence|hyperpage}{79} +\indexentry{item|hyperpage}{79} +\indexentry{index|hyperpage}{79} +\indexentry{slice|hyperpage}{79} +\indexentry{empty string|hyperpage}{79} +\indexentry{immutability|hyperpage}{79} +\indexentry{traversal|hyperpage}{79} +\indexentry{search pattern|hyperpage}{79} +\indexentry{pattern!search|hyperpage}{79} +\indexentry{counter|hyperpage}{79} +\indexentry{method|hyperpage}{79} +\indexentry{invocation|hyperpage}{79} +\indexentry{step size|hyperpage}{79} +\indexentry{slice operator|hyperpage}{79} +\indexentry{operator!slice|hyperpage}{79} +\indexentry{palindrome|hyperpage}{79} +\indexentry{letter rotation|hyperpage}{80} +\indexentry{rotation, letter|hyperpage}{80} +\indexentry{Moby Project|hyperpage}{81} +\indexentry{crosswords|hyperpage}{81} +\indexentry{open function|hyperpage}{81} +\indexentry{function!open|hyperpage}{81} +\indexentry{plain text|hyperpage}{81} +\indexentry{text!plain|hyperpage}{81} +\indexentry{object!file|hyperpage}{81} +\indexentry{file object|hyperpage}{81} +\indexentry{readline method|hyperpage}{81} +\indexentry{method!readline|hyperpage}{81} +\indexentry{strip method|hyperpage}{81} +\indexentry{method!strip|hyperpage}{81} +\indexentry{open function|hyperpage}{82} +\indexentry{function!open|hyperpage}{82} +\indexentry{whitespace|hyperpage}{82} +\indexentry{lipogram|hyperpage}{82} +\indexentry{abecedarian|hyperpage}{82} +\indexentry{search pattern|hyperpage}{82} +\indexentry{pattern!search|hyperpage}{82} +\indexentry{traversal|hyperpage}{83} +\indexentry{generalization|hyperpage}{83} +\indexentry{traversal|hyperpage}{83} +\indexentry{problem recognition|hyperpage}{83} +\indexentry{development plan!problem recognition|hyperpage}{83} +\indexentry{looping!with indices|hyperpage}{83} +\indexentry{index!looping with|hyperpage}{83} +\indexentry{palindrome|hyperpage}{84} +\indexentry{problem recognition|hyperpage}{85} +\indexentry{development plan!problem recognition|hyperpage}{85} +\indexentry{debugging|hyperpage}{85} +\indexentry{testing!is hard|hyperpage}{85} +\indexentry{program testing|hyperpage}{85} +\indexentry{special case|hyperpage}{85} +\indexentry{testing!and absence of bugs|hyperpage}{85} +\indexentry{Dijkstra, Edsger|hyperpage}{85} +\indexentry{file object|hyperpage}{85} +\indexentry{object!file|hyperpage}{85} +\indexentry{problem recognition|hyperpage}{85} +\indexentry{special case|hyperpage}{85} +\indexentry{Car Talk|hyperpage}{86} +\indexentry{Puzzler|hyperpage}{86} +\indexentry{double letters|hyperpage}{86} +\indexentry{Car Talk|hyperpage}{86} +\indexentry{Puzzler|hyperpage}{86} +\indexentry{odometer|hyperpage}{86} +\indexentry{palindrome|hyperpage}{86} +\indexentry{Car Talk|hyperpage}{86} +\indexentry{Puzzler|hyperpage}{86} +\indexentry{palindrome|hyperpage}{86} +\indexentry{list|hyperpage}{87} +\indexentry{type!list|hyperpage}{87} +\indexentry{element|hyperpage}{87} +\indexentry{sequence|hyperpage}{87} +\indexentry{item|hyperpage}{87} +\indexentry{nested list|hyperpage}{87} +\indexentry{list!nested|hyperpage}{87} +\indexentry{empty list|hyperpage}{87} +\indexentry{list!empty|hyperpage}{87} +\indexentry{assignment|hyperpage}{87} +\indexentry{list!element|hyperpage}{87} +\indexentry{access|hyperpage}{87} +\indexentry{index|hyperpage}{87} +\indexentry{bracket operator|hyperpage}{87} +\indexentry{operator!bracket|hyperpage}{87} +\indexentry{mutability|hyperpage}{88} +\indexentry{index!starting at zero|hyperpage}{88} +\indexentry{zero, index starting at|hyperpage}{88} +\indexentry{state diagram|hyperpage}{88} +\indexentry{diagram!state|hyperpage}{88} +\indexentry{mapping|hyperpage}{88} +\indexentry{item assignment|hyperpage}{88} +\indexentry{assignment!item|hyperpage}{88} +\indexentry{exception!IndexError|hyperpage}{88} +\indexentry{IndexError|hyperpage}{88} +\indexentry{list!index|hyperpage}{88} +\indexentry{list!membership|hyperpage}{88} +\indexentry{membership!list|hyperpage}{88} +\indexentry{in operator|hyperpage}{88} +\indexentry{operator!in|hyperpage}{88} +\indexentry{list!traversal|hyperpage}{89} +\indexentry{traversal!list|hyperpage}{89} +\indexentry{for loop|hyperpage}{89} +\indexentry{loop!for|hyperpage}{89} +\indexentry{statement!for|hyperpage}{89} +\indexentry{looping!with indices|hyperpage}{89} +\indexentry{index!looping with|hyperpage}{89} +\indexentry{item update|hyperpage}{89} +\indexentry{update!item|hyperpage}{89} +\indexentry{nested list|hyperpage}{89} +\indexentry{list!nested|hyperpage}{89} +\indexentry{list!operation|hyperpage}{89} +\indexentry{concatenation!list|hyperpage}{89} +\indexentry{list!concatenation|hyperpage}{89} +\indexentry{repetition!list|hyperpage}{89} +\indexentry{list!repetition|hyperpage}{89} +\indexentry{slice operator|hyperpage}{89} +\indexentry{operator!slice|hyperpage}{89} +\indexentry{index!slice|hyperpage}{89} +\indexentry{list!slice|hyperpage}{89} +\indexentry{slice!list|hyperpage}{89} +\indexentry{list!copy|hyperpage}{90} +\indexentry{slice!copy|hyperpage}{90} +\indexentry{copy!slice|hyperpage}{90} +\indexentry{mutability|hyperpage}{90} +\indexentry{slice!update|hyperpage}{90} +\indexentry{update!slice|hyperpage}{90} +\indexentry{list!method|hyperpage}{90} +\indexentry{method, list|hyperpage}{90} +\indexentry{append method|hyperpage}{90} +\indexentry{method!append|hyperpage}{90} +\indexentry{extend method|hyperpage}{90} +\indexentry{method!extend|hyperpage}{90} +\indexentry{sort method|hyperpage}{90} +\indexentry{method!sort|hyperpage}{90} +\indexentry{void method|hyperpage}{90} +\indexentry{method!void|hyperpage}{90} +\indexentry{None special value|hyperpage}{90} +\indexentry{special value!None|hyperpage}{90} +\indexentry{update operator|hyperpage}{91} +\indexentry{operator!update|hyperpage}{91} +\indexentry{assignment!augmented|hyperpage}{91} +\indexentry{augmented assignment|hyperpage}{91} +\indexentry{accumulator!sum|hyperpage}{91} +\indexentry{reduce pattern|hyperpage}{91} +\indexentry{pattern!reduce|hyperpage}{91} +\indexentry{traversal|hyperpage}{91} +\indexentry{accumulator!list|hyperpage}{91} +\indexentry{map pattern|hyperpage}{91} +\indexentry{pattern!map|hyperpage}{91} +\indexentry{filter pattern|hyperpage}{91} +\indexentry{pattern!filter|hyperpage}{91} +\indexentry{list!comprehension|hyperpage}{92} +\indexentry{cumulative sum|hyperpage}{92} +\indexentry{element deletion|hyperpage}{92} +\indexentry{deletion, element of list|hyperpage}{92} +\indexentry{pop method|hyperpage}{92} +\indexentry{method!pop|hyperpage}{92} +\indexentry{del operator|hyperpage}{92} +\indexentry{operator!del|hyperpage}{92} +\indexentry{remove method|hyperpage}{92} +\indexentry{method!remove|hyperpage}{92} +\indexentry{None special value|hyperpage}{92} +\indexentry{special value!None|hyperpage}{92} +\indexentry{list|hyperpage}{93} +\indexentry{string|hyperpage}{93} +\indexentry{sequence|hyperpage}{93} +\indexentry{list!function|hyperpage}{93} +\indexentry{function!list|hyperpage}{93} +\indexentry{split method|hyperpage}{93} +\indexentry{method!split|hyperpage}{93} +\indexentry{optional argument|hyperpage}{93} +\indexentry{argument!optional|hyperpage}{93} +\indexentry{delimiter|hyperpage}{93} +\indexentry{join method|hyperpage}{93} +\indexentry{method!join|hyperpage}{93} +\indexentry{concatenation|hyperpage}{93} +\indexentry{empty string|hyperpage}{93} +\indexentry{string!empty|hyperpage}{93} +\indexentry{object|hyperpage}{93} +\indexentry{value|hyperpage}{93} +\indexentry{aliasing|hyperpage}{93} +\indexentry{is operator|hyperpage}{93} +\indexentry{operator!is|hyperpage}{93} +\indexentry{state diagram|hyperpage}{94} +\indexentry{diagram!state|hyperpage}{94} +\indexentry{equivalence|hyperpage}{94} +\indexentry{identity|hyperpage}{94} +\indexentry{object|hyperpage}{94} +\indexentry{value|hyperpage}{94} +\indexentry{aliasing|hyperpage}{94} +\indexentry{reference!aliasing|hyperpage}{94} +\indexentry{state diagram|hyperpage}{94} +\indexentry{diagram!state|hyperpage}{94} +\indexentry{reference|hyperpage}{94} +\indexentry{mutability|hyperpage}{94} +\indexentry{immutability|hyperpage}{95} +\indexentry{list!as argument|hyperpage}{95} +\indexentry{argument|hyperpage}{95} +\indexentry{argument!list|hyperpage}{95} +\indexentry{reference|hyperpage}{95} +\indexentry{parameter|hyperpage}{95} +\indexentry{stack diagram|hyperpage}{95} +\indexentry{diagram!stack|hyperpage}{95} +\indexentry{append method|hyperpage}{95} +\indexentry{method!append|hyperpage}{95} +\indexentry{list!concatenation|hyperpage}{95} +\indexentry{concatenation!list|hyperpage}{95} +\indexentry{slice operator|hyperpage}{96} +\indexentry{operator!slice|hyperpage}{96} +\indexentry{debugging|hyperpage}{96} +\indexentry{sort method|hyperpage}{96} +\indexentry{method!sort|hyperpage}{96} +\indexentry{aliasing!copying to avoid|hyperpage}{97} +\indexentry{copy!to avoid aliasing|hyperpage}{97} +\indexentry{list|hyperpage}{97} +\indexentry{element|hyperpage}{97} +\indexentry{index|hyperpage}{97} +\indexentry{nested list|hyperpage}{97} +\indexentry{list!traversal|hyperpage}{97} +\indexentry{mapping|hyperpage}{97} +\indexentry{accumulator|hyperpage}{97} +\indexentry{assignment!augmented|hyperpage}{97} +\indexentry{augmented assignment|hyperpage}{97} +\indexentry{traversal|hyperpage}{97} +\indexentry{reduce pattern|hyperpage}{97} +\indexentry{pattern!reduce|hyperpage}{97} +\indexentry{map pattern|hyperpage}{98} +\indexentry{pattern!map|hyperpage}{98} +\indexentry{filter pattern|hyperpage}{98} +\indexentry{pattern!filter|hyperpage}{98} +\indexentry{object|hyperpage}{98} +\indexentry{equivalent|hyperpage}{98} +\indexentry{identical|hyperpage}{98} +\indexentry{reference|hyperpage}{98} +\indexentry{aliasing|hyperpage}{98} +\indexentry{delimiter|hyperpage}{98} +\indexentry{precondition|hyperpage}{98} +\indexentry{anagram|hyperpage}{98} +\indexentry{birthday paradox|hyperpage}{98} +\indexentry{duplicate|hyperpage}{98} +\indexentry{random module|hyperpage}{98} +\indexentry{module!random|hyperpage}{98} +\indexentry{randint function|hyperpage}{98} +\indexentry{function!randint|hyperpage}{98} +\indexentry{duplicate|hyperpage}{98} +\indexentry{uniqueness|hyperpage}{98} +\indexentry{append method|hyperpage}{98} +\indexentry{method append|hyperpage}{98} +\indexentry{list!concatenation|hyperpage}{98} +\indexentry{concatenation!list|hyperpage}{98} +\indexentry{time module|hyperpage}{98} +\indexentry{module!time|hyperpage}{98} +\indexentry{membership!bisection search|hyperpage}{98} +\indexentry{bisection search|hyperpage}{98} +\indexentry{search, bisection|hyperpage}{98} +\indexentry{membership!binary search|hyperpage}{98} +\indexentry{binary search|hyperpage}{98} +\indexentry{search, binary|hyperpage}{98} +\indexentry{bisect module|hyperpage}{99} +\indexentry{module!bisect|hyperpage}{99} +\indexentry{reverse word pair|hyperpage}{99} +\indexentry{interlocking words|hyperpage}{99} +\indexentry{dictionary|hyperpage}{101} +\indexentry{dictionary|hyperpage}{101} +\indexentry{type!dict|hyperpage}{101} +\indexentry{key|hyperpage}{101} +\indexentry{key-value pair|hyperpage}{101} +\indexentry{index|hyperpage}{101} +\indexentry{dict function|hyperpage}{101} +\indexentry{function!dict|hyperpage}{101} +\indexentry{squiggly bracket|hyperpage}{101} +\indexentry{bracket!squiggly|hyperpage}{101} +\indexentry{exception!KeyError|hyperpage}{102} +\indexentry{KeyError|hyperpage}{102} +\indexentry{len function|hyperpage}{102} +\indexentry{function!len|hyperpage}{102} +\indexentry{membership!dictionary|hyperpage}{102} +\indexentry{in operator|hyperpage}{102} +\indexentry{operator!in|hyperpage}{102} +\indexentry{values method|hyperpage}{102} +\indexentry{method!values|hyperpage}{102} +\indexentry{hashtable|hyperpage}{102} +\indexentry{set membership|hyperpage}{102} +\indexentry{membership!set|hyperpage}{102} +\indexentry{counter|hyperpage}{102} +\indexentry{implementation|hyperpage}{103} +\indexentry{histogram|hyperpage}{103} +\indexentry{frequency|hyperpage}{103} +\indexentry{traversal|hyperpage}{103} +\indexentry{histogram|hyperpage}{103} +\indexentry{get method|hyperpage}{103} +\indexentry{method!get|hyperpage}{103} +\indexentry{dictionary!looping with|hyperpage}{103} +\indexentry{looping!with dictionaries|hyperpage}{103} +\indexentry{traversal|hyperpage}{103} +\indexentry{keys method|hyperpage}{104} +\indexentry{method!keys|hyperpage}{104} +\indexentry{dictionary!lookup|hyperpage}{104} +\indexentry{dictionary!reverse lookup|hyperpage}{104} +\indexentry{lookup, dictionary|hyperpage}{104} +\indexentry{reverse lookup, dictionary|hyperpage}{104} +\indexentry{search|hyperpage}{104} +\indexentry{pattern!search|hyperpage}{104} +\indexentry{raise statement|hyperpage}{104} +\indexentry{statement!raise|hyperpage}{104} +\indexentry{exception!ValueError|hyperpage}{104} +\indexentry{ValueError|hyperpage}{104} +\indexentry{traceback|hyperpage}{105} +\indexentry{optional argument|hyperpage}{105} +\indexentry{argument!optional|hyperpage}{105} +\indexentry{invert dictionary|hyperpage}{105} +\indexentry{dictionary!invert|hyperpage}{105} +\indexentry{singleton|hyperpage}{105} +\indexentry{state diagram|hyperpage}{106} +\indexentry{diagram!state|hyperpage}{106} +\indexentry{TypeError|hyperpage}{106} +\indexentry{exception!TypeError|hyperpage}{106} +\indexentry{hash function|hyperpage}{106} +\indexentry{hashable|hyperpage}{106} +\indexentry{immutability|hyperpage}{106} +\indexentry{setdefault method|hyperpage}{106} +\indexentry{method!setdefault|hyperpage}{106} +\indexentry{fibonacci function|hyperpage}{107} +\indexentry{function!fibonacci|hyperpage}{107} +\indexentry{function frame|hyperpage}{107} +\indexentry{frame|hyperpage}{107} +\indexentry{call graph|hyperpage}{107} +\indexentry{memo|hyperpage}{107} +\indexentry{Ackermann function|hyperpage}{107} +\indexentry{function!ack|hyperpage}{107} +\indexentry{global variable|hyperpage}{108} +\indexentry{variable!global|hyperpage}{108} +\indexentry{flag|hyperpage}{108} +\indexentry{multiple assignment|hyperpage}{108} +\indexentry{assignment!multiple|hyperpage}{108} +\indexentry{global statement|hyperpage}{108} +\indexentry{statement!global|hyperpage}{108} +\indexentry{declaration|hyperpage}{108} +\indexentry{update!global variable|hyperpage}{108} +\indexentry{global variable!update|hyperpage}{108} +\indexentry{UnboundLocalError|hyperpage}{108} +\indexentry{exception!UnboundLocalError|hyperpage}{108} +\indexentry{counter|hyperpage}{108} +\indexentry{mutability|hyperpage}{108} +\indexentry{long integer|hyperpage}{109} +\indexentry{integer!long|hyperpage}{109} +\indexentry{type!long|hyperpage}{109} +\indexentry{Python 3|hyperpage}{109} +\indexentry{encryption|hyperpage}{109} +\indexentry{RSA algorithm|hyperpage}{109} +\indexentry{algorithm!RSA|hyperpage}{109} +\indexentry{debugging|hyperpage}{109} +\indexentry{sanity check|hyperpage}{110} +\indexentry{consistency check|hyperpage}{110} +\indexentry{pretty print|hyperpage}{110} +\indexentry{pprint module|hyperpage}{110} +\indexentry{module!pprint|hyperpage}{110} +\indexentry{scaffolding|hyperpage}{110} +\indexentry{dictionary|hyperpage}{110} +\indexentry{key-value pair|hyperpage}{110} +\indexentry{item!dictionary|hyperpage}{110} +\indexentry{key|hyperpage}{110} +\indexentry{value|hyperpage}{110} +\indexentry{implementation|hyperpage}{110} +\indexentry{hashtable|hyperpage}{110} +\indexentry{hash function|hyperpage}{110} +\indexentry{hashable|hyperpage}{110} +\indexentry{lookup|hyperpage}{110} +\indexentry{reverse lookup, dictionary|hyperpage}{110} +\indexentry{singleton|hyperpage}{110} +\indexentry{call graph|hyperpage}{110} +\indexentry{diagram!call graph|hyperpage}{110} +\indexentry{histogram|hyperpage}{110} +\indexentry{memo|hyperpage}{110} +\indexentry{global variable|hyperpage}{111} +\indexentry{flag|hyperpage}{111} +\indexentry{declaration|hyperpage}{111} +\indexentry{duplicate|hyperpage}{111} +\indexentry{letter rotation|hyperpage}{111} +\indexentry{rotation!letters|hyperpage}{111} +\indexentry{Car Talk|hyperpage}{111} +\indexentry{Puzzler|hyperpage}{111} +\indexentry{homophone|hyperpage}{111} +\indexentry{reducible word|hyperpage}{111} +\indexentry{word, reducible|hyperpage}{111} +\indexentry{tuple|hyperpage}{113} +\indexentry{type!tuple|hyperpage}{113} +\indexentry{sequence|hyperpage}{113} +\indexentry{mutability|hyperpage}{113} +\indexentry{immutability|hyperpage}{113} +\indexentry{parentheses!tuples in|hyperpage}{113} +\indexentry{singleton|hyperpage}{113} +\indexentry{tuple!singleton|hyperpage}{113} +\indexentry{tuple function|hyperpage}{113} +\indexentry{function!tuple|hyperpage}{113} +\indexentry{bracket operator|hyperpage}{113} +\indexentry{operator!bracket|hyperpage}{113} +\indexentry{slice operator|hyperpage}{114} +\indexentry{operator!slice|hyperpage}{114} +\indexentry{tuple!slice|hyperpage}{114} +\indexentry{slice!tuple|hyperpage}{114} +\indexentry{exception!TypeError|hyperpage}{114} +\indexentry{TypeError|hyperpage}{114} +\indexentry{item assignment|hyperpage}{114} +\indexentry{assignment!item|hyperpage}{114} +\indexentry{tuple!assignment|hyperpage}{114} +\indexentry{assignment!tuple|hyperpage}{114} +\indexentry{swap pattern|hyperpage}{114} +\indexentry{pattern!swap|hyperpage}{114} +\indexentry{exception!ValueError|hyperpage}{114} +\indexentry{ValueError|hyperpage}{114} +\indexentry{split method|hyperpage}{114} +\indexentry{method!split|hyperpage}{114} +\indexentry{email address|hyperpage}{114} +\indexentry{tuple|hyperpage}{115} +\indexentry{value!tuple|hyperpage}{115} +\indexentry{return value!tuple|hyperpage}{115} +\indexentry{function, tuple as return value|hyperpage}{115} +\indexentry{divmod|hyperpage}{115} +\indexentry{tuple assignment|hyperpage}{115} +\indexentry{assignment!tuple|hyperpage}{115} +\indexentry{max function|hyperpage}{115} +\indexentry{function!max|hyperpage}{115} +\indexentry{min function|hyperpage}{115} +\indexentry{function!min|hyperpage}{115} +\indexentry{variable-length argument tuple|hyperpage}{115} +\indexentry{argument!variable-length tuple|hyperpage}{115} +\indexentry{gather|hyperpage}{115} +\indexentry{parameter!gather|hyperpage}{115} +\indexentry{argument!gather|hyperpage}{115} +\indexentry{scatter|hyperpage}{115} +\indexentry{argument scatter|hyperpage}{115} +\indexentry{TypeError|hyperpage}{115} +\indexentry{exception!TypeError|hyperpage}{115} +\indexentry{max function|hyperpage}{115} +\indexentry{function!max|hyperpage}{115} +\indexentry{min function|hyperpage}{115} +\indexentry{function!min|hyperpage}{115} +\indexentry{sum function|hyperpage}{116} +\indexentry{function!sum|hyperpage}{116} +\indexentry{zip function|hyperpage}{116} +\indexentry{function!zip|hyperpage}{116} +\indexentry{Python 3|hyperpage}{116} +\indexentry{list!of tuples|hyperpage}{116} +\indexentry{traversal|hyperpage}{116} +\indexentry{tuple assignment|hyperpage}{116} +\indexentry{assignment!tuple|hyperpage}{116} +\indexentry{loop|hyperpage}{116} +\indexentry{for loop|hyperpage}{116} +\indexentry{traversal|hyperpage}{116} +\indexentry{enumerate function|hyperpage}{116} +\indexentry{function!enumerate|hyperpage}{116} +\indexentry{dictionary|hyperpage}{117} +\indexentry{items method|hyperpage}{117} +\indexentry{method!items|hyperpage}{117} +\indexentry{key-value pair|hyperpage}{117} +\indexentry{dictionary!initialize|hyperpage}{117} +\indexentry{zip function!use with dict|hyperpage}{117} +\indexentry{update method|hyperpage}{117} +\indexentry{method!update|hyperpage}{117} +\indexentry{traverse!dictionary|hyperpage}{117} +\indexentry{dictionary!traversal|hyperpage}{117} +\indexentry{tuple!as key in dictionary|hyperpage}{117} +\indexentry{hashable|hyperpage}{117} +\indexentry{tuple!in brackets|hyperpage}{117} +\indexentry{state diagram|hyperpage}{118} +\indexentry{diagram!state|hyperpage}{118} +\indexentry{comparison!tuple|hyperpage}{118} +\indexentry{tuple!comparison|hyperpage}{118} +\indexentry{sort method|hyperpage}{118} +\indexentry{method!sort|hyperpage}{118} +\indexentry{DSU pattern|hyperpage}{119} +\indexentry{pattern!DSU|hyperpage}{119} +\indexentry{decorate-sort-undecorate pattern|hyperpage}{119} +\indexentry{pattern!decorate-sort-undecorate|hyperpage}{119} +\indexentry{keyword argument|hyperpage}{119} +\indexentry{argument!keyword|hyperpage}{119} +\indexentry{traversal|hyperpage}{119} +\indexentry{random module|hyperpage}{119} +\indexentry{module!random|hyperpage}{119} +\indexentry{random function|hyperpage}{119} +\indexentry{function!random|hyperpage}{119} +\indexentry{sequence|hyperpage}{119} +\indexentry{string|hyperpage}{119} +\indexentry{list|hyperpage}{119} +\indexentry{tuple|hyperpage}{119} +\indexentry{mutability|hyperpage}{119} +\indexentry{immutability|hyperpage}{119} +\indexentry{sorted function|hyperpage}{120} +\indexentry{function!sorted|hyperpage}{120} +\indexentry{reversed function|hyperpage}{120} +\indexentry{function!reversed|hyperpage}{120} +\indexentry{debugging|hyperpage}{120} +\indexentry{data structure|hyperpage}{120} +\indexentry{shape error|hyperpage}{120} +\indexentry{error!shape|hyperpage}{120} +\indexentry{structshape module|hyperpage}{120} +\indexentry{module!structshape|hyperpage}{120} +\indexentry{tuple|hyperpage}{121} +\indexentry{tuple assignment|hyperpage}{121} +\indexentry{assignment!tuple|hyperpage}{121} +\indexentry{gather|hyperpage}{121} +\indexentry{scatter|hyperpage}{121} +\indexentry{DSU pattern|hyperpage}{121} +\indexentry{data structure|hyperpage}{121} +\indexentry{shape|hyperpage}{121} +\indexentry{letter frequency|hyperpage}{121} +\indexentry{frequency!letter|hyperpage}{121} +\indexentry{anagram set|hyperpage}{121} +\indexentry{set!anagram|hyperpage}{121} +\indexentry{Scrabble|hyperpage}{121} +\indexentry{bingo|hyperpage}{121} +\indexentry{metathesis|hyperpage}{122} +\indexentry{Car Talk|hyperpage}{122} +\indexentry{Puzzler|hyperpage}{122} +\indexentry{reducible word|hyperpage}{122} +\indexentry{word, reducible|hyperpage}{122} +\indexentry{recursive definition|hyperpage}{122} +\indexentry{definition!recursive|hyperpage}{122} +\indexentry{string module|hyperpage}{123} +\indexentry{module!string|hyperpage}{123} +\indexentry{strip method|hyperpage}{123} +\indexentry{method!strip|hyperpage}{123} +\indexentry{replace method|hyperpage}{123} +\indexentry{method!replace|hyperpage}{123} +\indexentry{translate method|hyperpage}{123} +\indexentry{method!translate|hyperpage}{123} +\indexentry{Project Gutenberg|hyperpage}{123} +\indexentry{plain text|hyperpage}{123} +\indexentry{text!plain|hyperpage}{123} +\indexentry{word frequency|hyperpage}{123} +\indexentry{frequency!word|hyperpage}{123} +\indexentry{random number|hyperpage}{124} +\indexentry{number, random|hyperpage}{124} +\indexentry{deterministic|hyperpage}{124} +\indexentry{pseudorandom|hyperpage}{124} +\indexentry{random module|hyperpage}{124} +\indexentry{module!random|hyperpage}{124} +\indexentry{random function|hyperpage}{124} +\indexentry{function!random|hyperpage}{124} +\indexentry{randint function|hyperpage}{124} +\indexentry{function!randint|hyperpage}{124} +\indexentry{choice function|hyperpage}{124} +\indexentry{function!choice|hyperpage}{124} +\indexentry{histogram!random choice|hyperpage}{124} +\indexentry{histogram!word frequencies|hyperpage}{125} +\indexentry{Austin, Jane|hyperpage}{125} +\indexentry{accumulator!histogram|hyperpage}{125} +\indexentry{traversal|hyperpage}{125} +\indexentry{update!histogram|hyperpage}{125} +\indexentry{DSU pattern|hyperpage}{126} +\indexentry{pattern!DSU|hyperpage}{126} +\indexentry{optional parameter|hyperpage}{126} +\indexentry{parameter!optional|hyperpage}{126} +\indexentry{default value|hyperpage}{126} +\indexentry{value!default|hyperpage}{126} +\indexentry{override|hyperpage}{127} +\indexentry{dictionary!subtraction|hyperpage}{127} +\indexentry{subtraction!dictionary|hyperpage}{127} +\indexentry{set|hyperpage}{127} +\indexentry{type!set|hyperpage}{127} +\indexentry{histogram!random choice|hyperpage}{127} +\indexentry{algorithm|hyperpage}{128} +\indexentry{Markov analysis|hyperpage}{128} +\indexentry{prefix|hyperpage}{129} +\indexentry{suffix|hyperpage}{129} +\indexentry{mapping|hyperpage}{129} +\indexentry{random text|hyperpage}{129} +\indexentry{text!random|hyperpage}{129} +\indexentry{mash-up|hyperpage}{129} +\indexentry{data structure|hyperpage}{129} +\indexentry{implementation|hyperpage}{130} +\indexentry{tuple!as key in dictionary|hyperpage}{130} +\indexentry{benchmarking|hyperpage}{130} +\indexentry{profile module|hyperpage}{130} +\indexentry{module!profile|hyperpage}{130} +\indexentry{debugging|hyperpage}{131} +\indexentry{typographical error|hyperpage}{131} +\indexentry{experimental debugging|hyperpage}{131} +\indexentry{random walk programming|hyperpage}{131} +\indexentry{development plan!random walk programming|hyperpage}{131} +\indexentry{deterministic|hyperpage}{132} +\indexentry{pseudorandom|hyperpage}{132} +\indexentry{default value|hyperpage}{132} +\indexentry{override|hyperpage}{132} +\indexentry{benchmarking|hyperpage}{132} +\indexentry{word frequency|hyperpage}{132} +\indexentry{frequency!word|hyperpage}{132} +\indexentry{Zipf's law|hyperpage}{132} +\indexentry{logarithm|hyperpage}{132} +\indexentry{Matplotlib|hyperpage}{132} +\indexentry{file|hyperpage}{133} +\indexentry{type!file|hyperpage}{133} +\indexentry{persistence|hyperpage}{133} +\indexentry{pickle module|hyperpage}{133} +\indexentry{module!pickle|hyperpage}{133} +\indexentry{file!reading and writing|hyperpage}{133} +\indexentry{open function|hyperpage}{133} +\indexentry{function!open|hyperpage}{133} +\indexentry{close method|hyperpage}{134} +\indexentry{method!close|hyperpage}{134} +\indexentry{format operator|hyperpage}{134} +\indexentry{operator!format|hyperpage}{134} +\indexentry{format string|hyperpage}{134} +\indexentry{format sequence|hyperpage}{134} +\indexentry{exception!TypeError|hyperpage}{134} +\indexentry{TypeError|hyperpage}{134} +\indexentry{filename|hyperpage}{135} +\indexentry{path|hyperpage}{135} +\indexentry{directory|hyperpage}{135} +\indexentry{folder|hyperpage}{135} +\indexentry{os module|hyperpage}{135} +\indexentry{module!os|hyperpage}{135} +\indexentry{getcwd function|hyperpage}{135} +\indexentry{function!getcwd|hyperpage}{135} +\indexentry{working directory|hyperpage}{135} +\indexentry{directory!working|hyperpage}{135} +\indexentry{relative path|hyperpage}{135} +\indexentry{path!relative|hyperpage}{135} +\indexentry{absolute path|hyperpage}{135} +\indexentry{path!absolute|hyperpage}{135} +\indexentry{exists function|hyperpage}{135} +\indexentry{function!exists|hyperpage}{135} +\indexentry{walk, directory|hyperpage}{135} +\indexentry{directory!walk|hyperpage}{135} +\indexentry{open function|hyperpage}{136} +\indexentry{function!open|hyperpage}{136} +\indexentry{exception!IOError|hyperpage}{136} +\indexentry{IOError|hyperpage}{136} +\indexentry{file!permission|hyperpage}{136} +\indexentry{permission, file|hyperpage}{136} +\indexentry{exception, catching|hyperpage}{136} +\indexentry{try statement|hyperpage}{136} +\indexentry{statement!try|hyperpage}{136} +\indexentry{database|hyperpage}{137} +\indexentry{anydbm module|hyperpage}{137} +\indexentry{module!anydbm|hyperpage}{137} +\indexentry{open function|hyperpage}{137} +\indexentry{function!open|hyperpage}{137} +\indexentry{update!database|hyperpage}{137} +\indexentry{dictionary methods!anydbm module|hyperpage}{137} +\indexentry{close method|hyperpage}{137} +\indexentry{method!close|hyperpage}{137} +\indexentry{pickling|hyperpage}{137} +\indexentry{pickle module|hyperpage}{137} +\indexentry{module!pickle|hyperpage}{137} +\indexentry{shelve module|hyperpage}{138} +\indexentry{module!shelve|hyperpage}{138} +\indexentry{anagram set|hyperpage}{138} +\indexentry{set!anagram|hyperpage}{138} +\indexentry{shell|hyperpage}{138} +\indexentry{pipe|hyperpage}{138} +\indexentry{ls (Unix command)|hyperpage}{138} +\indexentry{Unix command!ls|hyperpage}{138} +\indexentry{popen function|hyperpage}{138} +\indexentry{function!popen|hyperpage}{138} +\indexentry{readline method|hyperpage}{138} +\indexentry{method!readline|hyperpage}{138} +\indexentry{read method|hyperpage}{138} +\indexentry{method!read|hyperpage}{138} +\indexentry{close method|hyperpage}{139} +\indexentry{method!close|hyperpage}{139} +\indexentry{md5|hyperpage}{139} +\indexentry{checksum|hyperpage}{139} +\indexentry{MP3|hyperpage}{139} +\indexentry{duplicate|hyperpage}{139} +\indexentry{MD5 algorithm|hyperpage}{139} +\indexentry{algorithm!MD5|hyperpage}{139} +\indexentry{checksum|hyperpage}{139} +\indexentry{md5sum|hyperpage}{139} +\indexentry{diff|hyperpage}{139} +\indexentry{module, writing|hyperpage}{139} +\indexentry{word count|hyperpage}{139} +\indexentry{module object|hyperpage}{140} +\indexentry{object!module|hyperpage}{140} +\indexentry{import statement|hyperpage}{140} +\indexentry{statement!import|hyperpage}{140} +\indexentry{module!reload|hyperpage}{140} +\indexentry{reload function|hyperpage}{140} +\indexentry{function!reload|hyperpage}{140} +\indexentry{debugging|hyperpage}{140} +\indexentry{whitespace|hyperpage}{140} +\indexentry{repr function|hyperpage}{140} +\indexentry{function!repr|hyperpage}{140} +\indexentry{string representation|hyperpage}{140} +\indexentry{end of line character|hyperpage}{141} +\indexentry{persistence|hyperpage}{141} +\indexentry{format operator|hyperpage}{141} +\indexentry{operator!format|hyperpage}{141} +\indexentry{format string|hyperpage}{141} +\indexentry{format sequence|hyperpage}{141} +\indexentry{text file|hyperpage}{141} +\indexentry{directory|hyperpage}{141} +\indexentry{path|hyperpage}{141} +\indexentry{relative path|hyperpage}{141} +\indexentry{absolute path|hyperpage}{141} +\indexentry{catch|hyperpage}{141} +\indexentry{database|hyperpage}{141} +\indexentry{urllib module|hyperpage}{141} +\indexentry{module!urllib|hyperpage}{141} +\indexentry{URL|hyperpage}{141} +\indexentry{secret exercise|hyperpage}{141} +\indexentry{exercise, secret|hyperpage}{141} +\indexentry{user-defined type|hyperpage}{143} +\indexentry{type!user-defined|hyperpage}{143} +\indexentry{point, mathematical|hyperpage}{143} +\indexentry{representation|hyperpage}{143} +\indexentry{class|hyperpage}{143} +\indexentry{object|hyperpage}{143} +\indexentry{class definition|hyperpage}{143} +\indexentry{definition!class|hyperpage}{143} +\indexentry{Point class|hyperpage}{143} +\indexentry{class!Point|hyperpage}{143} +\indexentry{docstring|hyperpage}{143} +\indexentry{object!class|hyperpage}{144} +\indexentry{class object|hyperpage}{144} +\indexentry{instance|hyperpage}{144} +\indexentry{instantiation|hyperpage}{144} +\indexentry{hexadecimal|hyperpage}{144} +\indexentry{instance attribute|hyperpage}{144} +\indexentry{attribute!instance|hyperpage}{144} +\indexentry{dot notation|hyperpage}{144} +\indexentry{state diagram|hyperpage}{144} +\indexentry{diagram!state|hyperpage}{144} +\indexentry{object diagram|hyperpage}{144} +\indexentry{diagram!object|hyperpage}{144} +\indexentry{instance!as argument|hyperpage}{145} +\indexentry{aliasing|hyperpage}{145} +\indexentry{representation|hyperpage}{145} +\indexentry{Rectangle class|hyperpage}{145} +\indexentry{class!Rectangle|hyperpage}{145} +\indexentry{state diagram|hyperpage}{146} +\indexentry{diagram!state|hyperpage}{146} +\indexentry{object diagram|hyperpage}{146} +\indexentry{diagram!object|hyperpage}{146} +\indexentry{embedded object|hyperpage}{146} +\indexentry{object!embedded|hyperpage}{146} +\indexentry{instance!as return value|hyperpage}{146} +\indexentry{return value|hyperpage}{146} +\indexentry{object!mutable|hyperpage}{146} +\indexentry{mutability|hyperpage}{146} +\indexentry{aliasing|hyperpage}{147} +\indexentry{copying objects|hyperpage}{147} +\indexentry{object!copying|hyperpage}{147} +\indexentry{copy module|hyperpage}{147} +\indexentry{module!copy|hyperpage}{147} +\indexentry{is operator|hyperpage}{147} +\indexentry{operator!is|hyperpage}{147} +\indexentry{embedded object!copying|hyperpage}{147} +\indexentry{state diagram|hyperpage}{148} +\indexentry{diagram!state|hyperpage}{148} +\indexentry{object diagram|hyperpage}{148} +\indexentry{diagram!object|hyperpage}{148} +\indexentry{shallow copy|hyperpage}{148} +\indexentry{copy!shallow|hyperpage}{148} +\indexentry{deep copy|hyperpage}{148} +\indexentry{copy!deep|hyperpage}{148} +\indexentry{deepcopy function|hyperpage}{148} +\indexentry{function!deepcopy|hyperpage}{148} +\indexentry{debugging|hyperpage}{148} +\indexentry{exception!AttributeError|hyperpage}{148} +\indexentry{AttributeError|hyperpage}{148} +\indexentry{type function|hyperpage}{148} +\indexentry{function!type|hyperpage}{148} +\indexentry{hasattr function|hyperpage}{148} +\indexentry{function!hasattr|hyperpage}{148} +\indexentry{class|hyperpage}{149} +\indexentry{class object|hyperpage}{149} +\indexentry{object!class|hyperpage}{149} +\indexentry{instance|hyperpage}{149} +\indexentry{attribute!instance|hyperpage}{149} +\indexentry{instance attribute|hyperpage}{149} +\indexentry{embedded object|hyperpage}{149} +\indexentry{object!embedded|hyperpage}{149} +\indexentry{shallow copy|hyperpage}{149} +\indexentry{deep copy|hyperpage}{149} +\indexentry{object diagram|hyperpage}{149} +\indexentry{diagram!object|hyperpage}{149} +\indexentry{Swampy|hyperpage}{149} +\indexentry{World module|hyperpage}{149} +\indexentry{module!World|hyperpage}{149} +\indexentry{Canvas object|hyperpage}{149} +\indexentry{object!Canvas|hyperpage}{149} +\indexentry{bounding box|hyperpage}{149} +\indexentry{Bangladesh, national flag|hyperpage}{150} +\indexentry{Czech Republic, national flag|hyperpage}{150} +\indexentry{color list|hyperpage}{150} +\indexentry{available colors|hyperpage}{150} +\indexentry{user-defined type|hyperpage}{151} +\indexentry{type!user-defined|hyperpage}{151} +\indexentry{Time class|hyperpage}{151} +\indexentry{class!Time|hyperpage}{151} +\indexentry{state diagram|hyperpage}{151} +\indexentry{diagram!state|hyperpage}{151} +\indexentry{object diagram|hyperpage}{151} +\indexentry{diagram!object|hyperpage}{151} +\indexentry{boolean function|hyperpage}{151} +\indexentry{prototype and patch|hyperpage}{151} +\indexentry{development plan!prototype and patch|hyperpage}{151} +\indexentry{pure function|hyperpage}{152} +\indexentry{function type!pure|hyperpage}{152} +\indexentry{Monty Python and the Holy Grail|hyperpage}{152} +\indexentry{carrying, addition with|hyperpage}{152} +\indexentry{modifier|hyperpage}{153} +\indexentry{function type!modifier|hyperpage}{153} +\indexentry{increment|hyperpage}{153} +\indexentry{special case|hyperpage}{153} +\indexentry{functional programming style|hyperpage}{153} +\indexentry{prototype and patch|hyperpage}{154} +\indexentry{development plan!prototype and patch|hyperpage}{154} +\indexentry{planned development|hyperpage}{154} +\indexentry{development plan!planned|hyperpage}{154} +\indexentry{sexagesimal|hyperpage}{154} +\indexentry{carrying, addition with|hyperpage}{154} +\indexentry{divmod|hyperpage}{154} +\indexentry{consistency check|hyperpage}{154} +\indexentry{subtraction with borrowing|hyperpage}{155} +\indexentry{borrowing, subtraction with|hyperpage}{155} +\indexentry{generalization|hyperpage}{155} +\indexentry{debugging|hyperpage}{155} +\indexentry{invariant|hyperpage}{155} +\indexentry{raise statement|hyperpage}{155} +\indexentry{statement!raise|hyperpage}{155} +\indexentry{assert statement|hyperpage}{155} +\indexentry{statement!assert|hyperpage}{155} +\indexentry{prototype and patch|hyperpage}{155} +\indexentry{planned development|hyperpage}{155} +\indexentry{pure function|hyperpage}{156} +\indexentry{modifier|hyperpage}{156} +\indexentry{functional programming style|hyperpage}{156} +\indexentry{invariant|hyperpage}{156} +\indexentry{running pace|hyperpage}{156} +\indexentry{datetime module|hyperpage}{156} +\indexentry{module!datetime|hyperpage}{156} +\indexentry{birthday|hyperpage}{156} +\indexentry{Double Day|hyperpage}{156} +\indexentry{object-oriented programming|hyperpage}{157} +\indexentry{method|hyperpage}{157} +\indexentry{function|hyperpage}{157} +\indexentry{syntax|hyperpage}{157} +\indexentry{semantics|hyperpage}{157} +\indexentry{object!printing|hyperpage}{158} +\indexentry{indentation|hyperpage}{158} +\indexentry{function syntax|hyperpage}{158} +\indexentry{dot notation|hyperpage}{158} +\indexentry{method syntax|hyperpage}{158} +\indexentry{subject|hyperpage}{158} +\indexentry{self (parameter name)|hyperpage}{158} +\indexentry{parameter!self|hyperpage}{158} +\indexentry{metaphor, method invocation|hyperpage}{159} +\indexentry{increment|hyperpage}{159} +\indexentry{exception!TypeError|hyperpage}{159} +\indexentry{TypeError|hyperpage}{159} +\indexentry{other (parameter name)|hyperpage}{160} +\indexentry{parameter!other|hyperpage}{160} +\indexentry{init method|hyperpage}{160} +\indexentry{method!init|hyperpage}{160} +\indexentry{optional parameter|hyperpage}{160} +\indexentry{parameter!optional|hyperpage}{160} +\indexentry{default value|hyperpage}{160} +\indexentry{override|hyperpage}{160} +\indexentry{Point class|hyperpage}{160} +\indexentry{class!Point|hyperpage}{160} +\indexentry{str method@\_\_str\_\_ method|hyperpage}{161} +\indexentry{method!\_\_str\_\_|hyperpage}{161} +\indexentry{string representation|hyperpage}{161} +\indexentry{print statement|hyperpage}{161} +\indexentry{statement!print|hyperpage}{161} +\indexentry{add method|hyperpage}{161} +\indexentry{method!add|hyperpage}{161} +\indexentry{operator overloading|hyperpage}{161} +\indexentry{isinstance function|hyperpage}{162} +\indexentry{function!isinstance|hyperpage}{162} +\indexentry{type-based dispatch|hyperpage}{162} +\indexentry{dispatch, type-based|hyperpage}{162} +\indexentry{commutativity|hyperpage}{162} +\indexentry{radd method|hyperpage}{162} +\indexentry{method!radd|hyperpage}{162} +\indexentry{type-based dispatch|hyperpage}{163} +\indexentry{dispatch!type-based|hyperpage}{163} +\indexentry{polymorphism|hyperpage}{163} +\indexentry{debugging|hyperpage}{164} +\indexentry{init method|hyperpage}{164} +\indexentry{attribute!initializing|hyperpage}{164} +\indexentry{hasattr function|hyperpage}{164} +\indexentry{function!hasattr|hyperpage}{164} +\indexentry{dict attribute@\_\_dict\_\_ attribute|hyperpage}{164} +\indexentry{attribute!\_\_dict\_\_|hyperpage}{164} +\indexentry{traversal!dictionary|hyperpage}{164} +\indexentry{dictionary!traversal|hyperpage}{164} +\indexentry{getattr function|hyperpage}{164} +\indexentry{function!getattr|hyperpage}{164} +\indexentry{interface|hyperpage}{164} +\indexentry{implementation|hyperpage}{164} +\indexentry{maintainable|hyperpage}{164} +\indexentry{object-oriented design|hyperpage}{164} +\indexentry{attribute|hyperpage}{164} +\indexentry{information hiding|hyperpage}{165} +\indexentry{object-oriented language|hyperpage}{165} +\indexentry{object-oriented programming|hyperpage}{165} +\indexentry{method|hyperpage}{165} +\indexentry{subject|hyperpage}{165} +\indexentry{overloading|hyperpage}{165} +\indexentry{operator!overloading|hyperpage}{165} +\indexentry{type-based dispatch|hyperpage}{165} +\indexentry{polymorphism|hyperpage}{165} +\indexentry{information hiding|hyperpage}{165} +\indexentry{default value!avoiding mutable|hyperpage}{165} +\indexentry{mutable object, as default value|hyperpage}{165} +\indexentry{worst bug|hyperpage}{165} +\indexentry{bug!worst|hyperpage}{165} +\indexentry{Kangaroo class|hyperpage}{165} +\indexentry{class!Kangaroo|hyperpage}{165} +\indexentry{aliasing|hyperpage}{166} +\indexentry{embedded object|hyperpage}{166} +\indexentry{object!embedded|hyperpage}{166} +\indexentry{Visual module|hyperpage}{166} +\indexentry{module!Visual|hyperpage}{166} +\indexentry{vpython module|hyperpage}{166} +\indexentry{module!vpython|hyperpage}{166} +\indexentry{color list|hyperpage}{166} +\indexentry{available colors|hyperpage}{166} +\indexentry{playing card, Anglo-American|hyperpage}{167} +\indexentry{card, playing|hyperpage}{167} +\indexentry{poker|hyperpage}{167} +\indexentry{rank|hyperpage}{167} +\indexentry{suit|hyperpage}{167} +\indexentry{encode|hyperpage}{167} +\indexentry{encrypt|hyperpage}{167} +\indexentry{map to|hyperpage}{167} +\indexentry{representation|hyperpage}{167} +\indexentry{Card class|hyperpage}{168} +\indexentry{class!Card|hyperpage}{168} +\indexentry{init method|hyperpage}{168} +\indexentry{method!init|hyperpage}{168} +\indexentry{class attribute|hyperpage}{168} +\indexentry{attribute!class|hyperpage}{168} +\indexentry{instance attribute|hyperpage}{168} +\indexentry{attribute!instance|hyperpage}{168} +\indexentry{dot notation|hyperpage}{168} +\indexentry{state diagram|hyperpage}{169} +\indexentry{diagram!state|hyperpage}{169} +\indexentry{object diagram|hyperpage}{169} +\indexentry{diagram!object|hyperpage}{169} +\indexentry{operator!relational|hyperpage}{169} +\indexentry{relational operator|hyperpage}{169} +\indexentry{override|hyperpage}{169} +\indexentry{operator overloading|hyperpage}{169} +\indexentry{cmp method@\_\_cmp\_\_ method|hyperpage}{169} +\indexentry{method!\_\_cmp\_\_|hyperpage}{169} +\indexentry{tuple!comparison|hyperpage}{170} +\indexentry{comparison!tuple|hyperpage}{170} +\indexentry{cmp function|hyperpage}{170} +\indexentry{function!cmp|hyperpage}{170} +\indexentry{list!of objects|hyperpage}{170} +\indexentry{deck, playing cards|hyperpage}{170} +\indexentry{init method|hyperpage}{170} +\indexentry{method!init|hyperpage}{170} +\indexentry{composition|hyperpage}{170} +\indexentry{loop!nested|hyperpage}{170} +\indexentry{Deck class|hyperpage}{170} +\indexentry{class!Deck|hyperpage}{170} +\indexentry{append method|hyperpage}{170} +\indexentry{method!append|hyperpage}{170} +\indexentry{str method@\_\_str\_\_ method|hyperpage}{171} +\indexentry{method!\_\_str\_\_|hyperpage}{171} +\indexentry{accumulator!string|hyperpage}{171} +\indexentry{string!accumulator|hyperpage}{171} +\indexentry{join method|hyperpage}{171} +\indexentry{method!join|hyperpage}{171} +\indexentry{newline|hyperpage}{171} +\indexentry{pop method|hyperpage}{171} +\indexentry{method!pop|hyperpage}{171} +\indexentry{append method|hyperpage}{171} +\indexentry{method!append|hyperpage}{171} +\indexentry{veneer|hyperpage}{171} +\indexentry{random module|hyperpage}{172} +\indexentry{module!random|hyperpage}{172} +\indexentry{shuffle function|hyperpage}{172} +\indexentry{function!shuffle|hyperpage}{172} +\indexentry{sort method|hyperpage}{172} +\indexentry{method!sort|hyperpage}{172} +\indexentry{inheritance|hyperpage}{172} +\indexentry{object-oriented programming|hyperpage}{172} +\indexentry{parent class|hyperpage}{172} +\indexentry{child class|hyperpage}{172} +\indexentry{class!child|hyperpage}{172} +\indexentry{subclass|hyperpage}{172} +\indexentry{superclass|hyperpage}{172} +\indexentry{parentheses!parent class in|hyperpage}{172} +\indexentry{parent class|hyperpage}{172} +\indexentry{class!parent|hyperpage}{172} +\indexentry{Hand class|hyperpage}{172} +\indexentry{class!Hand|hyperpage}{172} +\indexentry{override|hyperpage}{172} +\indexentry{init method|hyperpage}{172} +\indexentry{method!init|hyperpage}{172} +\indexentry{encapsulation|hyperpage}{173} +\indexentry{IS-A relationship|hyperpage}{174} +\indexentry{HAS-A relationship|hyperpage}{174} +\indexentry{class diagram|hyperpage}{174} +\indexentry{diagram!class|hyperpage}{174} +\indexentry{multiplicity (in class diagram)|hyperpage}{174} +\indexentry{debugging|hyperpage}{174} +\indexentry{polymorphism|hyperpage}{174} +\indexentry{flow of execution|hyperpage}{174} +\indexentry{mro method|hyperpage}{175} +\indexentry{method!mro|hyperpage}{175} +\indexentry{method resolution order|hyperpage}{175} +\indexentry{override|hyperpage}{175} +\indexentry{interface|hyperpage}{175} +\indexentry{precondition|hyperpage}{175} +\indexentry{postcondition|hyperpage}{175} +\indexentry{development plan|hyperpage}{175} +\indexentry{data encapsulation|hyperpage}{175} +\indexentry{encapsulation!data|hyperpage}{175} +\indexentry{refactoring|hyperpage}{176} +\indexentry{encode|hyperpage}{176} +\indexentry{class attribute|hyperpage}{176} +\indexentry{attribute!class|hyperpage}{176} +\indexentry{instance attribute|hyperpage}{176} +\indexentry{attribute!instance|hyperpage}{176} +\indexentry{veneer|hyperpage}{176} +\indexentry{inheritance|hyperpage}{176} +\indexentry{parent class|hyperpage}{177} +\indexentry{child class|hyperpage}{177} +\indexentry{class!child|hyperpage}{177} +\indexentry{IS-A relationship|hyperpage}{177} +\indexentry{HAS-A relationship|hyperpage}{177} +\indexentry{class diagram|hyperpage}{177} +\indexentry{diagram!class|hyperpage}{177} +\indexentry{multiplicity (in class diagram)|hyperpage}{177} +\indexentry{poker|hyperpage}{177} +\indexentry{Swampy|hyperpage}{178} +\indexentry{TurtleWorld|hyperpage}{178} +\indexentry{Tagger|hyperpage}{178} +\indexentry{GUI|hyperpage}{179} +\indexentry{graphical user interface|hyperpage}{179} +\indexentry{Tkinter|hyperpage}{179} +\indexentry{Gui module|hyperpage}{179} +\indexentry{module!Gui|hyperpage}{179} +\indexentry{Swampy|hyperpage}{179} +\indexentry{event loop|hyperpage}{180} +\indexentry{loop!event|hyperpage}{180} +\indexentry{infinite loop|hyperpage}{180} +\indexentry{loop!infinite|hyperpage}{180} +\indexentry{widget|hyperpage}{180} +\indexentry{Button widget|hyperpage}{180} +\indexentry{widget!Button|hyperpage}{180} +\indexentry{option|hyperpage}{180} +\indexentry{keyword argument|hyperpage}{180} +\indexentry{argument!keyword|hyperpage}{180} +\indexentry{Label widget|hyperpage}{180} +\indexentry{widget!Label|hyperpage}{180} +\indexentry{callback|hyperpage}{181} +\indexentry{event-driven programming|hyperpage}{181} +\indexentry{Canvas widget|hyperpage}{181} +\indexentry{widget!Canvas|hyperpage}{181} +\indexentry{config method|hyperpage}{181} +\indexentry{method!config|hyperpage}{181} +\indexentry{Canvas item|hyperpage}{181} +\indexentry{item!Canvas|hyperpage}{181} +\indexentry{Canvas coordinate|hyperpage}{181} +\indexentry{coordinate!Canvas|hyperpage}{181} +\indexentry{coordinate sequence|hyperpage}{182} +\indexentry{sequence!coordinate|hyperpage}{182} +\indexentry{bounding box|hyperpage}{182} +\indexentry{Text widget|hyperpage}{182} +\indexentry{widget!Text|hyperpage}{182} +\indexentry{Entry widget|hyperpage}{182} +\indexentry{widget!Entry|hyperpage}{182} +\indexentry{SimpleTurtleWorld class|hyperpage}{183} +\indexentry{class!SimpleTurtleWorld|hyperpage}{183} +\indexentry{packing widgets|hyperpage}{183} +\indexentry{widget, packing|hyperpage}{183} +\indexentry{Frame widget|hyperpage}{183} +\indexentry{widget!Frame|hyperpage}{183} +\indexentry{callback|hyperpage}{184} +\indexentry{bound method|hyperpage}{184} +\indexentry{method, bound|hyperpage}{184} +\indexentry{subject|hyperpage}{184} +\indexentry{geometry manager|hyperpage}{185} +\indexentry{Menubutton widget|hyperpage}{185} +\indexentry{widget!Menubutton|hyperpage}{185} +\indexentry{callback|hyperpage}{186} +\indexentry{Callable object|hyperpage}{186} +\indexentry{object!Callable|hyperpage}{186} +\indexentry{binding|hyperpage}{186} +\indexentry{callback|hyperpage}{186} +\indexentry{event string|hyperpage}{186} +\indexentry{event handler|hyperpage}{186} +\indexentry{Event object|hyperpage}{187} +\indexentry{object!Event|hyperpage}{187} +\indexentry{drag-and-drop|hyperpage}{187} +\indexentry{update!coordinate|hyperpage}{187} +\indexentry{Canvas coordinate|hyperpage}{188} +\indexentry{coordinate!Canvas|hyperpage}{188} +\indexentry{pixel coordinate|hyperpage}{188} +\indexentry{coordinate!pixel|hyperpage}{188} +\indexentry{debugging|hyperpage}{188} +\indexentry{callback|hyperpage}{188} +\indexentry{flow of execution|hyperpage}{188} +\indexentry{event-driven programming|hyperpage}{188} +\indexentry{invariant|hyperpage}{189} +\indexentry{GUI|hyperpage}{189} +\indexentry{widget|hyperpage}{189} +\indexentry{option|hyperpage}{189} +\indexentry{keyword argument|hyperpage}{189} +\indexentry{callback|hyperpage}{189} +\indexentry{bound method|hyperpage}{189} +\indexentry{event-driven programming|hyperpage}{189} +\indexentry{event|hyperpage}{189} +\indexentry{event loop|hyperpage}{189} +\indexentry{item!Canvas|hyperpage}{189} +\indexentry{bounding box|hyperpage}{189} +\indexentry{packing widgets|hyperpage}{189} +\indexentry{geometry manager|hyperpage}{189} +\indexentry{binding|hyperpage}{189} +\indexentry{image viewer|hyperpage}{190} +\indexentry{Python Imaging Library (PIL)|hyperpage}{190} +\indexentry{PIL (Python Imaging Library)|hyperpage}{190} +\indexentry{Image module|hyperpage}{190} +\indexentry{module!Image|hyperpage}{190} +\indexentry{bug!worst ever|hyperpage}{190} +\indexentry{worst bug!ever|hyperpage}{190} +\indexentry{vector graphics|hyperpage}{191} +\indexentry{SVG|hyperpage}{191} +\indexentry{urllib module|hyperpage}{191} +\indexentry{module!urllib|hyperpage}{191} +\indexentry{URL|hyperpage}{191} +\indexentry{HTMLParser module|hyperpage}{191} +\indexentry{module!HTMLParser|hyperpage}{191} +\indexentry{plain text|hyperpage}{191} +\indexentry{text!plain|hyperpage}{191} +\indexentry{hyperlink|hyperpage}{191} +\indexentry{debugging|hyperpage}{193} +\indexentry{syntax error|hyperpage}{193} +\indexentry{runtime error|hyperpage}{193} +\indexentry{semantic error|hyperpage}{193} +\indexentry{error!compile-time|hyperpage}{193} +\indexentry{error!syntax|hyperpage}{193} +\indexentry{error!runtime|hyperpage}{193} +\indexentry{error!semantic|hyperpage}{193} +\indexentry{exception|hyperpage}{193} +\indexentry{error message|hyperpage}{193} +\indexentry{incremental development|hyperpage}{193} +\indexentry{development plan!incremental|hyperpage}{193} +\indexentry{syntax|hyperpage}{194} +\indexentry{keyword|hyperpage}{194} +\indexentry{header|hyperpage}{194} +\indexentry{colon|hyperpage}{194} +\indexentry{quotation mark|hyperpage}{194} +\indexentry{multiline string|hyperpage}{194} +\indexentry{string!multiline|hyperpage}{194} +\indexentry{conditional|hyperpage}{194} +\indexentry{indentation|hyperpage}{194} +\indexentry{whitespace|hyperpage}{194} +\indexentry{module!reload|hyperpage}{195} +\indexentry{reload function|hyperpage}{195} +\indexentry{function!reload|hyperpage}{195} +\indexentry{infinite loop|hyperpage}{195} +\indexentry{infinite recursion|hyperpage}{195} +\indexentry{hanging|hyperpage}{195} +\indexentry{infinite loop|hyperpage}{196} +\indexentry{loop!infinite|hyperpage}{196} +\indexentry{condition|hyperpage}{196} +\indexentry{loop!condition|hyperpage}{196} +\indexentry{infinite recursion|hyperpage}{196} +\indexentry{recursion!infinite|hyperpage}{196} +\indexentry{flow of execution|hyperpage}{196} +\indexentry{exception|hyperpage}{196} +\indexentry{runtime error|hyperpage}{196} +\indexentry{traceback|hyperpage}{196} +\indexentry{NameError|hyperpage}{197} +\indexentry{TypeError|hyperpage}{197} +\indexentry{exception!NameError|hyperpage}{197} +\indexentry{exception!TypeError|hyperpage}{197} +\indexentry{index|hyperpage}{197} +\indexentry{format operator|hyperpage}{197} +\indexentry{operator!format|hyperpage}{197} +\indexentry{KeyError|hyperpage}{197} +\indexentry{exception!KeyError|hyperpage}{197} +\indexentry{dictionary|hyperpage}{197} +\indexentry{AttributeError|hyperpage}{197} +\indexentry{exception!AttributeError|hyperpage}{197} +\indexentry{IndexError|hyperpage}{197} +\indexentry{exception!IndexError|hyperpage}{197} +\indexentry{debugger (pdb)|hyperpage}{197} +\indexentry{Python debugger (pdb)|hyperpage}{197} +\indexentry{pdb (Python debugger)|hyperpage}{197} +\indexentry{print statement|hyperpage}{197} +\indexentry{statement!print|hyperpage}{197} +\indexentry{dead code|hyperpage}{198} +\indexentry{testing!minimal test case|hyperpage}{198} +\indexentry{test case, minimal|hyperpage}{198} +\indexentry{semantic error|hyperpage}{198} +\indexentry{error!semantic|hyperpage}{198} +\indexentry{model, mental|hyperpage}{198} +\indexentry{mental model|hyperpage}{198} +\indexentry{expression!big and hairy|hyperpage}{199} +\indexentry{big, hairy expression|hyperpage}{199} +\indexentry{temporary variable|hyperpage}{199} +\indexentry{variable!temporary|hyperpage}{199} +\indexentry{order of operations|hyperpage}{199} +\indexentry{precedence|hyperpage}{199} +\indexentry{return statement|hyperpage}{199} +\indexentry{statement!return|hyperpage}{199} +\indexentry{frustration|hyperpage}{200} +\indexentry{rage|hyperpage}{200} +\indexentry{debugging!emotional response|hyperpage}{200} +\indexentry{emotional debugging|hyperpage}{200} +\indexentry{debugging!superstition|hyperpage}{200} +\indexentry{superstitious debugging|hyperpage}{200} +\indexentry{random walk programming|hyperpage}{200} +\indexentry{development plan!random walk programming|hyperpage}{200} +\indexentry{algorithm|hyperpage}{201} +\indexentry{analysis of algorithms|hyperpage}{201} +\indexentry{Obama, Barack|hyperpage}{201} +\indexentry{Schmidt, Eric|hyperpage}{201} +\indexentry{bubble sort|hyperpage}{201} +\indexentry{radix sort|hyperpage}{201} +\indexentry{comparing algorithms|hyperpage}{201} +\indexentry{machine model|hyperpage}{201} +\indexentry{worst case|hyperpage}{202} +\indexentry{average case|hyperpage}{202} +\indexentry{asymptotic analysis|hyperpage}{202} +\indexentry{order of growth|hyperpage}{202} +\indexentry{leading term|hyperpage}{202} +\indexentry{exponent|hyperpage}{202} +\indexentry{leading coefficient|hyperpage}{202} +\indexentry{crossover point|hyperpage}{202} +\indexentry{big-oh notation|hyperpage}{203} +\indexentry{linear growth|hyperpage}{203} +\indexentry{quadratic growth|hyperpage}{203} +\indexentry{badness|hyperpage}{203} +\indexentry{logarithmic growth|hyperpage}{203} +\indexentry{exponential growth|hyperpage}{203} +\indexentry{practical analysis of algorithms|hyperpage}{203} +\indexentry{unbounded|hyperpage}{203} +\indexentry{analysis of primitives|hyperpage}{204} +\indexentry{indexing|hyperpage}{204} +\indexentry{string concatenation|hyperpage}{204} +\indexentry{join@{\tt join}|hyperpage}{204} +\indexentry{string methods|hyperpage}{204} +\indexentry{tuple methods|hyperpage}{204} +\indexentry{list methods|hyperpage}{204} +\indexentry{sorting|hyperpage}{204} +\indexentry{dictionary methods|hyperpage}{204} +\indexentry{sorting|hyperpage}{205} +\indexentry{comparison sort|hyperpage}{205} +\indexentry{stable sort|hyperpage}{205} +\indexentry{search|hyperpage}{205} +\indexentry{linear search|hyperpage}{205} +\indexentry{in@{\tt in} operator|hyperpage}{205} +\indexentry{bisection search|hyperpage}{205} +\indexentry{bisect@{\tt bisect} module|hyperpage}{206} +\indexentry{bisect module|hyperpage}{206} +\indexentry{module!bisect|hyperpage}{206} +\indexentry{hashtable|hyperpage}{206} +\indexentry{LinearMap@{\tt LinearMap}|hyperpage}{206} +\indexentry{KeyError@{\tt KeyError}|hyperpage}{206} +\indexentry{red-black tree|hyperpage}{207} +\indexentry{BetterMap@{\tt BetterMap}|hyperpage}{207} +\indexentry{hash function|hyperpage}{207} +\indexentry{bounded|hyperpage}{207} +\indexentry{HashMap|hyperpage}{207} +\indexentry{rehashing|hyperpage}{208} +\indexentry{constant time|hyperpage}{208} +\indexentry{average cost|hyperpage}{209} +\indexentry{geometric resizing|hyperpage}{209} +\indexentry{Lumpy|hyperpage}{211} +\indexentry{stack diagram|hyperpage}{211} +\indexentry{diagram!stack|hyperpage}{211} +\indexentry{state diagram|hyperpage}{211} +\indexentry{diagram!state|hyperpage}{211} +\indexentry{object diagram|hyperpage}{211} +\indexentry{diagram!object|hyperpage}{211} +\indexentry{class diagram|hyperpage}{211} +\indexentry{diagram!class|hyperpage}{211} +\indexentry{Unified Modeling Language|hyperpage}{211} +\indexentry{UML|hyperpage}{211} +\indexentry{Lumpy|hyperpage}{211} +\indexentry{Swampy|hyperpage}{211} +\indexentry{state diagram|hyperpage}{211} +\indexentry{diagram!state|hyperpage}{211} +\indexentry{global variable|hyperpage}{212} +\indexentry{variable!global|hyperpage}{212} +\indexentry{module-level variable|hyperpage}{212} +\indexentry{variable!module-level|hyperpage}{212} +\indexentry{stack diagram|hyperpage}{212} +\indexentry{diagram!stack|hyperpage}{212} +\indexentry{recursion|hyperpage}{213} +\indexentry{function frame|hyperpage}{213} +\indexentry{frame|hyperpage}{213} +\indexentry{base case|hyperpage}{213} +\indexentry{object diagram|hyperpage}{213} +\indexentry{diagram!object|hyperpage}{213} +\indexentry{list index|hyperpage}{214} +\indexentry{dictionary|hyperpage}{214} +\indexentry{Point class|hyperpage}{214} +\indexentry{class!Point|hyperpage}{214} +\indexentry{Rectangle class|hyperpage}{214} +\indexentry{class!Rectangle|hyperpage}{214} +\indexentry{copy|hyperpage}{215} +\indexentry{shallow copy|hyperpage}{215} +\indexentry{function object|hyperpage}{215} +\indexentry{object!function|hyperpage}{215} +\indexentry{class object|hyperpage}{215} +\indexentry{object!class|hyperpage}{215} +\indexentry{instantiate|hyperpage}{216} +\indexentry{constructor|hyperpage}{216} +\indexentry{class diagram|hyperpage}{216} +\indexentry{diagram!class|hyperpage}{216} +\indexentry{HAS-A relationship|hyperpage}{217} +\indexentry{class diagram|hyperpage}{217} +\indexentry{diagram!class|hyperpage}{217} +\indexentry{UML|hyperpage}{217} +\indexentry{IS-A relationship|hyperpage}{217} +\indexentry{Card class|hyperpage}{218} +\indexentry{Deck class|hyperpage}{218} +\indexentry{Hand class|hyperpage}{218} diff --git a/book/book.ilg b/book/book.ilg new file mode 100644 index 0000000..36c36b1 --- /dev/null +++ b/book/book.ilg @@ -0,0 +1,6 @@ +This is makeindex, version 2.15 [TeX Live 2018] (kpathsea + Thai support). +Scanning input file book.idx.....done (1977 entries accepted, 0 rejected). +Sorting entries...................done (23187 comparisons). +Generating output file book.ind.....done (1346 lines written, 0 warnings). +Output written in book.ind. +Transcript written in book.ilg. diff --git a/book/book.ind b/book/book.ind new file mode 100644 index 0000000..3516eb2 --- /dev/null +++ b/book/book.ind @@ -0,0 +1,1346 @@ +\begin{theindex} + + \item abecedarian, \hyperpage{72}, \hyperpage{82} + \item abs function, \hyperpage{52} + \item absolute path, \hyperpage{135}, \hyperpage{141} + \item access, \hyperpage{87} + \item accumulator, \hyperpage{97} + \subitem histogram, \hyperpage{125} + \subitem list, \hyperpage{91} + \subitem string, \hyperpage{171} + \subitem sum, \hyperpage{91} + \item Ackermann function, \hyperpage{61}, \hyperpage{107} + \item add method, \hyperpage{161} + \item addition with carrying, \hyperpage{68} + \item algorithm, \hyperpage{3}, \hyperpage{8}, \hyperpage{67}, + \hyperpage{128}, \hyperpage{201} + \subitem MD5, \hyperpage{139} + \subitem RSA, \hyperpage{109} + \subitem square root, \hyperpage{69} + \item aliasing, \hyperpage{93, 94}, \hyperpage{98}, \hyperpage{145}, + \hyperpage{147}, \hyperpage{166} + \subitem copying to avoid, \hyperpage{97} + \item alphabet, \hyperpage{40} + \item alternative execution, \hyperpage{43} + \item ambiguity, \hyperpage{5} + \item anagram, \hyperpage{98} + \item anagram set, \hyperpage{121}, \hyperpage{138} + \item analysis of algorithms, \hyperpage{201} + \item analysis of primitives, \hyperpage{204} + \item and operator, \hyperpage{42} + \item anydbm module, \hyperpage{137} + \item append method, \hyperpage{90}, \hyperpage{95}, \hyperpage{98}, + \hyperpage{170, 171} + \item arc function, \hyperpage{34} + \item Archimedian spiral, \hyperpage{40} + \item argument, \hyperpage{19}, \hyperpage{21}, \hyperpage{23, 24}, + \hyperpage{28}, \hyperpage{95} + \subitem gather, \hyperpage{115} + \subitem keyword, \hyperpage{35}, \hyperpage{38}, \hyperpage{119}, + \hyperpage{180} + \subitem list, \hyperpage{95} + \subitem optional, \hyperpage{76}, \hyperpage{93}, \hyperpage{105} + \subitem variable-length tuple, \hyperpage{115} + \item argument scatter, \hyperpage{115} + \item arithmetic operator, \hyperpage{13} + \item assert statement, \hyperpage{155} + \item assignment, \hyperpage{17}, \hyperpage{63}, \hyperpage{87} + \subitem augmented, \hyperpage{91}, \hyperpage{97} + \subitem item, \hyperpage{74}, \hyperpage{88}, \hyperpage{114} + \subitem multiple, \hyperpage{68}, \hyperpage{108} + \subitem tuple, \hyperpage{114--116}, \hyperpage{121} + \item assignment statement, \hyperpage{12} + \item asymptotic analysis, \hyperpage{202} + \item attribute, \hyperpage{164} + \subitem \_\_dict\_\_, \hyperpage{164} + \subitem class, \hyperpage{168}, \hyperpage{176} + \subitem initializing, \hyperpage{164} + \subitem instance, \hyperpage{144}, \hyperpage{149}, + \hyperpage{168}, \hyperpage{176} + \item AttributeError, \hyperpage{148}, \hyperpage{197} + \item augmented assignment, \hyperpage{91}, \hyperpage{97} + \item Austin, Jane, \hyperpage{125} + \item available colors, \hyperpage{150}, \hyperpage{166} + \item average case, \hyperpage{202} + \item average cost, \hyperpage{209} + + \indexspace + + \item badness, \hyperpage{203} + \item Bangladesh, national flag, \hyperpage{150} + \item base case, \hyperpage{45}, \hyperpage{49}, \hyperpage{213} + \item benchmarking, \hyperpage{130}, \hyperpage{132} + \item {\tt BetterMap}, \hyperpage{207} + \item big, hairy expression, \hyperpage{199} + \item big-oh notation, \hyperpage{203} + \item binary search, \hyperpage{98} + \item binding, \hyperpage{186}, \hyperpage{189} + \item bingo, \hyperpage{121} + \item birthday, \hyperpage{156} + \item birthday paradox, \hyperpage{98} + \item {\tt bisect} module, \hyperpage{206} + \item bisect module, \hyperpage{99}, \hyperpage{206} + \item bisection search, \hyperpage{205} + \item bisection search, \hyperpage{98} + \item bisection, debugging by, \hyperpage{68} + \item bitwise operator, \hyperpage{13} + \item body, \hyperpage{21}, \hyperpage{28}, \hyperpage{65} + \item bool type, \hyperpage{41} + \item boolean expression, \hyperpage{41}, \hyperpage{48} + \item boolean function, \hyperpage{54}, \hyperpage{151} + \item boolean operator, \hyperpage{76} + \item borrowing, subtraction with, \hyperpage{68}, \hyperpage{155} + \item bound method, \hyperpage{184}, \hyperpage{189} + \item bounded, \hyperpage{207} + \item bounding box, \hyperpage{149}, \hyperpage{182}, \hyperpage{189} + \item bracket + \subitem squiggly, \hyperpage{101} + \item bracket operator, \hyperpage{71}, \hyperpage{87}, + \hyperpage{113} + \item branch, \hyperpage{43}, \hyperpage{48} + \item break statement, \hyperpage{65} + \item bubble sort, \hyperpage{201} + \item bug, \hyperpage{3}, \hyperpage{8} + \subitem worst, \hyperpage{165} + \subitem worst ever, \hyperpage{190} + \item Button widget, \hyperpage{180} + + \indexspace + + \item calculator, \hyperpage{9}, \hyperpage{18} + \item call graph, \hyperpage{107}, \hyperpage{110} + \item Callable object, \hyperpage{186} + \item callback, \hyperpage{181}, \hyperpage{184}, \hyperpage{186}, + \hyperpage{188, 189} + \item Canvas coordinate, \hyperpage{181}, \hyperpage{188} + \item Canvas item, \hyperpage{181} + \item Canvas object, \hyperpage{149} + \item Canvas widget, \hyperpage{181} + \item Car Talk, \hyperpage{86}, \hyperpage{111}, \hyperpage{122} + \item Card class, \hyperpage{168}, \hyperpage{218} + \item card, playing, \hyperpage{167} + \item carrying, addition with, \hyperpage{68}, \hyperpage{152}, + \hyperpage{154} + \item case-sensitivity, variable names, \hyperpage{17} + \item catch, \hyperpage{141} + \item chained conditional, \hyperpage{43}, \hyperpage{48} + \item character, \hyperpage{71} + \item checksum, \hyperpage{139} + \item child class, \hyperpage{172}, \hyperpage{177} + \item choice function, \hyperpage{124} + \item circle function, \hyperpage{33} + \item circular definition, \hyperpage{55} + \item class, \hyperpage{143}, \hyperpage{149} + \subitem Card, \hyperpage{168} + \subitem child, \hyperpage{172}, \hyperpage{177} + \subitem Deck, \hyperpage{170} + \subitem Hand, \hyperpage{172} + \subitem Kangaroo, \hyperpage{165} + \subitem parent, \hyperpage{172} + \subitem Point, \hyperpage{143}, \hyperpage{160}, \hyperpage{214} + \subitem Rectangle, \hyperpage{145}, \hyperpage{214} + \subitem SimpleTurtleWorld, \hyperpage{183} + \subitem Time, \hyperpage{151} + \item class attribute, \hyperpage{168}, \hyperpage{176} + \item class definition, \hyperpage{143} + \item class diagram, \hyperpage{174}, \hyperpage{177}, + \hyperpage{211}, \hyperpage{216, 217} + \item class object, \hyperpage{144}, \hyperpage{149}, \hyperpage{215} + \item close method, \hyperpage{134}, \hyperpage{137}, \hyperpage{139} + \item cmp function, \hyperpage{170} + \item \_\_cmp\_\_ method, \hyperpage{169} + \item Collatz conjecture, \hyperpage{65} + \item colon, \hyperpage{21}, \hyperpage{194} + \item color list, \hyperpage{150}, \hyperpage{166} + \item comment, \hyperpage{16}, \hyperpage{18} + \item commutativity, \hyperpage{16}, \hyperpage{162} + \item compare function, \hyperpage{52} + \item comparing algorithms, \hyperpage{201} + \item comparison + \subitem string, \hyperpage{76} + \subitem tuple, \hyperpage{118}, \hyperpage{170} + \item comparison sort, \hyperpage{205} + \item compile, \hyperpage{2}, \hyperpage{7} + \item composition, \hyperpage{21}, \hyperpage{24}, \hyperpage{28}, + \hyperpage{54}, \hyperpage{170} + \item compound statement, \hyperpage{42}, \hyperpage{48} + \item concatenation, \hyperpage{16}, \hyperpage{18}, \hyperpage{24}, + \hyperpage{72}, \hyperpage{74}, \hyperpage{93} + \subitem list, \hyperpage{89}, \hyperpage{95}, \hyperpage{98} + \item condition, \hyperpage{42}, \hyperpage{48}, \hyperpage{65}, + \hyperpage{196} + \item conditional, \hyperpage{194} + \subitem chained, \hyperpage{43}, \hyperpage{48} + \subitem nested, \hyperpage{43}, \hyperpage{49} + \item conditional execution, \hyperpage{42} + \item conditional statement, \hyperpage{42}, \hyperpage{48}, + \hyperpage{55} + \item config method, \hyperpage{181} + \item consistency check, \hyperpage{110}, \hyperpage{154} + \item constant time, \hyperpage{208} + \item constructor, \hyperpage{216} + \item contributors, \hyperpage{vii} + \item conversion + \subitem type, \hyperpage{19} + \item coordinate + \subitem Canvas, \hyperpage{181}, \hyperpage{188} + \subitem pixel, \hyperpage{188} + \item coordinate sequence, \hyperpage{182} + \item copy, \hyperpage{215} + \subitem deep, \hyperpage{148} + \subitem shallow, \hyperpage{148} + \subitem slice, \hyperpage{74}, \hyperpage{90} + \subitem to avoid aliasing, \hyperpage{97} + \item copy module, \hyperpage{147} + \item copying objects, \hyperpage{147} + \item count method, \hyperpage{76} + \item counter, \hyperpage{75}, \hyperpage{79}, \hyperpage{102}, + \hyperpage{108} + \item counting and looping, \hyperpage{75} + \item Creative Commons, \hyperpage{vi} + \item crossover point, \hyperpage{202} + \item crosswords, \hyperpage{81} + \item cummings, e. e., \hyperpage{3} + \item cumulative sum, \hyperpage{92} + \item Czech Republic, national flag, \hyperpage{150} + + \indexspace + + \item data encapsulation, \hyperpage{175} + \item data structure, \hyperpage{120, 121}, \hyperpage{129} + \item database, \hyperpage{137}, \hyperpage{141} + \item datetime module, \hyperpage{156} + \item dead code, \hyperpage{52}, \hyperpage{60}, \hyperpage{198} + \item debugger (pdb), \hyperpage{197} + \item debugging, \hyperpage{3}, \hyperpage{7, 8}, \hyperpage{16}, + \hyperpage{27}, \hyperpage{38}, \hyperpage{47}, + \hyperpage{59}, \hyperpage{77}, \hyperpage{85}, + \hyperpage{96}, \hyperpage{109}, \hyperpage{120}, + \hyperpage{131}, \hyperpage{140}, \hyperpage{148}, + \hyperpage{155}, \hyperpage{164}, \hyperpage{174}, + \hyperpage{188}, \hyperpage{193} + \subitem by bisection, \hyperpage{68} + \subitem emotional response, \hyperpage{7}, \hyperpage{200} + \subitem experimental, \hyperpage{4} + \subitem superstition, \hyperpage{200} + \item Deck class, \hyperpage{170}, \hyperpage{218} + \item deck, playing cards, \hyperpage{170} + \item declaration, \hyperpage{108}, \hyperpage{111} + \item decorate-sort-undecorate pattern, \hyperpage{119} + \item decrement, \hyperpage{64}, \hyperpage{69} + \item deep copy, \hyperpage{148, 149} + \item deepcopy function, \hyperpage{148} + \item def keyword, \hyperpage{21} + \item default value, \hyperpage{126}, \hyperpage{132}, + \hyperpage{160} + \subitem avoiding mutable, \hyperpage{165} + \item definition + \subitem circular, \hyperpage{55} + \subitem class, \hyperpage{143} + \subitem function, \hyperpage{21} + \subitem recursive, \hyperpage{122} + \item del operator, \hyperpage{92} + \item deletion, element of list, \hyperpage{92} + \item delimiter, \hyperpage{93}, \hyperpage{98} + \item deterministic, \hyperpage{124}, \hyperpage{132} + \item development plan, \hyperpage{39}, \hyperpage{175} + \subitem encapsulation and generalization, \hyperpage{37} + \subitem incremental, \hyperpage{52}, \hyperpage{193} + \subitem planned, \hyperpage{154} + \subitem problem recognition, \hyperpage{83}, \hyperpage{85} + \subitem prototype and patch, \hyperpage{151}, \hyperpage{154} + \subitem random walk programming, \hyperpage{131}, \hyperpage{200} + \item diagram + \subitem call graph, \hyperpage{110} + \subitem class, \hyperpage{174}, \hyperpage{177}, \hyperpage{211}, + \hyperpage{216, 217} + \subitem object, \hyperpage{144}, \hyperpage{146}, + \hyperpage{148, 149}, \hyperpage{151}, \hyperpage{169}, + \hyperpage{211}, \hyperpage{213} + \subitem stack, \hyperpage{25}, \hyperpage{95}, + \hyperpage{211, 212} + \subitem state, \hyperpage{12}, \hyperpage{63}, \hyperpage{78}, + \hyperpage{88}, \hyperpage{94}, \hyperpage{106}, + \hyperpage{118}, \hyperpage{144}, \hyperpage{146}, + \hyperpage{148}, \hyperpage{151}, \hyperpage{169}, + \hyperpage{211} + \item \_\_dict\_\_ attribute, \hyperpage{164} + \item dict function, \hyperpage{101} + \item dictionary, \hyperpage{101}, \hyperpage{110}, \hyperpage{117}, + \hyperpage{197}, \hyperpage{214} + \subitem initialize, \hyperpage{117} + \subitem invert, \hyperpage{105} + \subitem lookup, \hyperpage{104} + \subitem looping with, \hyperpage{103} + \subitem reverse lookup, \hyperpage{104} + \subitem subtraction, \hyperpage{127} + \subitem traversal, \hyperpage{117}, \hyperpage{164} + \item dictionary methods, \hyperpage{204} + \subitem anydbm module, \hyperpage{137} + \item diff, \hyperpage{139} + \item Dijkstra, Edsger, \hyperpage{85} + \item directory, \hyperpage{135}, \hyperpage{141} + \subitem walk, \hyperpage{135} + \subitem working, \hyperpage{135} + \item dispatch + \subitem type-based, \hyperpage{163} + \item dispatch, type-based, \hyperpage{162} + \item divisibility, \hyperpage{41} + \item division + \subitem floating-point, \hyperpage{14} + \subitem floor, \hyperpage{14}, \hyperpage{48} + \item divmod, \hyperpage{115}, \hyperpage{154} + \item docstring, \hyperpage{37}, \hyperpage{39}, \hyperpage{143} + \item documentation, \hyperpage{9} + \item dot notation, \hyperpage{20}, \hyperpage{27, 28}, + \hyperpage{75}, \hyperpage{144}, \hyperpage{158}, + \hyperpage{168} + \item Double Day, \hyperpage{156} + \item double letters, \hyperpage{86} + \item Doyle, Arthur Conan, \hyperpage{4} + \item drag-and-drop, \hyperpage{187} + \item DSU pattern, \hyperpage{119}, \hyperpage{121}, \hyperpage{126} + \item duplicate, \hyperpage{98}, \hyperpage{111}, \hyperpage{139} + + \indexspace + + \item Einstein, Albert, \hyperpage{35} + \item element, \hyperpage{87}, \hyperpage{97} + \item element deletion, \hyperpage{92} + \item elif keyword, \hyperpage{43} + \item Elkner, Jeff, \hyperpage{v, vi} + \item ellipses, \hyperpage{21} + \item else keyword, \hyperpage{43} + \item email address, \hyperpage{114} + \item embedded object, \hyperpage{146}, \hyperpage{149}, + \hyperpage{166} + \subitem copying, \hyperpage{147} + \item emotional debugging, \hyperpage{7}, \hyperpage{200} + \item empty list, \hyperpage{87} + \item empty string, \hyperpage{79}, \hyperpage{93} + \item encapsulation, \hyperpage{34}, \hyperpage{38}, \hyperpage{54}, + \hyperpage{67}, \hyperpage{75}, \hyperpage{173} + \subitem data, \hyperpage{175} + \item encode, \hyperpage{167}, \hyperpage{176} + \item encrypt, \hyperpage{167} + \item encryption, \hyperpage{109} + \item end of line character, \hyperpage{141} + \item Entry widget, \hyperpage{182} + \item enumerate function, \hyperpage{116} + \item epsilon, \hyperpage{67} + \item equality and assignment, \hyperpage{63} + \item equivalence, \hyperpage{94} + \item equivalent, \hyperpage{98} + \item error + \subitem compile-time, \hyperpage{193} + \subitem runtime, \hyperpage{4}, \hyperpage{17}, \hyperpage{46, 47}, + \hyperpage{193} + \subitem semantic, \hyperpage{4}, \hyperpage{12}, \hyperpage{17}, + \hyperpage{78}, \hyperpage{193}, \hyperpage{198} + \subitem shape, \hyperpage{120} + \subitem syntax, \hyperpage{3}, \hyperpage{16}, \hyperpage{193} + \item error checking, \hyperpage{58} + \item error message, \hyperpage{3, 4}, \hyperpage{7}, \hyperpage{12}, + \hyperpage{17}, \hyperpage{193} + \item eval function, \hyperpage{69} + \item evaluate, \hyperpage{14} + \item event, \hyperpage{189} + \item event handler, \hyperpage{186} + \item event loop, \hyperpage{180}, \hyperpage{189} + \item Event object, \hyperpage{187} + \item event string, \hyperpage{186} + \item event-driven programming, \hyperpage{181}, \hyperpage{188, 189} + \item exception, \hyperpage{4}, \hyperpage{8}, \hyperpage{17}, + \hyperpage{193}, \hyperpage{196} + \subitem AttributeError, \hyperpage{148}, \hyperpage{197} + \subitem IndexError, \hyperpage{72}, \hyperpage{77}, \hyperpage{88}, + \hyperpage{197} + \subitem IOError, \hyperpage{136} + \subitem KeyError, \hyperpage{102}, \hyperpage{197} + \subitem NameError, \hyperpage{24}, \hyperpage{197} + \subitem OverflowError, \hyperpage{48} + \subitem RuntimeError, \hyperpage{46} + \subitem SyntaxError, \hyperpage{21} + \subitem TypeError, \hyperpage{71}, \hyperpage{74}, \hyperpage{106}, + \hyperpage{114, 115}, \hyperpage{134}, \hyperpage{159}, + \hyperpage{197} + \subitem UnboundLocalError, \hyperpage{108} + \subitem ValueError, \hyperpage{47}, \hyperpage{104}, + \hyperpage{114} + \item exception, catching, \hyperpage{136} + \item executable, \hyperpage{2}, \hyperpage{8} + \item exercise, secret, \hyperpage{141} + \item exists function, \hyperpage{135} + \item experimental debugging, \hyperpage{4}, \hyperpage{131} + \item exponent, \hyperpage{202} + \item exponential growth, \hyperpage{203} + \item expression, \hyperpage{13, 14}, \hyperpage{18} + \subitem big and hairy, \hyperpage{199} + \subitem boolean, \hyperpage{41}, \hyperpage{48} + \item extend method, \hyperpage{90} + + \indexspace + + \item factorial function, \hyperpage{56}, \hyperpage{58} + \item False special value, \hyperpage{41} + \item Fermat's Last Theorem, \hyperpage{49} + \item fibonacci function, \hyperpage{57}, \hyperpage{107} + \item file, \hyperpage{133} + \subitem permission, \hyperpage{136} + \subitem reading and writing, \hyperpage{133} + \item file object, \hyperpage{81}, \hyperpage{85} + \item filename, \hyperpage{135} + \item filter pattern, \hyperpage{91}, \hyperpage{98} + \item find function, \hyperpage{74} + \item flag, \hyperpage{108}, \hyperpage{111} + \item float function, \hyperpage{19} + \item float type, \hyperpage{11} + \item floating-point, \hyperpage{17}, \hyperpage{67} + \item floating-point division, \hyperpage{14} + \item floor division, \hyperpage{14}, \hyperpage{18}, \hyperpage{48} + \item flow of execution, \hyperpage{23}, \hyperpage{28}, + \hyperpage{58, 59}, \hyperpage{64}, \hyperpage{174}, + \hyperpage{188}, \hyperpage{196} + \item flower, \hyperpage{39} + \item folder, \hyperpage{135} + \item for loop, \hyperpage{32}, \hyperpage{72}, \hyperpage{89}, + \hyperpage{116} + \item formal language, \hyperpage{5}, \hyperpage{8} + \item format operator, \hyperpage{134}, \hyperpage{141}, + \hyperpage{197} + \item format sequence, \hyperpage{134}, \hyperpage{141} + \item format string, \hyperpage{134}, \hyperpage{141} + \item frame, \hyperpage{25}, \hyperpage{29}, \hyperpage{45}, + \hyperpage{56}, \hyperpage{107}, \hyperpage{213} + \item Frame widget, \hyperpage{183} + \item Free Documentation License, GNU, \hyperpage{v, vi} + \item frequency, \hyperpage{103} + \subitem letter, \hyperpage{121} + \subitem word, \hyperpage{123}, \hyperpage{132} + \item fruitful function, \hyperpage{26}, \hyperpage{28} + \item frustration, \hyperpage{200} + \item function, \hyperpage{6}, \hyperpage{21}, \hyperpage{28}, + \hyperpage{157} + \subitem abs, \hyperpage{52} + \subitem ack, \hyperpage{61}, \hyperpage{107} + \subitem arc, \hyperpage{34} + \subitem choice, \hyperpage{124} + \subitem circle, \hyperpage{33} + \subitem cmp, \hyperpage{170} + \subitem compare, \hyperpage{52} + \subitem deepcopy, \hyperpage{148} + \subitem dict, \hyperpage{101} + \subitem enumerate, \hyperpage{116} + \subitem eval, \hyperpage{69} + \subitem exists, \hyperpage{135} + \subitem factorial, \hyperpage{56} + \subitem fibonacci, \hyperpage{57}, \hyperpage{107} + \subitem find, \hyperpage{74} + \subitem float, \hyperpage{19} + \subitem getattr, \hyperpage{164} + \subitem getcwd, \hyperpage{135} + \subitem hasattr, \hyperpage{148}, \hyperpage{164} + \subitem int, \hyperpage{19} + \subitem isinstance, \hyperpage{58}, \hyperpage{162} + \subitem len, \hyperpage{29}, \hyperpage{71}, \hyperpage{102} + \subitem list, \hyperpage{93} + \subitem log, \hyperpage{20} + \subitem max, \hyperpage{115} + \subitem min, \hyperpage{115} + \subitem open, \hyperpage{81, 82}, \hyperpage{133}, + \hyperpage{136, 137} + \subitem polygon, \hyperpage{33} + \subitem popen, \hyperpage{138} + \subitem randint, \hyperpage{98}, \hyperpage{124} + \subitem random, \hyperpage{119}, \hyperpage{124} + \subitem raw\_input, \hyperpage{46} + \subitem recursive, \hyperpage{45} + \subitem reload, \hyperpage{140}, \hyperpage{195} + \subitem repr, \hyperpage{140} + \subitem reversed, \hyperpage{120} + \subitem shuffle, \hyperpage{172} + \subitem sorted, \hyperpage{120} + \subitem sqrt, \hyperpage{20}, \hyperpage{53} + \subitem str, \hyperpage{20} + \subitem sum, \hyperpage{116} + \subitem tuple, \hyperpage{113} + \subitem type, \hyperpage{148} + \subitem zip, \hyperpage{116} + \item function argument, \hyperpage{23} + \item function call, \hyperpage{19}, \hyperpage{28} + \item function composition, \hyperpage{54} + \item function definition, \hyperpage{21, 22}, \hyperpage{28} + \item function frame, \hyperpage{25}, \hyperpage{29}, \hyperpage{45}, + \hyperpage{56}, \hyperpage{107}, \hyperpage{213} + \item function object, \hyperpage{22}, \hyperpage{29}, + \hyperpage{215} + \item function parameter, \hyperpage{23} + \item function syntax, \hyperpage{158} + \item function type + \subitem modifier, \hyperpage{153} + \subitem pure, \hyperpage{152} + \item function, fruitful, \hyperpage{26} + \item function, math, \hyperpage{20} + \item function, reasons for, \hyperpage{26} + \item function, trigonometric, \hyperpage{20} + \item function, tuple as return value, \hyperpage{115} + \item function, void, \hyperpage{26} + \item functional programming style, \hyperpage{153}, \hyperpage{156} + + \indexspace + + \item gamma function, \hyperpage{58} + \item gather, \hyperpage{115}, \hyperpage{121} + \item GCD (greatest common divisor), \hyperpage{61} + \item generalization, \hyperpage{34}, \hyperpage{38}, \hyperpage{83}, + \hyperpage{155} + \item geometric resizing, \hyperpage{209} + \item geometry manager, \hyperpage{185}, \hyperpage{189} + \item get method, \hyperpage{103} + \item getattr function, \hyperpage{164} + \item getcwd function, \hyperpage{135} + \item global statement, \hyperpage{108} + \item global variable, \hyperpage{108}, \hyperpage{111}, + \hyperpage{212} + \subitem update, \hyperpage{108} + \item GNU Free Documentation License, \hyperpage{v, vi} + \item graphical user interface, \hyperpage{179} + \item greatest common divisor (GCD), \hyperpage{61} + \item grid, \hyperpage{29} + \item guardian pattern, \hyperpage{59, 60}, \hyperpage{77} + \item GUI, \hyperpage{179}, \hyperpage{189} + \item Gui module, \hyperpage{179} + + \indexspace + + \item Hand class, \hyperpage{172}, \hyperpage{218} + \item hanging, \hyperpage{195} + \item HAS-A relationship, \hyperpage{174}, \hyperpage{177}, + \hyperpage{217} + \item hasattr function, \hyperpage{148}, \hyperpage{164} + \item hash function, \hyperpage{106}, \hyperpage{110}, + \hyperpage{207} + \item hashable, \hyperpage{106}, \hyperpage{110}, \hyperpage{117} + \item HashMap, \hyperpage{207} + \item hashtable, \hyperpage{102}, \hyperpage{110}, \hyperpage{206} + \item header, \hyperpage{21}, \hyperpage{28}, \hyperpage{194} + \item Hello, World, \hyperpage{6} + \item help utility, \hyperpage{9} + \item hexadecimal, \hyperpage{144} + \item high-level language, \hyperpage{1}, \hyperpage{7} + \item histogram, \hyperpage{103}, \hyperpage{110} + \subitem random choice, \hyperpage{124}, \hyperpage{127} + \subitem word frequencies, \hyperpage{125} + \item Holmes, Sherlock, \hyperpage{4} + \item homophone, \hyperpage{111} + \item HTMLParser module, \hyperpage{191} + \item hyperlink, \hyperpage{191} + \item hypotenuse, \hyperpage{54} + + \indexspace + + \item identical, \hyperpage{98} + \item identity, \hyperpage{94} + \item if statement, \hyperpage{42} + \item Image module, \hyperpage{190} + \item image viewer, \hyperpage{190} + \item immutability, \hyperpage{74}, \hyperpage{79}, \hyperpage{95}, + \hyperpage{106}, \hyperpage{113}, \hyperpage{119} + \item implementation, \hyperpage{103}, \hyperpage{110}, + \hyperpage{130}, \hyperpage{164} + \item import statement, \hyperpage{28}, \hyperpage{32}, + \hyperpage{140} + \item {\tt in} operator, \hyperpage{205} + \item in operator, \hyperpage{76}, \hyperpage{88}, \hyperpage{102} + \item increment, \hyperpage{64}, \hyperpage{69}, \hyperpage{153}, + \hyperpage{159} + \item incremental development, \hyperpage{60}, \hyperpage{193} + \item indentation, \hyperpage{21}, \hyperpage{158}, \hyperpage{194} + \item index, \hyperpage{71}, \hyperpage{77}, \hyperpage{79}, + \hyperpage{87}, \hyperpage{97}, \hyperpage{101}, + \hyperpage{197} + \subitem looping with, \hyperpage{83}, \hyperpage{89} + \subitem negative, \hyperpage{72} + \subitem slice, \hyperpage{73}, \hyperpage{89} + \subitem starting at zero, \hyperpage{71}, \hyperpage{88} + \item IndexError, \hyperpage{72}, \hyperpage{77}, \hyperpage{88}, + \hyperpage{197} + \item indexing, \hyperpage{204} + \item infinite loop, \hyperpage{65}, \hyperpage{69}, \hyperpage{180}, + \hyperpage{195, 196} + \item infinite recursion, \hyperpage{46}, \hyperpage{49}, + \hyperpage{58}, \hyperpage{195, 196} + \item information hiding, \hyperpage{165} + \item inheritance, \hyperpage{172}, \hyperpage{176} + \item init method, \hyperpage{160}, \hyperpage{164}, \hyperpage{168}, + \hyperpage{170}, \hyperpage{172} + \item initialization + \subitem variable, \hyperpage{69} + \item initialization (before update), \hyperpage{64} + \item instance, \hyperpage{32}, \hyperpage{38}, \hyperpage{144}, + \hyperpage{149} + \subitem as argument, \hyperpage{145} + \subitem as return value, \hyperpage{146} + \item instance attribute, \hyperpage{144}, \hyperpage{149}, + \hyperpage{168}, \hyperpage{176} + \item instantiate, \hyperpage{216} + \item instantiation, \hyperpage{144} + \item int function, \hyperpage{19} + \item int type, \hyperpage{11} + \item integer, \hyperpage{17} + \subitem long, \hyperpage{109} + \item interactive mode, \hyperpage{2}, \hyperpage{8}, \hyperpage{14}, + \hyperpage{26} + \item interface, \hyperpage{35}, \hyperpage{38}, \hyperpage{164}, + \hyperpage{175} + \item interlocking words, \hyperpage{99} + \item interpret, \hyperpage{2}, \hyperpage{7} + \item invariant, \hyperpage{155, 156}, \hyperpage{189} + \item invert dictionary, \hyperpage{105} + \item invocation, \hyperpage{75}, \hyperpage{79} + \item IOError, \hyperpage{136} + \item is operator, \hyperpage{93}, \hyperpage{147} + \item IS-A relationship, \hyperpage{174}, \hyperpage{177}, + \hyperpage{217} + \item isinstance function, \hyperpage{58}, \hyperpage{162} + \item item, \hyperpage{79}, \hyperpage{87} + \subitem Canvas, \hyperpage{181}, \hyperpage{189} + \subitem dictionary, \hyperpage{110} + \item item assignment, \hyperpage{74}, \hyperpage{88}, + \hyperpage{114} + \item item update, \hyperpage{89} + \item items method, \hyperpage{117} + \item iteration, \hyperpage{64}, \hyperpage{69} + + \indexspace + + \item {\tt join}, \hyperpage{204} + \item join method, \hyperpage{93}, \hyperpage{171} + + \indexspace + + \item Kangaroo class, \hyperpage{165} + \item key, \hyperpage{101}, \hyperpage{110} + \item key-value pair, \hyperpage{101}, \hyperpage{110}, + \hyperpage{117} + \item keyboard input, \hyperpage{46} + \item KeyError, \hyperpage{102}, \hyperpage{197} + \item {\tt KeyError}, \hyperpage{206} + \item keys method, \hyperpage{104} + \item keyword, \hyperpage{12, 13}, \hyperpage{17}, \hyperpage{194} + \subitem def, \hyperpage{21} + \subitem elif, \hyperpage{43} + \subitem else, \hyperpage{43} + \item keyword argument, \hyperpage{35}, \hyperpage{38}, + \hyperpage{119}, \hyperpage{180}, \hyperpage{189} + \item Koch curve, \hyperpage{50} + + \indexspace + + \item Label widget, \hyperpage{180} + \item language + \subitem formal, \hyperpage{5} + \subitem high-level, \hyperpage{1} + \subitem low-level, \hyperpage{1} + \subitem natural, \hyperpage{5} + \subitem programming, \hyperpage{1} + \subitem safe, \hyperpage{4} + \subitem Turing complete, \hyperpage{55} + \item leading coefficient, \hyperpage{202} + \item leading term, \hyperpage{202} + \item leap of faith, \hyperpage{57} + \item len function, \hyperpage{29}, \hyperpage{71}, \hyperpage{102} + \item letter frequency, \hyperpage{121} + \item letter rotation, \hyperpage{80}, \hyperpage{111} + \item linear growth, \hyperpage{203} + \item linear search, \hyperpage{205} + \item {\tt LinearMap}, \hyperpage{206} + \item Linux, \hyperpage{4} + \item lipogram, \hyperpage{82} + \item list, \hyperpage{87}, \hyperpage{93}, \hyperpage{97}, + \hyperpage{119} + \subitem as argument, \hyperpage{95} + \subitem comprehension, \hyperpage{92} + \subitem concatenation, \hyperpage{89}, \hyperpage{95}, + \hyperpage{98} + \subitem copy, \hyperpage{90} + \subitem element, \hyperpage{87} + \subitem empty, \hyperpage{87} + \subitem function, \hyperpage{93} + \subitem index, \hyperpage{88} + \subitem membership, \hyperpage{88} + \subitem method, \hyperpage{90} + \subitem nested, \hyperpage{87}, \hyperpage{89} + \subitem of objects, \hyperpage{170} + \subitem of tuples, \hyperpage{116} + \subitem operation, \hyperpage{89} + \subitem repetition, \hyperpage{89} + \subitem slice, \hyperpage{89} + \subitem traversal, \hyperpage{89}, \hyperpage{97} + \item list index, \hyperpage{214} + \item list methods, \hyperpage{204} + \item literalness, \hyperpage{5} + \item local variable, \hyperpage{24}, \hyperpage{28} + \item log function, \hyperpage{20} + \item logarithm, \hyperpage{132} + \item logarithmic growth, \hyperpage{203} + \item logical operator, \hyperpage{41, 42} + \item long integer, \hyperpage{109} + \item lookup, \hyperpage{110} + \item lookup, dictionary, \hyperpage{104} + \item loop, \hyperpage{33}, \hyperpage{38}, \hyperpage{65}, + \hyperpage{116} + \subitem condition, \hyperpage{196} + \subitem event, \hyperpage{180} + \subitem for, \hyperpage{32}, \hyperpage{72}, \hyperpage{89} + \subitem infinite, \hyperpage{65}, \hyperpage{180}, \hyperpage{196} + \subitem nested, \hyperpage{170} + \subitem traversal, \hyperpage{72} + \subitem while, \hyperpage{64} + \item looping + \subitem with dictionaries, \hyperpage{103} + \subitem with indices, \hyperpage{83}, \hyperpage{89} + \subitem with strings, \hyperpage{75} + \item looping and counting, \hyperpage{75} + \item low-level language, \hyperpage{1}, \hyperpage{7} + \item ls (Unix command), \hyperpage{138} + \item Lumpy, \hyperpage{211} + + \indexspace + + \item machine model, \hyperpage{201} + \item maintainable, \hyperpage{164} + \item map pattern, \hyperpage{91}, \hyperpage{98} + \item map to, \hyperpage{167} + \item mapping, \hyperpage{88}, \hyperpage{97}, \hyperpage{129} + \item Markov analysis, \hyperpage{128} + \item mash-up, \hyperpage{129} + \item math function, \hyperpage{20} + \item Matplotlib, \hyperpage{132} + \item max function, \hyperpage{115} + \item McCloskey, Robert, \hyperpage{72} + \item md5, \hyperpage{139} + \item MD5 algorithm, \hyperpage{139} + \item md5sum, \hyperpage{139} + \item membership + \subitem binary search, \hyperpage{98} + \subitem bisection search, \hyperpage{98} + \subitem dictionary, \hyperpage{102} + \subitem list, \hyperpage{88} + \subitem set, \hyperpage{102} + \item memo, \hyperpage{107}, \hyperpage{110} + \item mental model, \hyperpage{198} + \item Menubutton widget, \hyperpage{185} + \item metaphor, method invocation, \hyperpage{159} + \item metathesis, \hyperpage{122} + \item method, \hyperpage{75}, \hyperpage{79}, \hyperpage{157}, + \hyperpage{165} + \subitem \_\_cmp\_\_, \hyperpage{169} + \subitem \_\_str\_\_, \hyperpage{161}, \hyperpage{171} + \subitem add, \hyperpage{161} + \subitem append, \hyperpage{90}, \hyperpage{95}, + \hyperpage{170, 171} + \subitem close, \hyperpage{134}, \hyperpage{137}, \hyperpage{139} + \subitem config, \hyperpage{181} + \subitem count, \hyperpage{76} + \subitem extend, \hyperpage{90} + \subitem get, \hyperpage{103} + \subitem init, \hyperpage{160}, \hyperpage{168}, \hyperpage{170}, + \hyperpage{172} + \subitem items, \hyperpage{117} + \subitem join, \hyperpage{93}, \hyperpage{171} + \subitem keys, \hyperpage{104} + \subitem mro, \hyperpage{175} + \subitem pop, \hyperpage{92}, \hyperpage{171} + \subitem radd, \hyperpage{162} + \subitem read, \hyperpage{138} + \subitem readline, \hyperpage{81}, \hyperpage{138} + \subitem remove, \hyperpage{92} + \subitem replace, \hyperpage{123} + \subitem setdefault, \hyperpage{106} + \subitem sort, \hyperpage{90}, \hyperpage{96}, \hyperpage{118}, + \hyperpage{172} + \subitem split, \hyperpage{93}, \hyperpage{114} + \subitem string, \hyperpage{76} + \subitem strip, \hyperpage{81}, \hyperpage{123} + \subitem translate, \hyperpage{123} + \subitem update, \hyperpage{117} + \subitem values, \hyperpage{102} + \subitem void, \hyperpage{90} + \item method append, \hyperpage{98} + \item method resolution order, \hyperpage{175} + \item method syntax, \hyperpage{158} + \item method, bound, \hyperpage{184} + \item method, list, \hyperpage{90} + \item Meyers, Chris, \hyperpage{vi} + \item min function, \hyperpage{115} + \item Moby Project, \hyperpage{81} + \item model, mental, \hyperpage{198} + \item modifier, \hyperpage{153}, \hyperpage{156} + \item module, \hyperpage{20}, \hyperpage{28} + \subitem anydbm, \hyperpage{137} + \subitem bisect, \hyperpage{99}, \hyperpage{206} + \subitem copy, \hyperpage{147} + \subitem datetime, \hyperpage{156} + \subitem Gui, \hyperpage{179} + \subitem HTMLParser, \hyperpage{191} + \subitem Image, \hyperpage{190} + \subitem os, \hyperpage{135} + \subitem pickle, \hyperpage{133}, \hyperpage{137} + \subitem pprint, \hyperpage{110} + \subitem profile, \hyperpage{130} + \subitem random, \hyperpage{98}, \hyperpage{119}, \hyperpage{124}, + \hyperpage{172} + \subitem reload, \hyperpage{140}, \hyperpage{195} + \subitem shelve, \hyperpage{138} + \subitem string, \hyperpage{123} + \subitem structshape, \hyperpage{120} + \subitem time, \hyperpage{98} + \subitem urllib, \hyperpage{141}, \hyperpage{191} + \subitem Visual, \hyperpage{166} + \subitem vpython, \hyperpage{166} + \subitem World, \hyperpage{149} + \item module object, \hyperpage{20}, \hyperpage{140} + \item module, writing, \hyperpage{139} + \item module-level variable, \hyperpage{212} + \item modulus operator, \hyperpage{41}, \hyperpage{48} + \item Monty Python and the Holy Grail, \hyperpage{152} + \item MP3, \hyperpage{139} + \item mro method, \hyperpage{175} + \item multiline string, \hyperpage{38}, \hyperpage{194} + \item multiple assignment, \hyperpage{63}, \hyperpage{68}, + \hyperpage{108} + \item multiplicity (in class diagram), \hyperpage{174}, + \hyperpage{177} + \item mutability, \hyperpage{74}, \hyperpage{88}, \hyperpage{90}, + \hyperpage{94}, \hyperpage{108}, \hyperpage{113}, + \hyperpage{119}, \hyperpage{146} + \item mutable object, as default value, \hyperpage{165} + + \indexspace + + \item NameError, \hyperpage{24}, \hyperpage{197} + \item natural language, \hyperpage{5}, \hyperpage{8} + \item negative index, \hyperpage{72} + \item nested conditional, \hyperpage{43}, \hyperpage{49} + \item nested list, \hyperpage{87}, \hyperpage{89}, \hyperpage{97} + \item newline, \hyperpage{47}, \hyperpage{63}, \hyperpage{171} + \item Newton's method, \hyperpage{66} + \item None special value, \hyperpage{26}, \hyperpage{52}, + \hyperpage{60}, \hyperpage{90}, \hyperpage{92} + \item not operator, \hyperpage{42} + \item number, random, \hyperpage{124} + + \indexspace + + \item Obama, Barack, \hyperpage{201} + \item object, \hyperpage{74}, \hyperpage{78}, \hyperpage{93, 94}, + \hyperpage{98}, \hyperpage{143} + \subitem Callable, \hyperpage{186} + \subitem Canvas, \hyperpage{149} + \subitem class, \hyperpage{144}, \hyperpage{149}, \hyperpage{215} + \subitem copying, \hyperpage{147} + \subitem embedded, \hyperpage{146}, \hyperpage{149}, + \hyperpage{166} + \subitem Event, \hyperpage{187} + \subitem file, \hyperpage{81}, \hyperpage{85} + \subitem function, \hyperpage{22}, \hyperpage{29}, \hyperpage{215} + \subitem module, \hyperpage{140} + \subitem mutable, \hyperpage{146} + \subitem printing, \hyperpage{158} + \item object code, \hyperpage{2}, \hyperpage{8} + \item object diagram, \hyperpage{144}, \hyperpage{146}, + \hyperpage{148, 149}, \hyperpage{151}, \hyperpage{169}, + \hyperpage{211}, \hyperpage{213} + \item object-oriented design, \hyperpage{164} + \item object-oriented language, \hyperpage{165} + \item object-oriented programming, \hyperpage{157}, \hyperpage{165}, + \hyperpage{172} + \item odometer, \hyperpage{86} + \item Olin College, \hyperpage{v} + \item open function, \hyperpage{81, 82}, \hyperpage{133}, + \hyperpage{136, 137} + \item operand, \hyperpage{13}, \hyperpage{18} + \item operator, \hyperpage{17} + \subitem and, \hyperpage{42} + \subitem bitwise, \hyperpage{13} + \subitem boolean, \hyperpage{76} + \subitem bracket, \hyperpage{71}, \hyperpage{87}, \hyperpage{113} + \subitem del, \hyperpage{92} + \subitem format, \hyperpage{134}, \hyperpage{141}, \hyperpage{197} + \subitem in, \hyperpage{76}, \hyperpage{88}, \hyperpage{102} + \subitem is, \hyperpage{93}, \hyperpage{147} + \subitem logical, \hyperpage{41, 42} + \subitem modulus, \hyperpage{41}, \hyperpage{48} + \subitem not, \hyperpage{42} + \subitem or, \hyperpage{42} + \subitem overloading, \hyperpage{165} + \subitem relational, \hyperpage{42}, \hyperpage{169} + \subitem slice, \hyperpage{73}, \hyperpage{79}, \hyperpage{89}, + \hyperpage{96}, \hyperpage{114} + \subitem string, \hyperpage{15} + \subitem update, \hyperpage{91} + \item operator overloading, \hyperpage{161}, \hyperpage{169} + \item operator, arithmetic, \hyperpage{13} + \item option, \hyperpage{180}, \hyperpage{189} + \item optional argument, \hyperpage{76}, \hyperpage{93}, + \hyperpage{105} + \item optional parameter, \hyperpage{126}, \hyperpage{160} + \item or operator, \hyperpage{42} + \item order of growth, \hyperpage{202} + \item order of operations, \hyperpage{15}, \hyperpage{17}, + \hyperpage{199} + \item os module, \hyperpage{135} + \item other (parameter name), \hyperpage{160} + \item OverflowError, \hyperpage{48} + \item overloading, \hyperpage{165} + \item override, \hyperpage{127}, \hyperpage{132}, \hyperpage{160}, + \hyperpage{169}, \hyperpage{172}, \hyperpage{175} + + \indexspace + + \item package, \hyperpage{31} + \item packing widgets, \hyperpage{183}, \hyperpage{189} + \item palindrome, \hyperpage{61}, \hyperpage{79}, \hyperpage{84}, + \hyperpage{86} + \item parameter, \hyperpage{23}, \hyperpage{25}, \hyperpage{28}, + \hyperpage{95} + \subitem gather, \hyperpage{115} + \subitem optional, \hyperpage{126}, \hyperpage{160} + \subitem other, \hyperpage{160} + \subitem self, \hyperpage{158} + \item parent class, \hyperpage{172}, \hyperpage{177} + \item parentheses + \subitem argument in, \hyperpage{19} + \subitem empty, \hyperpage{21}, \hyperpage{75} + \subitem matching, \hyperpage{3} + \subitem overriding precedence, \hyperpage{15} + \subitem parameters in, \hyperpage{23, 24} + \subitem parent class in, \hyperpage{172} + \subitem tuples in, \hyperpage{113} + \item parse, \hyperpage{5}, \hyperpage{8} + \item pass statement, \hyperpage{42} + \item path, \hyperpage{135}, \hyperpage{141} + \subitem absolute, \hyperpage{135} + \subitem relative, \hyperpage{135} + \item pattern + \subitem decorate-sort-undecorate, \hyperpage{119} + \subitem DSU, \hyperpage{119}, \hyperpage{126} + \subitem filter, \hyperpage{91}, \hyperpage{98} + \subitem guardian, \hyperpage{59, 60}, \hyperpage{77} + \subitem map, \hyperpage{91}, \hyperpage{98} + \subitem reduce, \hyperpage{91}, \hyperpage{97} + \subitem search, \hyperpage{74}, \hyperpage{79}, \hyperpage{82}, + \hyperpage{104} + \subitem swap, \hyperpage{114} + \item pdb (Python debugger), \hyperpage{197} + \item PEMDAS, \hyperpage{15} + \item permission, file, \hyperpage{136} + \item persistence, \hyperpage{133}, \hyperpage{141} + \item pi, \hyperpage{20}, \hyperpage{69} + \item pickle module, \hyperpage{133}, \hyperpage{137} + \item pickling, \hyperpage{137} + \item pie, \hyperpage{39} + \item PIL (Python Imaging Library), \hyperpage{190} + \item pipe, \hyperpage{138} + \item pixel coordinate, \hyperpage{188} + \item plain text, \hyperpage{81}, \hyperpage{123}, \hyperpage{191} + \item planned development, \hyperpage{154, 155} + \item playing card, Anglo-American, \hyperpage{167} + \item poetry, \hyperpage{6} + \item Point class, \hyperpage{143}, \hyperpage{160}, \hyperpage{214} + \item point, mathematical, \hyperpage{143} + \item poker, \hyperpage{167}, \hyperpage{177} + \item polygon function, \hyperpage{33} + \item polymorphism, \hyperpage{163}, \hyperpage{165}, \hyperpage{174} + \item pop method, \hyperpage{92}, \hyperpage{171} + \item popen function, \hyperpage{138} + \item portability, \hyperpage{1}, \hyperpage{7} + \item postcondition, \hyperpage{38}, \hyperpage{59}, \hyperpage{175} + \item pprint module, \hyperpage{110} + \item practical analysis of algorithms, \hyperpage{203} + \item precedence, \hyperpage{18}, \hyperpage{199} + \item precondition, \hyperpage{38, 39}, \hyperpage{59}, + \hyperpage{98}, \hyperpage{175} + \item prefix, \hyperpage{129} + \item pretty print, \hyperpage{110} + \item print function, \hyperpage{6} + \item print statement, \hyperpage{6}, \hyperpage{8}, \hyperpage{161}, + \hyperpage{197} + \item problem recognition, \hyperpage{83}, \hyperpage{85} + \item problem solving, \hyperpage{1}, \hyperpage{7} + \item profile module, \hyperpage{130} + \item program, \hyperpage{3}, \hyperpage{8} + \item program testing, \hyperpage{85} + \item programming language, \hyperpage{1} + \item Project Gutenberg, \hyperpage{123} + \item prompt, \hyperpage{2}, \hyperpage{8}, \hyperpage{47} + \item prose, \hyperpage{6} + \item prototype and patch, \hyperpage{151}, \hyperpage{154, 155} + \item pseudorandom, \hyperpage{124}, \hyperpage{132} + \item pure function, \hyperpage{152}, \hyperpage{156} + \item Puzzler, \hyperpage{86}, \hyperpage{111}, \hyperpage{122} + \item Pythagorean theorem, \hyperpage{52} + \item Python 3, \hyperpage{6}, \hyperpage{14}, \hyperpage{46}, + \hyperpage{109}, \hyperpage{116} + \item Python debugger (pdb), \hyperpage{197} + \item Python Imaging Library (PIL), \hyperpage{190} + \item python.org, \hyperpage{9} + + \indexspace + + \item quadratic growth, \hyperpage{203} + \item quotation mark, \hyperpage{6}, \hyperpage{11}, \hyperpage{38}, + \hyperpage{73}, \hyperpage{194} + + \indexspace + + \item radd method, \hyperpage{162} + \item radian, \hyperpage{20} + \item radix sort, \hyperpage{201} + \item rage, \hyperpage{200} + \item raise statement, \hyperpage{104}, \hyperpage{155} + \item Ramanujan, Srinivasa, \hyperpage{69} + \item randint function, \hyperpage{98}, \hyperpage{124} + \item random function, \hyperpage{119}, \hyperpage{124} + \item random module, \hyperpage{98}, \hyperpage{119}, \hyperpage{124}, + \hyperpage{172} + \item random number, \hyperpage{124} + \item random text, \hyperpage{129} + \item random walk programming, \hyperpage{131}, \hyperpage{200} + \item rank, \hyperpage{167} + \item raw\_input function, \hyperpage{46} + \item read method, \hyperpage{138} + \item readline method, \hyperpage{81}, \hyperpage{138} + \item Rectangle class, \hyperpage{145}, \hyperpage{214} + \item recursion, \hyperpage{44, 45}, \hyperpage{49}, \hyperpage{55}, + \hyperpage{57}, \hyperpage{213} + \subitem base case, \hyperpage{45} + \subitem infinite, \hyperpage{46}, \hyperpage{58}, \hyperpage{196} + \item recursive definition, \hyperpage{56}, \hyperpage{122} + \item red-black tree, \hyperpage{207} + \item reduce pattern, \hyperpage{91}, \hyperpage{97} + \item reducible word, \hyperpage{111}, \hyperpage{122} + \item redundancy, \hyperpage{5} + \item refactoring, \hyperpage{36--38}, \hyperpage{176} + \item reference, \hyperpage{94, 95}, \hyperpage{98} + \subitem aliasing, \hyperpage{94} + \item rehashing, \hyperpage{208} + \item relational operator, \hyperpage{42}, \hyperpage{169} + \item relative path, \hyperpage{135}, \hyperpage{141} + \item reload function, \hyperpage{140}, \hyperpage{195} + \item remove method, \hyperpage{92} + \item repetition, \hyperpage{32} + \subitem list, \hyperpage{89} + \item replace method, \hyperpage{123} + \item repr function, \hyperpage{140} + \item representation, \hyperpage{143}, \hyperpage{145}, + \hyperpage{167} + \item return statement, \hyperpage{45}, \hyperpage{51}, + \hyperpage{199} + \item return value, \hyperpage{19}, \hyperpage{28}, \hyperpage{51}, + \hyperpage{146} + \subitem tuple, \hyperpage{115} + \item reverse lookup, dictionary, \hyperpage{104}, \hyperpage{110} + \item reverse word pair, \hyperpage{99} + \item reversed function, \hyperpage{120} + \item rotation + \subitem letters, \hyperpage{111} + \item rotation, letter, \hyperpage{80} + \item RSA algorithm, \hyperpage{109} + \item rules of precedence, \hyperpage{15}, \hyperpage{18} + \item running pace, \hyperpage{9}, \hyperpage{18}, \hyperpage{156} + \item runtime error, \hyperpage{4}, \hyperpage{17}, + \hyperpage{46, 47}, \hyperpage{193}, \hyperpage{196} + \item RuntimeError, \hyperpage{46}, \hyperpage{58} + + \indexspace + + \item safe language, \hyperpage{4} + \item sanity check, \hyperpage{110} + \item scaffolding, \hyperpage{53}, \hyperpage{60}, \hyperpage{110} + \item scatter, \hyperpage{115}, \hyperpage{121} + \item Schmidt, Eric, \hyperpage{201} + \item Scrabble, \hyperpage{121} + \item script, \hyperpage{2}, \hyperpage{8} + \item script mode, \hyperpage{2}, \hyperpage{8}, \hyperpage{14}, + \hyperpage{26} + \item search, \hyperpage{104}, \hyperpage{205} + \item search pattern, \hyperpage{74}, \hyperpage{79}, \hyperpage{82} + \item search, binary, \hyperpage{98} + \item search, bisection, \hyperpage{98} + \item secret exercise, \hyperpage{141} + \item self (parameter name), \hyperpage{158} + \item semantic error, \hyperpage{4}, \hyperpage{8}, \hyperpage{12}, + \hyperpage{17}, \hyperpage{78}, \hyperpage{193}, + \hyperpage{198} + \item semantics, \hyperpage{4}, \hyperpage{8}, \hyperpage{157} + \item sequence, \hyperpage{71}, \hyperpage{79}, \hyperpage{87}, + \hyperpage{93}, \hyperpage{113}, \hyperpage{119} + \subitem coordinate, \hyperpage{182} + \item set, \hyperpage{127} + \subitem anagram, \hyperpage{121}, \hyperpage{138} + \item set membership, \hyperpage{102} + \item setdefault method, \hyperpage{106} + \item sexagesimal, \hyperpage{154} + \item shallow copy, \hyperpage{148, 149}, \hyperpage{215} + \item shape, \hyperpage{121} + \item shape error, \hyperpage{120} + \item shell, \hyperpage{138} + \item shelve module, \hyperpage{138} + \item shuffle function, \hyperpage{172} + \item SimpleTurtleWorld class, \hyperpage{183} + \item sine function, \hyperpage{20} + \item singleton, \hyperpage{105}, \hyperpage{110}, \hyperpage{113} + \item slice, \hyperpage{79} + \subitem copy, \hyperpage{74}, \hyperpage{90} + \subitem list, \hyperpage{89} + \subitem string, \hyperpage{73} + \subitem tuple, \hyperpage{114} + \subitem update, \hyperpage{90} + \item slice operator, \hyperpage{73}, \hyperpage{79}, \hyperpage{89}, + \hyperpage{96}, \hyperpage{114} + \item sort method, \hyperpage{90}, \hyperpage{96}, \hyperpage{118}, + \hyperpage{172} + \item sorted function, \hyperpage{120} + \item sorting, \hyperpage{204, 205} + \item source code, \hyperpage{2}, \hyperpage{8} + \item special case, \hyperpage{85}, \hyperpage{153} + \item special value + \subitem False, \hyperpage{41} + \subitem None, \hyperpage{26}, \hyperpage{52}, \hyperpage{60}, + \hyperpage{90}, \hyperpage{92} + \subitem True, \hyperpage{41} + \item spiral, \hyperpage{40} + \item split method, \hyperpage{93}, \hyperpage{114} + \item sqrt, \hyperpage{53} + \item sqrt function, \hyperpage{20} + \item square root, \hyperpage{66} + \item squiggly bracket, \hyperpage{101} + \item stable sort, \hyperpage{205} + \item stack diagram, \hyperpage{25}, \hyperpage{29}, \hyperpage{39}, + \hyperpage{45}, \hyperpage{56}, \hyperpage{60}, + \hyperpage{95}, \hyperpage{211, 212} + \item state diagram, \hyperpage{12}, \hyperpage{17}, \hyperpage{63}, + \hyperpage{78}, \hyperpage{88}, \hyperpage{94}, + \hyperpage{106}, \hyperpage{118}, \hyperpage{144}, + \hyperpage{146}, \hyperpage{148}, \hyperpage{151}, + \hyperpage{169}, \hyperpage{211} + \item statement, \hyperpage{17} + \subitem assert, \hyperpage{155} + \subitem assignment, \hyperpage{12}, \hyperpage{63} + \subitem break, \hyperpage{65} + \subitem compound, \hyperpage{42} + \subitem conditional, \hyperpage{42}, \hyperpage{48}, + \hyperpage{55} + \subitem for, \hyperpage{32}, \hyperpage{72}, \hyperpage{89} + \subitem global, \hyperpage{108} + \subitem if, \hyperpage{42} + \subitem import, \hyperpage{28}, \hyperpage{32}, \hyperpage{140} + \subitem pass, \hyperpage{42} + \subitem print, \hyperpage{6}, \hyperpage{8}, \hyperpage{161}, + \hyperpage{197} + \subitem raise, \hyperpage{104}, \hyperpage{155} + \subitem return, \hyperpage{45}, \hyperpage{51}, \hyperpage{199} + \subitem try, \hyperpage{136} + \subitem while, \hyperpage{64} + \item step size, \hyperpage{79} + \item str function, \hyperpage{20} + \item \_\_str\_\_ method, \hyperpage{161}, \hyperpage{171} + \item string, \hyperpage{11}, \hyperpage{17}, \hyperpage{93}, + \hyperpage{119} + \subitem accumulator, \hyperpage{171} + \subitem comparison, \hyperpage{76} + \subitem empty, \hyperpage{93} + \subitem immutable, \hyperpage{74} + \subitem method, \hyperpage{75} + \subitem multiline, \hyperpage{38}, \hyperpage{194} + \subitem operation, \hyperpage{15} + \subitem slice, \hyperpage{73} + \subitem triple-quoted, \hyperpage{38} + \item string concatenation, \hyperpage{204} + \item string method, \hyperpage{76} + \item string methods, \hyperpage{204} + \item string module, \hyperpage{123} + \item string representation, \hyperpage{140}, \hyperpage{161} + \item string type, \hyperpage{11} + \item strip method, \hyperpage{81}, \hyperpage{123} + \item structshape module, \hyperpage{120} + \item structure, \hyperpage{5} + \item subclass, \hyperpage{172} + \item subject, \hyperpage{158}, \hyperpage{165}, \hyperpage{184} + \item subtraction + \subitem dictionary, \hyperpage{127} + \subitem with borrowing, \hyperpage{68} + \item subtraction with borrowing, \hyperpage{155} + \item suffix, \hyperpage{129} + \item suit, \hyperpage{167} + \item sum function, \hyperpage{116} + \item superclass, \hyperpage{172} + \item superstitious debugging, \hyperpage{200} + \item SVG, \hyperpage{191} + \item Swampy, \hyperpage{31}, \hyperpage{149}, \hyperpage{178, 179}, + \hyperpage{211} + \item swap pattern, \hyperpage{114} + \item syntax, \hyperpage{3}, \hyperpage{8}, \hyperpage{157}, + \hyperpage{194} + \item syntax error, \hyperpage{3}, \hyperpage{8}, \hyperpage{16}, + \hyperpage{193} + \item SyntaxError, \hyperpage{21} + + \indexspace + + \item Tagger, \hyperpage{178} + \item temporary variable, \hyperpage{51}, \hyperpage{60}, + \hyperpage{199} + \item test case, minimal, \hyperpage{198} + \item testing + \subitem and absence of bugs, \hyperpage{85} + \subitem incremental development, \hyperpage{52} + \subitem interactive mode, \hyperpage{2} + \subitem is hard, \hyperpage{85} + \subitem knowing the answer, \hyperpage{53} + \subitem leap of faith, \hyperpage{57} + \subitem minimal test case, \hyperpage{198} + \item text + \subitem plain, \hyperpage{81}, \hyperpage{123}, \hyperpage{191} + \subitem random, \hyperpage{129} + \item text file, \hyperpage{141} + \item Text widget, \hyperpage{182} + \item Time class, \hyperpage{151} + \item time module, \hyperpage{98} + \item Tkinter, \hyperpage{179} + \item token, \hyperpage{5}, \hyperpage{8} + \item traceback, \hyperpage{25}, \hyperpage{29}, \hyperpage{46, 47}, + \hyperpage{105}, \hyperpage{196} + \item translate method, \hyperpage{123} + \item traversal, \hyperpage{72}, \hyperpage{74}, \hyperpage{77}, + \hyperpage{79}, \hyperpage{83}, \hyperpage{91}, + \hyperpage{97}, \hyperpage{103}, \hyperpage{116}, + \hyperpage{119}, \hyperpage{125} + \subitem dictionary, \hyperpage{164} + \subitem list, \hyperpage{89} + \item traverse + \subitem dictionary, \hyperpage{117} + \item triangle, \hyperpage{49} + \item trigonometric function, \hyperpage{20} + \item triple-quoted string, \hyperpage{38} + \item True special value, \hyperpage{41} + \item try statement, \hyperpage{136} + \item tuple, \hyperpage{113}, \hyperpage{115}, \hyperpage{119}, + \hyperpage{121} + \subitem as key in dictionary, \hyperpage{117}, \hyperpage{130} + \subitem assignment, \hyperpage{114} + \subitem comparison, \hyperpage{118}, \hyperpage{170} + \subitem in brackets, \hyperpage{117} + \subitem singleton, \hyperpage{113} + \subitem slice, \hyperpage{114} + \item tuple assignment, \hyperpage{115, 116}, \hyperpage{121} + \item tuple function, \hyperpage{113} + \item tuple methods, \hyperpage{204} + \item Turing complete language, \hyperpage{55} + \item Turing Thesis, \hyperpage{55} + \item Turing, Alan, \hyperpage{55} + \item turtle typewriter, \hyperpage{40} + \item TurtleWorld, \hyperpage{31}, \hyperpage{49}, \hyperpage{178} + \item type, \hyperpage{11}, \hyperpage{17} + \subitem bool, \hyperpage{41} + \subitem dict, \hyperpage{101} + \subitem file, \hyperpage{133} + \subitem float, \hyperpage{11} + \subitem int, \hyperpage{11} + \subitem list, \hyperpage{87} + \subitem long, \hyperpage{109} + \subitem set, \hyperpage{127} + \subitem str, \hyperpage{11} + \subitem tuple, \hyperpage{113} + \subitem user-defined, \hyperpage{143}, \hyperpage{151} + \item type checking, \hyperpage{58} + \item type conversion, \hyperpage{19} + \item type function, \hyperpage{148} + \item type-based dispatch, \hyperpage{162, 163}, \hyperpage{165} + \item TypeError, \hyperpage{71}, \hyperpage{74}, \hyperpage{106}, + \hyperpage{114, 115}, \hyperpage{134}, \hyperpage{159}, + \hyperpage{197} + \item typewriter, turtle, \hyperpage{40} + \item typographical error, \hyperpage{131} + + \indexspace + + \item UML, \hyperpage{211}, \hyperpage{217} + \item unbounded, \hyperpage{203} + \item UnboundLocalError, \hyperpage{108} + \item underscore character, \hyperpage{13} + \item Unified Modeling Language, \hyperpage{211} + \item uniqueness, \hyperpage{98} + \item Unix command + \subitem ls, \hyperpage{138} + \item update, \hyperpage{64}, \hyperpage{66}, \hyperpage{69} + \subitem coordinate, \hyperpage{187} + \subitem database, \hyperpage{137} + \subitem global variable, \hyperpage{108} + \subitem histogram, \hyperpage{125} + \subitem item, \hyperpage{89} + \subitem slice, \hyperpage{90} + \item update method, \hyperpage{117} + \item update operator, \hyperpage{91} + \item URL, \hyperpage{141}, \hyperpage{191} + \item urllib module, \hyperpage{141}, \hyperpage{191} + \item use before def, \hyperpage{17}, \hyperpage{22} + \item user-defined type, \hyperpage{143}, \hyperpage{151} + + \indexspace + + \item value, \hyperpage{11}, \hyperpage{17}, \hyperpage{93, 94}, + \hyperpage{110} + \subitem default, \hyperpage{126} + \subitem tuple, \hyperpage{115} + \item ValueError, \hyperpage{47}, \hyperpage{104}, \hyperpage{114} + \item values method, \hyperpage{102} + \item variable, \hyperpage{12}, \hyperpage{17} + \subitem global, \hyperpage{108}, \hyperpage{212} + \subitem local, \hyperpage{24} + \subitem module-level, \hyperpage{212} + \subitem temporary, \hyperpage{51}, \hyperpage{60}, \hyperpage{199} + \subitem updating, \hyperpage{64} + \item variable-length argument tuple, \hyperpage{115} + \item vector graphics, \hyperpage{191} + \item veneer, \hyperpage{171}, \hyperpage{176} + \item Visual module, \hyperpage{166} + \item void function, \hyperpage{26}, \hyperpage{28} + \item void method, \hyperpage{90} + \item vorpal, \hyperpage{55} + \item vpython module, \hyperpage{166} + + \indexspace + + \item walk, directory, \hyperpage{135} + \item while loop, \hyperpage{64} + \item whitespace, \hyperpage{27}, \hyperpage{47}, \hyperpage{82}, + \hyperpage{140}, \hyperpage{194} + \item widget, \hyperpage{180}, \hyperpage{189} + \subitem Button, \hyperpage{180} + \subitem Canvas, \hyperpage{181} + \subitem Entry, \hyperpage{182} + \subitem Frame, \hyperpage{183} + \subitem Label, \hyperpage{180} + \subitem Menubutton, \hyperpage{185} + \subitem Text, \hyperpage{182} + \item widget, packing, \hyperpage{183} + \item word count, \hyperpage{139} + \item word frequency, \hyperpage{123}, \hyperpage{132} + \item word, reducible, \hyperpage{111}, \hyperpage{122} + \item working directory, \hyperpage{135} + \item World module, \hyperpage{149} + \item worst bug, \hyperpage{165} + \subitem ever, \hyperpage{190} + \item worst case, \hyperpage{202} + + \indexspace + + \item zero, index starting at, \hyperpage{71}, \hyperpage{88} + \item zip function, \hyperpage{116} + \subitem use with dict, \hyperpage{117} + \item Zipf's law, \hyperpage{132} + +\end{theindex} diff --git a/book/book.log b/book/book.log new file mode 100644 index 0000000..3224665 --- /dev/null +++ b/book/book.log @@ -0,0 +1,1166 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2018) (preloaded format=pdflatex 2018.5.10) 8 JUN 2018 22:47 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**book +(./book.tex +LaTeX2e <2018-04-01> patch level 2 +Babel <3.18> and hyphenation patterns for 84 language(s) loaded. +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/book.cls +Document Class: book 2014/09/29 v1.4h Standard LaTeX document class +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/bk10.clo +File: bk10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count80 +\c@chapter=\count81 +\c@section=\count82 +\c@subsection=\count83 +\c@subsubsection=\count84 +\c@paragraph=\count85 +\c@subparagraph=\count86 +\c@figure=\count87 +\c@table=\count88 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2018/03/24 v5.7 Page Geometry + +(/usr/local/texlive/2018/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch +) +(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/local/texlive/2018/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count89 +\Gm@cntv=\count90 +\c@Gm@tempcnt=\count91 +\Gm@bindingoffset=\dimen103 +\Gm@wd@mp=\dimen104 +\Gm@odd@mp=\dimen105 +\Gm@even@mp=\dimen106 +\Gm@layoutwidth=\dimen107 +\Gm@layoutheight=\dimen108 +\Gm@layouthoffset=\dimen109 +\Gm@layoutvoffset=\dimen110 +\Gm@dimlist=\toks15 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2017/04/05 v2.0i Standard LaTeX package + +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2017/04/05 v2.0i Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +)) +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2017/04/05 v2.0i Standard LaTeX package +Package textcomp Info: Sub-encoding information: +(textcomp) 5 = only ISO-Adobe without \textcurrency +(textcomp) 4 = 5 + \texteuro +(textcomp) 3 = 4 + \textohm +(textcomp) 2 = 3 + \textestimated + \textcurrency +(textcomp) 1 = TS1 - \textcircled - \t +(textcomp) 0 = TS1 (full) +(textcomp) Font families with sub-encoding setting implement +(textcomp) only a restricted character set as indicated. +(textcomp) Family '?' is the default used for unknown fonts. +(textcomp) See the documentation for details. +Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/ts1enc.def +File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file +Now handling font encoding TS1 ... +... processing UTF-8 mapping file for font encoding TS1 + +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/ts1enc.dfu +File: ts1enc.dfu 2018/04/05 v1.2c UTF-8 support for inputenc + defining Unicode char U+00A2 (decimal 162) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00A4 (decimal 164) + defining Unicode char U+00A5 (decimal 165) + defining Unicode char U+00A6 (decimal 166) + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00A8 (decimal 168) + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AC (decimal 172) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00AF (decimal 175) + defining Unicode char U+00B0 (decimal 176) + defining Unicode char U+00B1 (decimal 177) + defining Unicode char U+00B2 (decimal 178) + defining Unicode char U+00B3 (decimal 179) + defining Unicode char U+00B4 (decimal 180) + defining Unicode char U+00B5 (decimal 181) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+00B9 (decimal 185) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+00BC (decimal 188) + defining Unicode char U+00BD (decimal 189) + defining Unicode char U+00BE (decimal 190) + defining Unicode char U+00D7 (decimal 215) + defining Unicode char U+00F7 (decimal 247) + defining Unicode char U+0192 (decimal 402) + defining Unicode char U+02C7 (decimal 711) + defining Unicode char U+02D8 (decimal 728) + defining Unicode char U+02DD (decimal 733) + defining Unicode char U+0E3F (decimal 3647) + defining Unicode char U+2016 (decimal 8214) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+203B (decimal 8251) + defining Unicode char U+203D (decimal 8253) + defining Unicode char U+2044 (decimal 8260) + defining Unicode char U+204E (decimal 8270) + defining Unicode char U+2052 (decimal 8274) + defining Unicode char U+20A1 (decimal 8353) + defining Unicode char U+20A4 (decimal 8356) + defining Unicode char U+20A6 (decimal 8358) + defining Unicode char U+20A9 (decimal 8361) + defining Unicode char U+20AB (decimal 8363) + defining Unicode char U+20AC (decimal 8364) + defining Unicode char U+20B1 (decimal 8369) + defining Unicode char U+2103 (decimal 8451) + defining Unicode char U+2116 (decimal 8470) + defining Unicode char U+2117 (decimal 8471) + defining Unicode char U+211E (decimal 8478) + defining Unicode char U+2120 (decimal 8480) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2126 (decimal 8486) + defining Unicode char U+2127 (decimal 8487) + defining Unicode char U+212E (decimal 8494) + defining Unicode char U+2190 (decimal 8592) + defining Unicode char U+2191 (decimal 8593) + defining Unicode char U+2192 (decimal 8594) + defining Unicode char U+2193 (decimal 8595) + defining Unicode char U+2329 (decimal 9001) + defining Unicode char U+232A (decimal 9002) + defining Unicode char U+2422 (decimal 9250) + defining Unicode char U+25E6 (decimal 9702) + defining Unicode char U+25EF (decimal 9711) + defining Unicode char U+266A (decimal 9834) + defining Unicode char U+FEFF (decimal 65279) +)) +LaTeX Info: Redefining \oldstylenums on input line 334. +Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349. +Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350. +Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351. +Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352. +Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353. +Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354. +Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355. +Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356. +Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357. +Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358. +Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359. +Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360. +Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361. +Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362. +Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363. +Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364. +Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365. +Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366. +Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367. +Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368. +Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369. +Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370. +Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371. +Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372. + +Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373. +Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374. +Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375. +Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376. +Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377. +Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378. +Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379. +Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380. +Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381. +Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382. +Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383. +Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384. +Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385. +Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386. +Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387. +Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388. +Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389. +Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390. +Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391. +Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392. +Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393. +Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394. +Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395. +Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396. +Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397. +Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398. +Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399. +Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400. +Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401. +Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402. +Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403. +Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404. +Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405. +Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406. +Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407. +Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408. +Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409. +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/mathpazo.sty +Package: mathpazo 2005/04/12 PSNFSS-v9.2a Palatino w/ Pazo Math (D.Puga, WaS) +\symupright=\mathgroup4 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2017/06/30 v3.9a Extensive control of page headers and footer +s +\f@nch@headwidth=\skip43 +\f@nch@O@elh=\skip44 +\f@nch@O@erh=\skip45 +\f@nch@O@olh=\skip46 +\f@nch@O@orh=\skip47 +\f@nch@O@elf=\skip48 +\f@nch@O@erf=\skip49 +\f@nch@O@olf=\skip50 +\f@nch@O@orf=\skip51 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2018/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2018/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 99. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen111 +\Gin@req@width=\dimen112 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2017/09/02 v2.17a AMS math features +\@mathmargin=\skip52 + +For additional information on amsmath, use the `?' option. +(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks16 +\ex@=\dimen113 +)) +(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen114 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2016/03/08 v2.02 operator names +) +\inf@bad=\count92 +LaTeX Info: Redefining \frac on input line 213. +\uproot@=\count93 +\leftroot@=\count94 +LaTeX Info: Redefining \overline on input line 375. +\classnum@=\count95 +\DOTSCASE@=\count96 +LaTeX Info: Redefining \ldots on input line 472. +LaTeX Info: Redefining \dots on input line 475. +LaTeX Info: Redefining \cdots on input line 596. +\Mathstrutbox@=\box26 +\strutbox@=\box27 +\big@size=\dimen115 +LaTeX Font Info: Redeclaring font encoding OML on input line 712. +LaTeX Font Info: Redeclaring font encoding OMS on input line 713. +\macc@depth=\count97 +\c@MaxMatrixCols=\count98 +\dotsspace@=\muskip11 +\c@parentequation=\count99 +\dspbrk@lvl=\count100 +\tag@help=\toks17 +\row@=\count101 +\column@=\count102 +\maxfields@=\count103 +\andhelp@=\toks18 +\eqnshift@=\dimen116 +\alignsep@=\dimen117 +\tagshift@=\dimen118 +\tagwidth@=\dimen119 +\totwidth@=\dimen120 +\lineht@=\dimen121 +\@envbody=\toks19 +\multlinegap=\skip53 +\multlinetaggap=\skip54 +\mathdisplay@stack=\toks20 +LaTeX Info: Redefining \[ on input line 2817. +LaTeX Info: Redefining \] on input line 2818. +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/amscls/amsthm.sty +Package: amsthm 2017/10/31 v2.20.4 +\thm@style=\toks21 +\thm@bodyfont=\toks22 +\thm@headfont=\toks23 +\thm@notefont=\toks24 +\thm@headpunct=\toks25 +\thm@preskip=\skip55 +\thm@postskip=\skip56 +\thm@headsep=\skip57 +\dth@everypar=\toks26 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/exercise/exercise.sty +Package: exercise 2014/10/20 v1.6 Exercise package (P.Pichaureau) + +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +\ExerciseSkipBefore=\skip58 +\ExerciseSkipAfter=\skip59 +\AnswerSkipBefore=\skip60 +\AnswerSkipAfter=\skip61 +\Exesep=\skip62 +\Exetopsep=\skip63 +\Exeparsep=\skip64 +\Exepartopsep=\skip65 +\Exeleftmargin=\skip66 +\Exerightmargin=\skip67 +\Exelabelwidth=\skip68 +\Exelabelsep=\skip69 +\ExerciseBefore=\skip70 +\QuestionBefore=\skip71 +\subQuestionBefore=\skip72 +\subsubQuestionBefore=\skip73 +\QuestionIndent=\skip74 +\subQuestionIndent=\skip75 +\subsubQuestionIndent=\skip76 +\c@Exercise=\count104 +\c@Answer=\count105 +\c@ExePart=\count106 +\c@Question=\count107 +\c@subQuestion=\count108 +\c@subsubQuestion=\count109 +\c@savedQuestion=\count110 +\c@savedsubQuestion=\count111 +\c@savedsubsubQuestion=\count112 +\@QuestionLevel=\count113 +\@Exercisebox=\box28 +\all@Exercisebox=\box29 +\temp@Exercisebox=\box30 +\all@Answerbox=\box31 +\temp@Answerbox=\box32 +\ExerciseDifficulty=\count114 +\QuestionDifficulty=\count115 +\subQuestionDifficulty=\count116 +\subsubQuestionDifficulty=\count117 +\ExePartDifficulty=\count118 +\@Answerbox=\box33 +\colonnesLevel=\count119 +\tempskipa=\skip77 +\tempskipb=\skip78 +\@savedmathindent=\skip79 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/makeidx.sty +Package: makeidx 2014/09/29 v1.0m Standard LaTeX package +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/setspace/setspace.sty +Package: setspace 2011/12/19 v6.7a set line spacing +) +(./hevea.sty +Package: hevea 2002/01/11 + (/usr/local/texlive/2018/texmf-dist/tex/latex/comment/comment.sty +\CommentStream=\write3 + +Excluding comment 'comment') +\c@cuttingdepth=\count120 + Excluding comment 'rawhtml' +Excluding comment 'htmlonly' +\@bgcolorbin=\box34 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/appendix/appendix.sty +Package: appendix 2009/09/02 v1.2b extra appendix facilities +\c@@pps=\count121 +\c@@ppsavesec=\count122 +\c@@ppsaveapp=\count123 +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2018/02/06 v6.86b Hypertext links for LaTeX + +(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO) + + +(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO) +Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO) +Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) +Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) +Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) +Package: pdftexcmds 2018/01/30 v0.27 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO +) +Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO) +Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO) +Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO) +Package: xcolor-patch 2016/05/16 xcolor patch +Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO) +Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO) +Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO) +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO) +) +(/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) +) +\@linkdim=\dimen122 +\Hy@linkcounter=\count124 +\Hy@pagecounter=\count125 + +(/usr/local/texlive/2018/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2018/02/06 v6.86b Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +\Hy@SavedSpaceFactor=\count126 + +(/usr/local/texlive/2018/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Option `bookmarks' set `true' on input line 4383. +Package hyperref Info: Hyper figures OFF on input line 4509. +Package hyperref Info: Link nesting OFF on input line 4514. +Package hyperref Info: Hyper index ON on input line 4517. +Package hyperref Info: Plain pages OFF on input line 4524. +Package hyperref Info: Backreferencing OFF on input line 4529. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4762. +\c@Hy@tempcnt=\count127 +LaTeX Info: Redefining \url on input line 5115. +\XeTeXLinkMargin=\dimen123 +\Fld@menulength=\count128 +\Field@Width=\dimen124 +\Fld@charsize=\dimen125 +Package hyperref Info: Hyper figures OFF on input line 6369. +Package hyperref Info: Link nesting OFF on input line 6374. +Package hyperref Info: Hyper index ON on input line 6377. +Package hyperref Info: backreferencing OFF on input line 6384. +Package hyperref Info: Link coloring OFF on input line 6389. +Package hyperref Info: Link coloring with OCG OFF on input line 6394. +Package hyperref Info: PDF/A mode OFF on input line 6399. +LaTeX Info: Redefining \ref on input line 6439. +LaTeX Info: Redefining \pageref on input line 6443. +\Hy@abspage=\count129 +\c@Item=\count130 +\c@Hfootnote=\count131 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2018/02/06 v6.86b Hyperref driver for pdfTeX +\Fld@listcount=\count132 +\c@bookmark@seq@number=\count133 + +(/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip80 +) +\@indexfile=\write4 +\openout4 = `book.idx'. + + +Writing index file book.idx +(./book.aux) +\openout1 = `book.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 55. +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 55. +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 55. +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 55. +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 55. +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 55. +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 55. +LaTeX Font Info: Try loading font information for TS1+cmr on input line 55. + (/usr/local/texlive/2018/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 55. +LaTeX Font Info: ... okay on input line 55. +LaTeX Font Info: Try loading font information for T1+ppl on input line 55. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/t1ppl.fd +File: t1ppl.fd 2001/06/04 font definitions for T1/ppl. +) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* hratio: 3:2 +* vratio: 1:1 +* modes: twoside +* h-part:(L,W,R)=(130.086pt, 397.48499pt, 86.72401pt) +* v-part:(T,H,B)=(90.3375pt, 614.295pt, 90.3375pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=397.48499pt +* \textheight=614.295pt +* \oddsidemargin=57.81601pt +* \evensidemargin=14.45403pt +* \topmargin=-11.99998pt +* \headheight=12.0pt +* \headsep=18.06749pt +* \topskip=10.0pt +* \footskip=25.29494pt +* \marginparwidth=125.0pt +* \marginparsep=7.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidetrue +* \@mparswitchtrue +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +(/usr/local/texlive/2018/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count134 +\scratchdimen=\dimen126 +\scratchbox=\box35 +\nofMPsegments=\count135 +\nofMParguments=\count136 +\everyMPshowfont=\toks27 +\MPscratchCnt=\count137 +\MPscratchDim=\dimen127 +\MPnumerator=\count138 +\makeMPintoPDFobject=\count139 +\everyMPtoPDFconversion=\toks28 +) (/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf + +(/usr/local/texlive/2018/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) +) +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +38. +Package grfext Info: Graphics extension search list: +(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 456. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +\AtBeginShipoutBox=\box36 +Package hyperref Info: Link coloring OFF on input line 55. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section + +(/usr/local/texlive/2018/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO) +) +\c@section@level=\count140 +) +LaTeX Info: Redefining \ref on input line 55. +LaTeX Info: Redefining \pageref on input line 55. +LaTeX Info: Redefining \nameref on input line 55. + +(./book.out) (./book.out) +\@outlinefile=\write5 +\openout5 = `book.out'. + +\c@exercise=\count141 + (./latexonly) [1 + + +{/usr/local/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2] [3] +LaTeX Font Info: Try loading font information for TS1+ppl on input line 166. + + +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/ts1ppl.fd +File: ts1ppl.fd 2001/06/04 font definitions for TS1/ppl. +) +LaTeX Font Info: Try loading font information for T1+cmtt on input line 179. + + +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/t1cmtt.fd +File: t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Try loading font information for OT1+ppl on input line 179. + + +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/ot1ppl.fd +File: ot1ppl.fd 2001/06/04 font definitions for OT1/ppl. +) +LaTeX Font Info: Try loading font information for OML+zplm on input line 179 +. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omlzplm.fd +File: omlzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OML/zplm. +) +LaTeX Font Info: Try loading font information for OMS+zplm on input line 179 +. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omszplm.fd +File: omszplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMS/zplm. +) +LaTeX Font Info: Try loading font information for OMX+zplm on input line 179 +. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/omxzplm.fd +File: omxzplm.fd 2002/09/08 Fontinst v1.914 font definitions for OMX/zplm. +) +LaTeX Font Info: Try loading font information for OT1+zplm on input line 179 +. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/psnfss/ot1zplm.fd +File: ot1zplm.fd 2002/09/08 Fontinst v1.914 font definitions for OT1/zplm. +) +Excluding 'htmlonly' comment. [4] +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <24.88> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 218. +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <14.4> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 220. + [5 + +] +Underfull \hbox (badness 10000) in paragraph at lines 317--319 + + [] + +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <10> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 364. +[6] [7] [8] [9] [10] [11] [12 + +] (./book.toc [13 + +] [14] [15] [16] [17] [18] +[19] [20]) +\tf@toc=\write6 +\openout6 = `book.toc'. + + [21] [22 + +] +Chapter 1. +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <20.74> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 737. +[1 + + +] + +File: figs/interpret.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/interpret.pdf used on input line 807. +(pdftex.def) Requested size: 237.58542pt x 55.10533pt. + +File: figs/compile.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/compile.pdf used on input line 822. +(pdftex.def) Requested size: 347.79616pt x 55.10533pt. + [2 <./figs/interpret.pdf> <./figs/compile.pdf>] +LaTeX Font Info: Font shape `T1/ppl/bx/n' in size <12> not available +(Font) Font shape `T1/ppl/b/n' tried instead on input line 922. + [3] [4] [5] +LaTeX Font Info: Try loading font information for TS1+cmtt on input line 116 +4. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/ts1cmtt.fd +File: ts1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) [6] [7] [8] +[9] [10 + +] +Chapter 2. +[11] + +File: figs/state2.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/state2.pdf used on input line 1527. +(pdftex.def) Requested size: 250.53633pt x 48.18005pt. + [12 <./figs/state2.pdf>] [13] [14] +Underfull \hbox (badness 1178) in paragraph at lines 1778--1782 +[]\T1/ppl/b/n/10 M\T1/ppl/m/n/10 ultiplication and \T1/ppl/b/n/10 D\T1/ppl/m/n/ +10 ivision have the same prece-dence, which is higher than + [] + +[15] [16] [17] [18] +Chapter 3. +[19 + +] [20] [21] [22] [23] [24] + +File: figs/stack.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/stack.pdf used on input line 2610. +(pdftex.def) Requested size: 223.2343pt x 113.22314pt. + [25 <./figs/stack.pdf>] [26] [27] [28] [29] +[30] +Chapter 4. +[31 + +] [32] [33] [34] [35] [36] [37] [38] + +File: figs/flowers.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/flowers.pdf used on input line 3718. +(pdftex.def) Requested size: 211.99228pt x 82.70909pt. + +Underfull \hbox (badness 10000) in paragraph at lines 3729--3731 +[]\T1/ppl/m/it/10 Solution: []$\T1/cmtt/m/it/10 http : / / thinkpython . com / +code / flower . py$[]\T1/ppl/m/it/10 , also re-quires []$\T1/cmtt/m/it/10 http +: + [] + + +File: figs/pies.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/pies.pdf used on input line 3736. +(pdftex.def) Requested size: 176.66022pt x 57.81606pt. +[39 <./figs/flowers.pdf> <./figs/pies.pdf>] +Underfull \hbox (badness 10000) in paragraph at lines 3769--3771 +[]\T1/ppl/m/it/10 Solution: []$\T1/cmtt/m/it/10 http : / / thinkpython . com / +code / letters . py$[]\T1/ppl/m/it/10 , also re-quires []$\T1/cmtt/m/it/10 http + : + [] + +[40] +Chapter 5. +[41 + +] [42] [43] [44] + +File: figs/stack2.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/stack2.pdf used on input line 4186. +(pdftex.def) Requested size: 111.61714pt x 120.45015pt. + [45] +LaTeX Font Info: Try loading font information for T1+cmss on input line 4265 +. + +(/usr/local/texlive/2018/texmf-dist/tex/latex/base/t1cmss.fd +File: t1cmss.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) [46 <./figs/stack2.pdf>] [47] [48] [49] + +File: figs/koch.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/koch.pdf used on input line 4565. +(pdftex.def) Requested size: 207.17426pt x 62.63406pt. + [50 <./figs/koch.pdf>] +Chapter 6. +[51 + +] [52] [53] +Underfull \hbox (badness 1490) in paragraph at lines 4935--4938 +\T1/ppl/m/n/10 It is com-mon to give boolean func-tions names that sound like y +es/no ques-tions; + [] + +[54] [55] + +File: figs/stack3.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/stack3.pdf used on input line 5116. +(pdftex.def) Requested size: 256.96034pt x 120.45015pt. + [56] [57 <./figs/stack3.pdf>] [58] [59] [60] [61] [62] +Chapter 7. + +File: figs/assign2.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/assign2.pdf used on input line 5592. +(pdftex.def) Requested size: 62.63406pt x 33.72603pt. +[63 + +] [64 <./figs/assign2.pdf>] [65] [66] [67] [68] [69] [70] +Chapter 8. +[71 + +] [72] + +File: figs/banana.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/banana.pdf used on input line 6321. +(pdftex.def) Requested size: 156.58519pt x 41.75604pt. + [73 <./figs/banana.pdf>] [74] [75] +Underfull \hbox (badness 10000) in paragraph at lines 6588--6593 +[]\T1/ppl/m/it/10 The doc-u-men-ta-tion uses a syn-tax that might be con-fus-in +g. For ex-am-ple, in + [] + +[76] [77] + +File: figs/state4.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/state4.pdf used on input line 6779. +(pdftex.def) Requested size: 196.73524pt x 44.96805pt. + [78 <./figs/state4.pdf>] [79] [80] +Chapter 9. +[81 + +] [82] [83] [84] [85] +Underfull \hbox (badness 1975) in paragraph at lines 7430--7436 +[]\T1/ppl/b/n/10 Exercise 9.8. \T1/ppl/m/it/10 Here's an-other \T1/ppl/m/n/10 C +ar Talk \T1/ppl/m/it/10 Puz-zler ([]$\T1/cmtt/m/it/10 http : / / www . cartalk +. com / content / + [] + +[86] +Chapter 10. +[87 + +] + +File: figs/liststate.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/liststate.pdf used on input line 7594. +(pdftex.def) Requested size: 175.05423pt x 163.8122pt. + [88 <./figs/liststate.pdf>] [89] [90] [91] [92] + +File: figs/list1.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/list1.pdf used on input line 8160. +(pdftex.def) Requested size: 175.05423pt x 33.72603pt. + [93] + +File: figs/list2.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/list2.pdf used on input line 8200. +(pdftex.def) Requested size: 77.08807pt x 33.72603pt. + +File: figs/list3.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/list3.pdf used on input line 8244. +(pdftex.def) Requested size: 77.08807pt x 33.72603pt. + [94 <./figs/list1.pdf> <./figs/list2.pdf>] + +File: figs/stack5.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/stack5.pdf used on input line 8319. +(pdftex.def) Requested size: 193.52325pt x 59.42207pt. + [95 <./figs/list3.pdf> <./figs/stack5.pdf>] [96] [97] +[98] [99] [100 + +] +Chapter 11. +[101] [102] [103] [104] + +File: figs/dict1.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/dict1.pdf used on input line 9145. +(pdftex.def) Requested size: 254.55133pt x 109.20813pt. + [105] [106 <./figs/dict1.pdf>] + +File: figs/fibonacci.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/fibonacci.pdf used on input line 9223. +(pdftex.def) Requested size: 216.40701pt x 153.17119pt. + [107 <./figs/fibonacci.pdf>] [108] [109] [110] [111] [112 + +] +Chapter 12. +[113] [114] [115] [116] [117] + +File: figs/tuple1.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/tuple1.pdf used on input line 10183. +(pdftex.def) Requested size: 99.57213pt x 44.96805pt. + +File: figs/dict2.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/dict2.pdf used on input line 10194. +(pdftex.def) Requested size: 188.70525pt x 101.98112pt. + [118 <./figs/tuple1.pdf> <./figs/dict2.pdf>] +[119] [120] +Underfull \hbox (badness 1577) in paragraph at lines 10539--10541 +[]\T1/ppl/b/n/10 Exercise 12.6. \T1/ppl/m/it/10 Here's an-other Car Talk Puz-zl +er ([]$\T1/cmtt/m/it/10 http : / / www . cartalk . com / content / + [] + +[121] [122] +Chapter 13. +[123 + +] [124] +Underfull \hbox (badness 1430) in paragraph at lines 10813--10818 +[][][]\T1/cmtt/m/n/10 process_file []\T1/ppl/m/n/10 loops through the lines of +the file, pass-ing them one at a time to + [] + +[125] [126] [127] +Underfull \hbox (badness 10000) in paragraph at lines 11092--11101 + + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 11092--11101 + + [] + +[128] [129] [130] [131] [132] +Chapter 14. +[133 + +] [134] [135] [136] [137] [138] [139] [140] [141] [142 + +] +Chapter 15. +[143] + +File: figs/point.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/point.pdf used on input line 12470. +(pdftex.def) Requested size: 99.57213pt x 44.16504pt. + [144 <./figs/point.pdf>] [145] + +File: figs/rectangle.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/rectangle.pdf used on input line 12597. +(pdftex.def) Requested size: 175.85722pt x 59.42207pt. + [146 <./figs/rectangle.pdf>] [147] + +File: figs/rectangle2.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/rectangle2.pdf used on input line 12757. +(pdftex.def) Requested size: 297.1104pt x 48.18005pt. + +Underfull \hbox (badness 2818) in paragraph at lines 12772--12778 +[]\T1/ppl/m/n/10 For most ap-pli-ca-tions, this is not what you want. In this e +x-am-ple, in-vok-ing + [] + +[148 <./figs/rectangle2.pdf>] [149] [150] +Chapter 16. + +File: figs/time.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/time.pdf used on input line 13061. +(pdftex.def) Requested size: 111.61714pt x 58.61905pt. +[151 + +] [152 <./figs/time.pdf>] [153] [154] [155] [156] +Chapter 17. +[157 + +] [158] [159] [160] [161] [162] [163] [164] +Underfull \hbox (badness 1824) in paragraph at lines 14248--14250 +[]\T1/ppl/m/it/10 A method named [][]\T1/cmtt/m/n/10 put_in_pouch []\T1/ppl/m/i +t/10 that takes an ob-ject of any type and adds it to + [] + +[165] [166] +Chapter 18. +[167 + +] [168] + +File: figs/card1.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/card1.pdf used on input line 14516. +(pdftex.def) Requested size: 155.7822pt x 124.46515pt. + [169 <./figs/card1.pdf>] [170] [171] [172] [173] + +File: figs/class1.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/class1.pdf used on input line 14956. +(pdftex.def) Requested size: 120.45015pt x 69.86108pt. + [174 <./figs/class1.pdf>] [175] [176] [177] [178] +Chapter 19. +[179 + +] [180] [181] [182] + +File: figs/TurtleWorld.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/TurtleWorld.pdf used on input line 15776. +(pdftex.def) Requested size: 298.61488pt x 216.3076pt. + +Underfull \hbox (badness 4846) in paragraph at lines 15782--15785 +[]\T1/ppl/m/n/10 This sec-tion presents the code that cre-ates this GUI, bro-ke +n into a se-ries of + [] + +[183] [184 <./figs/TurtleWorld.pdf>] [185] [186] [187] [188] [189] [190] +[191] [192 + +] +Appendix A. +[193] [194] [195] [196] [197] [198] [199] [200] +Appendix B. +[201 + +] [202] [203] +Underfull \hbox (badness 1400) in paragraph at lines 17405--17412 +[]\T1/cmtt/m/n/10 keys\T1/ppl/m/n/10 , \T1/cmtt/m/n/10 values \T1/ppl/m/n/10 an +d \T1/cmtt/m/n/10 items \T1/ppl/m/n/10 are lin-ear be-cause they re-turn new li +sts; \T1/cmtt/m/n/10 iterkeys\T1/ppl/m/n/10 , + [] + +[204] [205] [206] [207] [208] + +File: figs/towers.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/towers.pdf used on input line 17738. +(pdftex.def) Requested size: 659.46213pt x 158.59209pt. + [209 <./figs/towers.pdf>] [210 + +] +Appendix C. + +File: figs/lumpydemo1.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo1.pdf used on input line 17829. +(pdftex.def) Requested size: 161.60263pt x 63.23581pt. +[211] + +File: figs/lumpydemo2.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo2.pdf used on input line 17890. +(pdftex.def) Requested size: 222.02797pt x 21.07858pt. + [212 <./figs/lumpydemo1.pdf> <./figs/lumpydemo2.pdf>] + +File: figs/lumpydemo3.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo3.pdf used on input line 17938. +(pdftex.def) Requested size: 117.33755pt x 130.68735pt. + [213 <./figs/lumpydemo3.pdf>] + +File: figs/lumpydemo4.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo4.pdf used on input line 17970. +(pdftex.def) Requested size: 122.2559pt x 215.00177pt. + +File: figs/lumpydemo5.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo5.pdf used on input line 17998. +(pdftex.def) Requested size: 132.79521pt x 151.76596pt. + [214 <./figs/lumpydemo4.pdf>] + +File: figs/lumpydemo6.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo6.pdf used on input line 18042. +(pdftex.def) Requested size: 259.96947pt x 67.45152pt. + [215 <./figs/lumpydemo5.pdf> <./figs/lumpydemo6.pdf>] + +File: figs/lumpydemo7.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo7.pdf used on input line 18104. +(pdftex.def) Requested size: 134.90306pt x 97.6642pt. + +File: figs/lumpydemo8.pdf Graphic file (type pdf) + +Package pdftex.def Info: figs/lumpydemo8.pdf used on input line 18111. +(pdftex.def) Requested size: 279.64284pt x 222.73059pt. + [216 <./figs/lumpydemo7.pdf>] [217 <./figs/lumpydemo8.pdf>] +(./book.ind [218] [219 + +] [220] [221] [222] [223] [224] [225] [226] [227] +[228] [229] [230]) +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 18204. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 18204. + (./book.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 18204. + +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 18204 +. +Package rerunfilecheck Info: File `book.out' has not changed. +(rerunfilecheck) Checksum: FB5564D7F167707CFAA0C183DD791DC5;15613. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 18204. + ) +Here is how much of TeX's memory you used: + 9379 strings out of 492649 + 133181 string characters out of 6129607 + 224269 words of memory out of 5000000 + 12225 multiletter control sequences out of 15000+600000 + 51021 words of font info for 108 fonts, out of 8000000 for 9000 + 1141 hyphenation exceptions out of 8191 + 29i,12n,43p,230b,604s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/local/texlive/2018/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc} +{/usr/local/texlive/2018/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc}{ +/usr/local/texlive/2018/texmf-dist/fonts/enc/dvips/base/8r.enc} +Output written on book.pdf (252 pages, 1015556 bytes). +PDF statistics: + 5423 PDF objects out of 6186 (max. 8388607) + 5031 compressed objects within 51 object streams + 835 named destinations out of 1000 (max. 500000) + 2178 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/book/book.out b/book/book.out new file mode 100644 index 0000000..b65c7e7 --- /dev/null +++ b/book/book.out @@ -0,0 +1,249 @@ +\BOOKMARK [0][-]{chapter*.1}{Preface}{}% 1 +\BOOKMARK [0][-]{chapter.1}{The way of the program}{}% 2 +\BOOKMARK [1][-]{section.1.1}{The Python programming language}{chapter.1}% 3 +\BOOKMARK [1][-]{section.1.2}{What is a program?}{chapter.1}% 4 +\BOOKMARK [1][-]{section.1.3}{What is debugging?}{chapter.1}% 5 +\BOOKMARK [1][-]{section.1.4}{Formal and natural languages}{chapter.1}% 6 +\BOOKMARK [1][-]{section.1.5}{The first program}{chapter.1}% 7 +\BOOKMARK [1][-]{section.1.6}{Debugging}{chapter.1}% 8 +\BOOKMARK [1][-]{section.1.7}{Glossary}{chapter.1}% 9 +\BOOKMARK [1][-]{section.1.8}{Exercises}{chapter.1}% 10 +\BOOKMARK [0][-]{chapter.2}{Variables, expressions and statements}{}% 11 +\BOOKMARK [1][-]{section.2.1}{Values and types}{chapter.2}% 12 +\BOOKMARK [1][-]{section.2.2}{Variables}{chapter.2}% 13 +\BOOKMARK [1][-]{section.2.3}{Variable names and keywords}{chapter.2}% 14 +\BOOKMARK [1][-]{section.2.4}{Operators and operands}{chapter.2}% 15 +\BOOKMARK [1][-]{section.2.5}{Expressions and statements}{chapter.2}% 16 +\BOOKMARK [1][-]{section.2.6}{Interactive mode and script mode}{chapter.2}% 17 +\BOOKMARK [1][-]{section.2.7}{Order of operations}{chapter.2}% 18 +\BOOKMARK [1][-]{section.2.8}{String operations}{chapter.2}% 19 +\BOOKMARK [1][-]{section.2.9}{Comments}{chapter.2}% 20 +\BOOKMARK [1][-]{section.2.10}{Debugging}{chapter.2}% 21 +\BOOKMARK [1][-]{section.2.11}{Glossary}{chapter.2}% 22 +\BOOKMARK [1][-]{section.2.12}{Exercises}{chapter.2}% 23 +\BOOKMARK [0][-]{chapter.3}{Functions}{}% 24 +\BOOKMARK [1][-]{section.3.1}{Function calls}{chapter.3}% 25 +\BOOKMARK [1][-]{section.3.2}{Type conversion functions}{chapter.3}% 26 +\BOOKMARK [1][-]{section.3.3}{Math functions}{chapter.3}% 27 +\BOOKMARK [1][-]{section.3.4}{Composition}{chapter.3}% 28 +\BOOKMARK [1][-]{section.3.5}{Adding new functions}{chapter.3}% 29 +\BOOKMARK [1][-]{section.3.6}{Definitions and uses}{chapter.3}% 30 +\BOOKMARK [1][-]{section.3.7}{Flow of execution}{chapter.3}% 31 +\BOOKMARK [1][-]{section.3.8}{Parameters and arguments}{chapter.3}% 32 +\BOOKMARK [1][-]{section.3.9}{Variables and parameters are local}{chapter.3}% 33 +\BOOKMARK [1][-]{section.3.10}{Stack diagrams}{chapter.3}% 34 +\BOOKMARK [1][-]{section.3.11}{Fruitful functions and void functions}{chapter.3}% 35 +\BOOKMARK [1][-]{section.3.12}{Why functions?}{chapter.3}% 36 +\BOOKMARK [1][-]{section.3.13}{Importing with from}{chapter.3}% 37 +\BOOKMARK [1][-]{section.3.14}{Debugging}{chapter.3}% 38 +\BOOKMARK [1][-]{section.3.15}{Glossary}{chapter.3}% 39 +\BOOKMARK [1][-]{section.3.16}{Exercises}{chapter.3}% 40 +\BOOKMARK [0][-]{chapter.4}{Case study: interface design}{}% 41 +\BOOKMARK [1][-]{section.4.1}{TurtleWorld}{chapter.4}% 42 +\BOOKMARK [1][-]{section.4.2}{Simple repetition}{chapter.4}% 43 +\BOOKMARK [1][-]{section.4.3}{Exercises}{chapter.4}% 44 +\BOOKMARK [1][-]{section.4.4}{Encapsulation}{chapter.4}% 45 +\BOOKMARK [1][-]{section.4.5}{Generalization}{chapter.4}% 46 +\BOOKMARK [1][-]{section.4.6}{Interface design}{chapter.4}% 47 +\BOOKMARK [1][-]{section.4.7}{Refactoring}{chapter.4}% 48 +\BOOKMARK [1][-]{section.4.8}{A development plan}{chapter.4}% 49 +\BOOKMARK [1][-]{section.4.9}{docstring}{chapter.4}% 50 +\BOOKMARK [1][-]{section.4.10}{Debugging}{chapter.4}% 51 +\BOOKMARK [1][-]{section.4.11}{Glossary}{chapter.4}% 52 +\BOOKMARK [1][-]{section.4.12}{Exercises}{chapter.4}% 53 +\BOOKMARK [0][-]{chapter.5}{Conditionals and recursion}{}% 54 +\BOOKMARK [1][-]{section.5.1}{Modulus operator}{chapter.5}% 55 +\BOOKMARK [1][-]{section.5.2}{Boolean expressions}{chapter.5}% 56 +\BOOKMARK [1][-]{section.5.3}{Logical operators}{chapter.5}% 57 +\BOOKMARK [1][-]{section.5.4}{Conditional execution}{chapter.5}% 58 +\BOOKMARK [1][-]{section.5.5}{Alternative execution}{chapter.5}% 59 +\BOOKMARK [1][-]{section.5.6}{Chained conditionals}{chapter.5}% 60 +\BOOKMARK [1][-]{section.5.7}{Nested conditionals}{chapter.5}% 61 +\BOOKMARK [1][-]{section.5.8}{Recursion}{chapter.5}% 62 +\BOOKMARK [1][-]{section.5.9}{Stack diagrams for recursive functions}{chapter.5}% 63 +\BOOKMARK [1][-]{section.5.10}{Infinite recursion}{chapter.5}% 64 +\BOOKMARK [1][-]{section.5.11}{Keyboard input}{chapter.5}% 65 +\BOOKMARK [1][-]{section.5.12}{Debugging}{chapter.5}% 66 +\BOOKMARK [1][-]{section.5.13}{Glossary}{chapter.5}% 67 +\BOOKMARK [1][-]{section.5.14}{Exercises}{chapter.5}% 68 +\BOOKMARK [0][-]{chapter.6}{Fruitful functions}{}% 69 +\BOOKMARK [1][-]{section.6.1}{Return values}{chapter.6}% 70 +\BOOKMARK [1][-]{section.6.2}{Incremental development}{chapter.6}% 71 +\BOOKMARK [1][-]{section.6.3}{Composition}{chapter.6}% 72 +\BOOKMARK [1][-]{section.6.4}{Boolean functions}{chapter.6}% 73 +\BOOKMARK [1][-]{section.6.5}{More recursion}{chapter.6}% 74 +\BOOKMARK [1][-]{section.6.6}{Leap of faith}{chapter.6}% 75 +\BOOKMARK [1][-]{section.6.7}{One more example}{chapter.6}% 76 +\BOOKMARK [1][-]{section.6.8}{Checking types}{chapter.6}% 77 +\BOOKMARK [1][-]{section.6.9}{Debugging}{chapter.6}% 78 +\BOOKMARK [1][-]{section.6.10}{Glossary}{chapter.6}% 79 +\BOOKMARK [1][-]{section.6.11}{Exercises}{chapter.6}% 80 +\BOOKMARK [0][-]{chapter.7}{Iteration}{}% 81 +\BOOKMARK [1][-]{section.7.1}{Multiple assignment}{chapter.7}% 82 +\BOOKMARK [1][-]{section.7.2}{Updating variables}{chapter.7}% 83 +\BOOKMARK [1][-]{section.7.3}{The while statement}{chapter.7}% 84 +\BOOKMARK [1][-]{section.7.4}{break}{chapter.7}% 85 +\BOOKMARK [1][-]{section.7.5}{Square roots}{chapter.7}% 86 +\BOOKMARK [1][-]{section.7.6}{Algorithms}{chapter.7}% 87 +\BOOKMARK [1][-]{section.7.7}{Debugging}{chapter.7}% 88 +\BOOKMARK [1][-]{section.7.8}{Glossary}{chapter.7}% 89 +\BOOKMARK [1][-]{section.7.9}{Exercises}{chapter.7}% 90 +\BOOKMARK [0][-]{chapter.8}{Strings}{}% 91 +\BOOKMARK [1][-]{section.8.1}{A string is a sequence}{chapter.8}% 92 +\BOOKMARK [1][-]{section.8.2}{len}{chapter.8}% 93 +\BOOKMARK [1][-]{section.8.3}{Traversal with a for loop}{chapter.8}% 94 +\BOOKMARK [1][-]{section.8.4}{String slices}{chapter.8}% 95 +\BOOKMARK [1][-]{section.8.5}{Strings are immutable}{chapter.8}% 96 +\BOOKMARK [1][-]{section.8.6}{Searching}{chapter.8}% 97 +\BOOKMARK [1][-]{section.8.7}{Looping and counting}{chapter.8}% 98 +\BOOKMARK [1][-]{section.8.8}{String methods}{chapter.8}% 99 +\BOOKMARK [1][-]{section.8.9}{The in operator}{chapter.8}% 100 +\BOOKMARK [1][-]{section.8.10}{String comparison}{chapter.8}% 101 +\BOOKMARK [1][-]{section.8.11}{Debugging}{chapter.8}% 102 +\BOOKMARK [1][-]{section.8.12}{Glossary}{chapter.8}% 103 +\BOOKMARK [1][-]{section.8.13}{Exercises}{chapter.8}% 104 +\BOOKMARK [0][-]{chapter.9}{Case study: word play}{}% 105 +\BOOKMARK [1][-]{section.9.1}{Reading word lists}{chapter.9}% 106 +\BOOKMARK [1][-]{section.9.2}{Exercises}{chapter.9}% 107 +\BOOKMARK [1][-]{section.9.3}{Search}{chapter.9}% 108 +\BOOKMARK [1][-]{section.9.4}{Looping with indices}{chapter.9}% 109 +\BOOKMARK [1][-]{section.9.5}{Debugging}{chapter.9}% 110 +\BOOKMARK [1][-]{section.9.6}{Glossary}{chapter.9}% 111 +\BOOKMARK [1][-]{section.9.7}{Exercises}{chapter.9}% 112 +\BOOKMARK [0][-]{chapter.10}{Lists}{}% 113 +\BOOKMARK [1][-]{section.10.1}{A list is a sequence}{chapter.10}% 114 +\BOOKMARK [1][-]{section.10.2}{Lists are mutable}{chapter.10}% 115 +\BOOKMARK [1][-]{section.10.3}{Traversing a list}{chapter.10}% 116 +\BOOKMARK [1][-]{section.10.4}{List operations}{chapter.10}% 117 +\BOOKMARK [1][-]{section.10.5}{List slices}{chapter.10}% 118 +\BOOKMARK [1][-]{section.10.6}{List methods}{chapter.10}% 119 +\BOOKMARK [1][-]{section.10.7}{Map, filter and reduce}{chapter.10}% 120 +\BOOKMARK [1][-]{section.10.8}{Deleting elements}{chapter.10}% 121 +\BOOKMARK [1][-]{section.10.9}{Lists and strings}{chapter.10}% 122 +\BOOKMARK [1][-]{section.10.10}{Objects and values}{chapter.10}% 123 +\BOOKMARK [1][-]{section.10.11}{Aliasing}{chapter.10}% 124 +\BOOKMARK [1][-]{section.10.12}{List arguments}{chapter.10}% 125 +\BOOKMARK [1][-]{section.10.13}{Debugging}{chapter.10}% 126 +\BOOKMARK [1][-]{section.10.14}{Glossary}{chapter.10}% 127 +\BOOKMARK [1][-]{section.10.15}{Exercises}{chapter.10}% 128 +\BOOKMARK [0][-]{chapter.11}{Dictionaries}{}% 129 +\BOOKMARK [1][-]{section.11.1}{Dictionary as a set of counters}{chapter.11}% 130 +\BOOKMARK [1][-]{section.11.2}{Looping and dictionaries}{chapter.11}% 131 +\BOOKMARK [1][-]{section.11.3}{Reverse lookup}{chapter.11}% 132 +\BOOKMARK [1][-]{section.11.4}{Dictionaries and lists}{chapter.11}% 133 +\BOOKMARK [1][-]{section.11.5}{Memos}{chapter.11}% 134 +\BOOKMARK [1][-]{section.11.6}{Global variables}{chapter.11}% 135 +\BOOKMARK [1][-]{section.11.7}{Long integers}{chapter.11}% 136 +\BOOKMARK [1][-]{section.11.8}{Debugging}{chapter.11}% 137 +\BOOKMARK [1][-]{section.11.9}{Glossary}{chapter.11}% 138 +\BOOKMARK [1][-]{section.11.10}{Exercises}{chapter.11}% 139 +\BOOKMARK [0][-]{chapter.12}{Tuples}{}% 140 +\BOOKMARK [1][-]{section.12.1}{Tuples are immutable}{chapter.12}% 141 +\BOOKMARK [1][-]{section.12.2}{Tuple assignment}{chapter.12}% 142 +\BOOKMARK [1][-]{section.12.3}{Tuples as return values}{chapter.12}% 143 +\BOOKMARK [1][-]{section.12.4}{Variable-length argument tuples}{chapter.12}% 144 +\BOOKMARK [1][-]{section.12.5}{Lists and tuples}{chapter.12}% 145 +\BOOKMARK [1][-]{section.12.6}{Dictionaries and tuples}{chapter.12}% 146 +\BOOKMARK [1][-]{section.12.7}{Comparing tuples}{chapter.12}% 147 +\BOOKMARK [1][-]{section.12.8}{Sequences of sequences}{chapter.12}% 148 +\BOOKMARK [1][-]{section.12.9}{Debugging}{chapter.12}% 149 +\BOOKMARK [1][-]{section.12.10}{Glossary}{chapter.12}% 150 +\BOOKMARK [1][-]{section.12.11}{Exercises}{chapter.12}% 151 +\BOOKMARK [0][-]{chapter.13}{Case study: data structure selection}{}% 152 +\BOOKMARK [1][-]{section.13.1}{Word frequency analysis}{chapter.13}% 153 +\BOOKMARK [1][-]{section.13.2}{Random numbers}{chapter.13}% 154 +\BOOKMARK [1][-]{section.13.3}{Word histogram}{chapter.13}% 155 +\BOOKMARK [1][-]{section.13.4}{Most common words}{chapter.13}% 156 +\BOOKMARK [1][-]{section.13.5}{Optional parameters}{chapter.13}% 157 +\BOOKMARK [1][-]{section.13.6}{Dictionary subtraction}{chapter.13}% 158 +\BOOKMARK [1][-]{section.13.7}{Random words}{chapter.13}% 159 +\BOOKMARK [1][-]{section.13.8}{Markov analysis}{chapter.13}% 160 +\BOOKMARK [1][-]{section.13.9}{Data structures}{chapter.13}% 161 +\BOOKMARK [1][-]{section.13.10}{Debugging}{chapter.13}% 162 +\BOOKMARK [1][-]{section.13.11}{Glossary}{chapter.13}% 163 +\BOOKMARK [1][-]{section.13.12}{Exercises}{chapter.13}% 164 +\BOOKMARK [0][-]{chapter.14}{Files}{}% 165 +\BOOKMARK [1][-]{section.14.1}{Persistence}{chapter.14}% 166 +\BOOKMARK [1][-]{section.14.2}{Reading and writing}{chapter.14}% 167 +\BOOKMARK [1][-]{section.14.3}{Format operator}{chapter.14}% 168 +\BOOKMARK [1][-]{section.14.4}{Filenames and paths}{chapter.14}% 169 +\BOOKMARK [1][-]{section.14.5}{Catching exceptions}{chapter.14}% 170 +\BOOKMARK [1][-]{section.14.6}{Databases}{chapter.14}% 171 +\BOOKMARK [1][-]{section.14.7}{Pickling}{chapter.14}% 172 +\BOOKMARK [1][-]{section.14.8}{Pipes}{chapter.14}% 173 +\BOOKMARK [1][-]{section.14.9}{Writing modules}{chapter.14}% 174 +\BOOKMARK [1][-]{section.14.10}{Debugging}{chapter.14}% 175 +\BOOKMARK [1][-]{section.14.11}{Glossary}{chapter.14}% 176 +\BOOKMARK [1][-]{section.14.12}{Exercises}{chapter.14}% 177 +\BOOKMARK [0][-]{chapter.15}{Classes and objects}{}% 178 +\BOOKMARK [1][-]{section.15.1}{User-defined types}{chapter.15}% 179 +\BOOKMARK [1][-]{section.15.2}{Attributes}{chapter.15}% 180 +\BOOKMARK [1][-]{section.15.3}{Rectangles}{chapter.15}% 181 +\BOOKMARK [1][-]{section.15.4}{Instances as return values}{chapter.15}% 182 +\BOOKMARK [1][-]{section.15.5}{Objects are mutable}{chapter.15}% 183 +\BOOKMARK [1][-]{section.15.6}{Copying}{chapter.15}% 184 +\BOOKMARK [1][-]{section.15.7}{Debugging}{chapter.15}% 185 +\BOOKMARK [1][-]{section.15.8}{Glossary}{chapter.15}% 186 +\BOOKMARK [1][-]{section.15.9}{Exercises}{chapter.15}% 187 +\BOOKMARK [0][-]{chapter.16}{Classes and functions}{}% 188 +\BOOKMARK [1][-]{section.16.1}{Time}{chapter.16}% 189 +\BOOKMARK [1][-]{section.16.2}{Pure functions}{chapter.16}% 190 +\BOOKMARK [1][-]{section.16.3}{Modifiers}{chapter.16}% 191 +\BOOKMARK [1][-]{section.16.4}{Prototyping versus planning}{chapter.16}% 192 +\BOOKMARK [1][-]{section.16.5}{Debugging}{chapter.16}% 193 +\BOOKMARK [1][-]{section.16.6}{Glossary}{chapter.16}% 194 +\BOOKMARK [1][-]{section.16.7}{Exercises}{chapter.16}% 195 +\BOOKMARK [0][-]{chapter.17}{Classes and methods}{}% 196 +\BOOKMARK [1][-]{section.17.1}{Object-oriented features}{chapter.17}% 197 +\BOOKMARK [1][-]{section.17.2}{Printing objects}{chapter.17}% 198 +\BOOKMARK [1][-]{section.17.3}{Another example}{chapter.17}% 199 +\BOOKMARK [1][-]{section.17.4}{A more complicated example}{chapter.17}% 200 +\BOOKMARK [1][-]{section.17.5}{The init method}{chapter.17}% 201 +\BOOKMARK [1][-]{section.17.6}{The \137\137str\137\137 method}{chapter.17}% 202 +\BOOKMARK [1][-]{section.17.7}{Operator overloading}{chapter.17}% 203 +\BOOKMARK [1][-]{section.17.8}{Type-based dispatch}{chapter.17}% 204 +\BOOKMARK [1][-]{section.17.9}{Polymorphism}{chapter.17}% 205 +\BOOKMARK [1][-]{section.17.10}{Debugging}{chapter.17}% 206 +\BOOKMARK [1][-]{section.17.11}{Interface and implementation}{chapter.17}% 207 +\BOOKMARK [1][-]{section.17.12}{Glossary}{chapter.17}% 208 +\BOOKMARK [1][-]{section.17.13}{Exercises}{chapter.17}% 209 +\BOOKMARK [0][-]{chapter.18}{Inheritance}{}% 210 +\BOOKMARK [1][-]{section.18.1}{Card objects}{chapter.18}% 211 +\BOOKMARK [1][-]{section.18.2}{Class attributes}{chapter.18}% 212 +\BOOKMARK [1][-]{section.18.3}{Comparing cards}{chapter.18}% 213 +\BOOKMARK [1][-]{section.18.4}{Decks}{chapter.18}% 214 +\BOOKMARK [1][-]{section.18.5}{Printing the deck}{chapter.18}% 215 +\BOOKMARK [1][-]{section.18.6}{Add, remove, shuffle and sort}{chapter.18}% 216 +\BOOKMARK [1][-]{section.18.7}{Inheritance}{chapter.18}% 217 +\BOOKMARK [1][-]{section.18.8}{Class diagrams}{chapter.18}% 218 +\BOOKMARK [1][-]{section.18.9}{Debugging}{chapter.18}% 219 +\BOOKMARK [1][-]{section.18.10}{Data encapsulation}{chapter.18}% 220 +\BOOKMARK [1][-]{section.18.11}{Glossary}{chapter.18}% 221 +\BOOKMARK [1][-]{section.18.12}{Exercises}{chapter.18}% 222 +\BOOKMARK [0][-]{chapter.19}{Case study: Tkinter}{}% 223 +\BOOKMARK [1][-]{section.19.1}{GUI}{chapter.19}% 224 +\BOOKMARK [1][-]{section.19.2}{Buttons and callbacks}{chapter.19}% 225 +\BOOKMARK [1][-]{section.19.3}{Canvas widgets}{chapter.19}% 226 +\BOOKMARK [1][-]{section.19.4}{Coordinate sequences}{chapter.19}% 227 +\BOOKMARK [1][-]{section.19.5}{More widgets}{chapter.19}% 228 +\BOOKMARK [1][-]{section.19.6}{Packing widgets}{chapter.19}% 229 +\BOOKMARK [1][-]{section.19.7}{Menus and Callables}{chapter.19}% 230 +\BOOKMARK [1][-]{section.19.8}{Binding}{chapter.19}% 231 +\BOOKMARK [1][-]{section.19.9}{Debugging}{chapter.19}% 232 +\BOOKMARK [1][-]{section.19.10}{Glossary}{chapter.19}% 233 +\BOOKMARK [1][-]{section.19.11}{Exercises}{chapter.19}% 234 +\BOOKMARK [0][-]{appendix.A}{Debugging}{}% 235 +\BOOKMARK [1][-]{section.A.1}{Syntax errors}{appendix.A}% 236 +\BOOKMARK [1][-]{section.A.2}{Runtime errors}{appendix.A}% 237 +\BOOKMARK [1][-]{section.A.3}{Semantic errors}{appendix.A}% 238 +\BOOKMARK [0][-]{appendix.B}{Analysis of Algorithms}{}% 239 +\BOOKMARK [1][-]{section.B.1}{Order of growth}{appendix.B}% 240 +\BOOKMARK [1][-]{section.B.2}{Analysis of basic Python operations}{appendix.B}% 241 +\BOOKMARK [1][-]{section.B.3}{Analysis of search algorithms}{appendix.B}% 242 +\BOOKMARK [1][-]{section.B.4}{Hashtables}{appendix.B}% 243 +\BOOKMARK [0][-]{appendix.C}{Lumpy}{}% 244 +\BOOKMARK [1][-]{section.C.1}{State diagram}{appendix.C}% 245 +\BOOKMARK [1][-]{section.C.2}{Stack diagram}{appendix.C}% 246 +\BOOKMARK [1][-]{section.C.3}{Object diagrams}{appendix.C}% 247 +\BOOKMARK [1][-]{section.C.4}{Function and class objects}{appendix.C}% 248 +\BOOKMARK [1][-]{section.C.5}{Class Diagrams}{appendix.C}% 249 diff --git a/book/book.toc b/book/book.toc new file mode 100644 index 0000000..98820e5 --- /dev/null +++ b/book/book.toc @@ -0,0 +1,266 @@ +\contentsline {chapter}{Preface}{v}{chapter*.1} +\contentsline {chapter}{\numberline {1}The way of the program}{1}{chapter.1} +\contentsline {section}{\numberline {1.1}The Python programming language}{1}{section.1.1} +\contentsline {section}{\numberline {1.2}What is a program?}{3}{section.1.2} +\contentsline {section}{\numberline {1.3}What is debugging?}{3}{section.1.3} +\contentsline {subsection}{\numberline {1.3.1}Syntax errors}{3}{subsection.1.3.1} +\contentsline {subsection}{\numberline {1.3.2}Runtime errors}{4}{subsection.1.3.2} +\contentsline {subsection}{\numberline {1.3.3}Semantic errors}{4}{subsection.1.3.3} +\contentsline {subsection}{\numberline {1.3.4}Experimental debugging}{4}{subsection.1.3.4} +\contentsline {section}{\numberline {1.4}Formal and natural languages}{5}{section.1.4} +\contentsline {section}{\numberline {1.5}The first program}{6}{section.1.5} +\contentsline {section}{\numberline {1.6}Debugging}{7}{section.1.6} +\contentsline {section}{\numberline {1.7}Glossary}{7}{section.1.7} +\contentsline {section}{\numberline {1.8}Exercises}{9}{section.1.8} +\contentsline {chapter}{\numberline {2}Variables, expressions and statements}{11}{chapter.2} +\contentsline {section}{\numberline {2.1}Values and types}{11}{section.2.1} +\contentsline {section}{\numberline {2.2}Variables}{12}{section.2.2} +\contentsline {section}{\numberline {2.3}Variable names and keywords}{12}{section.2.3} +\contentsline {section}{\numberline {2.4}Operators and operands}{13}{section.2.4} +\contentsline {section}{\numberline {2.5}Expressions and statements}{14}{section.2.5} +\contentsline {section}{\numberline {2.6}Interactive mode and script mode}{14}{section.2.6} +\contentsline {section}{\numberline {2.7}Order of operations}{15}{section.2.7} +\contentsline {section}{\numberline {2.8}String operations}{15}{section.2.8} +\contentsline {section}{\numberline {2.9}Comments}{16}{section.2.9} +\contentsline {section}{\numberline {2.10}Debugging}{16}{section.2.10} +\contentsline {section}{\numberline {2.11}Glossary}{17}{section.2.11} +\contentsline {section}{\numberline {2.12}Exercises}{18}{section.2.12} +\contentsline {chapter}{\numberline {3}Functions}{19}{chapter.3} +\contentsline {section}{\numberline {3.1}Function calls}{19}{section.3.1} +\contentsline {section}{\numberline {3.2}Type conversion functions}{19}{section.3.2} +\contentsline {section}{\numberline {3.3}Math functions}{20}{section.3.3} +\contentsline {section}{\numberline {3.4}Composition}{21}{section.3.4} +\contentsline {section}{\numberline {3.5}Adding new functions}{21}{section.3.5} +\contentsline {section}{\numberline {3.6}Definitions and uses}{22}{section.3.6} +\contentsline {section}{\numberline {3.7}Flow of execution}{23}{section.3.7} +\contentsline {section}{\numberline {3.8}Parameters and arguments}{23}{section.3.8} +\contentsline {section}{\numberline {3.9}Variables and parameters are local}{24}{section.3.9} +\contentsline {section}{\numberline {3.10}Stack diagrams}{25}{section.3.10} +\contentsline {section}{\numberline {3.11}Fruitful functions and void functions}{26}{section.3.11} +\contentsline {section}{\numberline {3.12}Why functions?}{26}{section.3.12} +\contentsline {section}{\numberline {3.13}Importing with {\tt from}}{27}{section.3.13} +\contentsline {section}{\numberline {3.14}Debugging}{27}{section.3.14} +\contentsline {section}{\numberline {3.15}Glossary}{28}{section.3.15} +\contentsline {section}{\numberline {3.16}Exercises}{29}{section.3.16} +\contentsline {chapter}{\numberline {4}Case study: interface design}{31}{chapter.4} +\contentsline {section}{\numberline {4.1}TurtleWorld}{31}{section.4.1} +\contentsline {section}{\numberline {4.2}Simple repetition}{32}{section.4.2} +\contentsline {section}{\numberline {4.3}Exercises}{33}{section.4.3} +\contentsline {section}{\numberline {4.4}Encapsulation}{34}{section.4.4} +\contentsline {section}{\numberline {4.5}Generalization}{34}{section.4.5} +\contentsline {section}{\numberline {4.6}Interface design}{35}{section.4.6} +\contentsline {section}{\numberline {4.7}Refactoring}{36}{section.4.7} +\contentsline {section}{\numberline {4.8}A development plan}{37}{section.4.8} +\contentsline {section}{\numberline {4.9}docstring}{37}{section.4.9} +\contentsline {section}{\numberline {4.10}Debugging}{38}{section.4.10} +\contentsline {section}{\numberline {4.11}Glossary}{38}{section.4.11} +\contentsline {section}{\numberline {4.12}Exercises}{39}{section.4.12} +\contentsline {chapter}{\numberline {5}Conditionals and recursion}{41}{chapter.5} +\contentsline {section}{\numberline {5.1}Modulus operator}{41}{section.5.1} +\contentsline {section}{\numberline {5.2}Boolean expressions}{41}{section.5.2} +\contentsline {section}{\numberline {5.3}Logical operators}{42}{section.5.3} +\contentsline {section}{\numberline {5.4}Conditional execution}{42}{section.5.4} +\contentsline {section}{\numberline {5.5}Alternative execution}{43}{section.5.5} +\contentsline {section}{\numberline {5.6}Chained conditionals}{43}{section.5.6} +\contentsline {section}{\numberline {5.7}Nested conditionals}{43}{section.5.7} +\contentsline {section}{\numberline {5.8}Recursion}{44}{section.5.8} +\contentsline {section}{\numberline {5.9}Stack diagrams for recursive functions}{45}{section.5.9} +\contentsline {section}{\numberline {5.10}Infinite recursion}{46}{section.5.10} +\contentsline {section}{\numberline {5.11}Keyboard input}{46}{section.5.11} +\contentsline {section}{\numberline {5.12}Debugging}{47}{section.5.12} +\contentsline {section}{\numberline {5.13}Glossary}{48}{section.5.13} +\contentsline {section}{\numberline {5.14}Exercises}{49}{section.5.14} +\contentsline {chapter}{\numberline {6}Fruitful functions}{51}{chapter.6} +\contentsline {section}{\numberline {6.1}Return values}{51}{section.6.1} +\contentsline {section}{\numberline {6.2}Incremental development}{52}{section.6.2} +\contentsline {section}{\numberline {6.3}Composition}{54}{section.6.3} +\contentsline {section}{\numberline {6.4}Boolean functions}{54}{section.6.4} +\contentsline {section}{\numberline {6.5}More recursion}{55}{section.6.5} +\contentsline {section}{\numberline {6.6}Leap of faith}{57}{section.6.6} +\contentsline {section}{\numberline {6.7}One more example}{57}{section.6.7} +\contentsline {section}{\numberline {6.8}Checking types}{58}{section.6.8} +\contentsline {section}{\numberline {6.9}Debugging}{59}{section.6.9} +\contentsline {section}{\numberline {6.10}Glossary}{60}{section.6.10} +\contentsline {section}{\numberline {6.11}Exercises}{60}{section.6.11} +\contentsline {chapter}{\numberline {7}Iteration}{63}{chapter.7} +\contentsline {section}{\numberline {7.1}Multiple assignment}{63}{section.7.1} +\contentsline {section}{\numberline {7.2}Updating variables}{64}{section.7.2} +\contentsline {section}{\numberline {7.3}The {\tt while} statement}{64}{section.7.3} +\contentsline {section}{\numberline {7.4}{\tt break}}{65}{section.7.4} +\contentsline {section}{\numberline {7.5}Square roots}{66}{section.7.5} +\contentsline {section}{\numberline {7.6}Algorithms}{67}{section.7.6} +\contentsline {section}{\numberline {7.7}Debugging}{68}{section.7.7} +\contentsline {section}{\numberline {7.8}Glossary}{68}{section.7.8} +\contentsline {section}{\numberline {7.9}Exercises}{69}{section.7.9} +\contentsline {chapter}{\numberline {8}Strings}{71}{chapter.8} +\contentsline {section}{\numberline {8.1}A string is a sequence}{71}{section.8.1} +\contentsline {section}{\numberline {8.2}{\tt len}}{71}{section.8.2} +\contentsline {section}{\numberline {8.3}Traversal with a {\tt for} loop}{72}{section.8.3} +\contentsline {section}{\numberline {8.4}String slices}{73}{section.8.4} +\contentsline {section}{\numberline {8.5}Strings are immutable}{74}{section.8.5} +\contentsline {section}{\numberline {8.6}Searching}{74}{section.8.6} +\contentsline {section}{\numberline {8.7}Looping and counting}{75}{section.8.7} +\contentsline {section}{\numberline {8.8}String methods}{75}{section.8.8} +\contentsline {section}{\numberline {8.9}The {\tt in} operator}{76}{section.8.9} +\contentsline {section}{\numberline {8.10}String comparison}{76}{section.8.10} +\contentsline {section}{\numberline {8.11}Debugging}{77}{section.8.11} +\contentsline {section}{\numberline {8.12}Glossary}{78}{section.8.12} +\contentsline {section}{\numberline {8.13}Exercises}{79}{section.8.13} +\contentsline {chapter}{\numberline {9}Case study: word play}{81}{chapter.9} +\contentsline {section}{\numberline {9.1}Reading word lists}{81}{section.9.1} +\contentsline {section}{\numberline {9.2}Exercises}{82}{section.9.2} +\contentsline {section}{\numberline {9.3}Search}{82}{section.9.3} +\contentsline {section}{\numberline {9.4}Looping with indices}{83}{section.9.4} +\contentsline {section}{\numberline {9.5}Debugging}{85}{section.9.5} +\contentsline {section}{\numberline {9.6}Glossary}{85}{section.9.6} +\contentsline {section}{\numberline {9.7}Exercises}{86}{section.9.7} +\contentsline {chapter}{\numberline {10}Lists}{87}{chapter.10} +\contentsline {section}{\numberline {10.1}A list is a sequence}{87}{section.10.1} +\contentsline {section}{\numberline {10.2}Lists are mutable}{87}{section.10.2} +\contentsline {section}{\numberline {10.3}Traversing a list}{89}{section.10.3} +\contentsline {section}{\numberline {10.4}List operations}{89}{section.10.4} +\contentsline {section}{\numberline {10.5}List slices}{89}{section.10.5} +\contentsline {section}{\numberline {10.6}List methods}{90}{section.10.6} +\contentsline {section}{\numberline {10.7}Map, filter and reduce}{91}{section.10.7} +\contentsline {section}{\numberline {10.8}Deleting elements}{92}{section.10.8} +\contentsline {section}{\numberline {10.9}Lists and strings}{93}{section.10.9} +\contentsline {section}{\numberline {10.10}Objects and values}{93}{section.10.10} +\contentsline {section}{\numberline {10.11}Aliasing}{94}{section.10.11} +\contentsline {section}{\numberline {10.12}List arguments}{95}{section.10.12} +\contentsline {section}{\numberline {10.13}Debugging}{96}{section.10.13} +\contentsline {section}{\numberline {10.14}Glossary}{97}{section.10.14} +\contentsline {section}{\numberline {10.15}Exercises}{98}{section.10.15} +\contentsline {chapter}{\numberline {11}Dictionaries}{101}{chapter.11} +\contentsline {section}{\numberline {11.1}Dictionary as a set of counters}{102}{section.11.1} +\contentsline {section}{\numberline {11.2}Looping and dictionaries}{103}{section.11.2} +\contentsline {section}{\numberline {11.3}Reverse lookup}{104}{section.11.3} +\contentsline {section}{\numberline {11.4}Dictionaries and lists}{105}{section.11.4} +\contentsline {section}{\numberline {11.5}Memos}{106}{section.11.5} +\contentsline {section}{\numberline {11.6}Global variables}{108}{section.11.6} +\contentsline {section}{\numberline {11.7}Long integers}{109}{section.11.7} +\contentsline {section}{\numberline {11.8}Debugging}{109}{section.11.8} +\contentsline {section}{\numberline {11.9}Glossary}{110}{section.11.9} +\contentsline {section}{\numberline {11.10}Exercises}{111}{section.11.10} +\contentsline {chapter}{\numberline {12}Tuples}{113}{chapter.12} +\contentsline {section}{\numberline {12.1}Tuples are immutable}{113}{section.12.1} +\contentsline {section}{\numberline {12.2}Tuple assignment}{114}{section.12.2} +\contentsline {section}{\numberline {12.3}Tuples as return values}{115}{section.12.3} +\contentsline {section}{\numberline {12.4}Variable-length argument tuples}{115}{section.12.4} +\contentsline {section}{\numberline {12.5}Lists and tuples}{116}{section.12.5} +\contentsline {section}{\numberline {12.6}Dictionaries and tuples}{117}{section.12.6} +\contentsline {section}{\numberline {12.7}Comparing tuples}{118}{section.12.7} +\contentsline {section}{\numberline {12.8}Sequences of sequences}{119}{section.12.8} +\contentsline {section}{\numberline {12.9}Debugging}{120}{section.12.9} +\contentsline {section}{\numberline {12.10}Glossary}{121}{section.12.10} +\contentsline {section}{\numberline {12.11}Exercises}{121}{section.12.11} +\contentsline {chapter}{\numberline {13}Case study: data structure selection}{123}{chapter.13} +\contentsline {section}{\numberline {13.1}Word frequency analysis}{123}{section.13.1} +\contentsline {section}{\numberline {13.2}Random numbers}{124}{section.13.2} +\contentsline {section}{\numberline {13.3}Word histogram}{125}{section.13.3} +\contentsline {section}{\numberline {13.4}Most common words}{126}{section.13.4} +\contentsline {section}{\numberline {13.5}Optional parameters}{126}{section.13.5} +\contentsline {section}{\numberline {13.6}Dictionary subtraction}{127}{section.13.6} +\contentsline {section}{\numberline {13.7}Random words}{127}{section.13.7} +\contentsline {section}{\numberline {13.8}Markov analysis}{128}{section.13.8} +\contentsline {section}{\numberline {13.9}Data structures}{129}{section.13.9} +\contentsline {section}{\numberline {13.10}Debugging}{131}{section.13.10} +\contentsline {section}{\numberline {13.11}Glossary}{132}{section.13.11} +\contentsline {section}{\numberline {13.12}Exercises}{132}{section.13.12} +\contentsline {chapter}{\numberline {14}Files}{133}{chapter.14} +\contentsline {section}{\numberline {14.1}Persistence}{133}{section.14.1} +\contentsline {section}{\numberline {14.2}Reading and writing}{133}{section.14.2} +\contentsline {section}{\numberline {14.3}Format operator}{134}{section.14.3} +\contentsline {section}{\numberline {14.4}Filenames and paths}{135}{section.14.4} +\contentsline {section}{\numberline {14.5}Catching exceptions}{136}{section.14.5} +\contentsline {section}{\numberline {14.6}Databases}{137}{section.14.6} +\contentsline {section}{\numberline {14.7}Pickling}{137}{section.14.7} +\contentsline {section}{\numberline {14.8}Pipes}{138}{section.14.8} +\contentsline {section}{\numberline {14.9}Writing modules}{139}{section.14.9} +\contentsline {section}{\numberline {14.10}Debugging}{140}{section.14.10} +\contentsline {section}{\numberline {14.11}Glossary}{141}{section.14.11} +\contentsline {section}{\numberline {14.12}Exercises}{141}{section.14.12} +\contentsline {chapter}{\numberline {15}Classes and objects}{143}{chapter.15} +\contentsline {section}{\numberline {15.1}User-defined types}{143}{section.15.1} +\contentsline {section}{\numberline {15.2}Attributes}{144}{section.15.2} +\contentsline {section}{\numberline {15.3}Rectangles}{145}{section.15.3} +\contentsline {section}{\numberline {15.4}Instances as return values}{146}{section.15.4} +\contentsline {section}{\numberline {15.5}Objects are mutable}{146}{section.15.5} +\contentsline {section}{\numberline {15.6}Copying}{147}{section.15.6} +\contentsline {section}{\numberline {15.7}Debugging}{148}{section.15.7} +\contentsline {section}{\numberline {15.8}Glossary}{149}{section.15.8} +\contentsline {section}{\numberline {15.9}Exercises}{149}{section.15.9} +\contentsline {chapter}{\numberline {16}Classes and functions}{151}{chapter.16} +\contentsline {section}{\numberline {16.1}Time}{151}{section.16.1} +\contentsline {section}{\numberline {16.2}Pure functions}{151}{section.16.2} +\contentsline {section}{\numberline {16.3}Modifiers}{153}{section.16.3} +\contentsline {section}{\numberline {16.4}Prototyping versus planning}{154}{section.16.4} +\contentsline {section}{\numberline {16.5}Debugging}{155}{section.16.5} +\contentsline {section}{\numberline {16.6}Glossary}{155}{section.16.6} +\contentsline {section}{\numberline {16.7}Exercises}{156}{section.16.7} +\contentsline {chapter}{\numberline {17}Classes and methods}{157}{chapter.17} +\contentsline {section}{\numberline {17.1}Object-oriented features}{157}{section.17.1} +\contentsline {section}{\numberline {17.2}Printing objects}{158}{section.17.2} +\contentsline {section}{\numberline {17.3}Another example}{159}{section.17.3} +\contentsline {section}{\numberline {17.4}A more complicated example}{160}{section.17.4} +\contentsline {section}{\numberline {17.5}The init method}{160}{section.17.5} +\contentsline {section}{\numberline {17.6}The {\tt \_\_str\_\_} method}{161}{section.17.6} +\contentsline {section}{\numberline {17.7}Operator overloading}{161}{section.17.7} +\contentsline {section}{\numberline {17.8}Type-based dispatch}{162}{section.17.8} +\contentsline {section}{\numberline {17.9}Polymorphism}{163}{section.17.9} +\contentsline {section}{\numberline {17.10}Debugging}{164}{section.17.10} +\contentsline {section}{\numberline {17.11}Interface and implementation}{164}{section.17.11} +\contentsline {section}{\numberline {17.12}Glossary}{165}{section.17.12} +\contentsline {section}{\numberline {17.13}Exercises}{165}{section.17.13} +\contentsline {chapter}{\numberline {18}Inheritance}{167}{chapter.18} +\contentsline {section}{\numberline {18.1}Card objects}{167}{section.18.1} +\contentsline {section}{\numberline {18.2}Class attributes}{168}{section.18.2} +\contentsline {section}{\numberline {18.3}Comparing cards}{169}{section.18.3} +\contentsline {section}{\numberline {18.4}Decks}{170}{section.18.4} +\contentsline {section}{\numberline {18.5}Printing the deck}{171}{section.18.5} +\contentsline {section}{\numberline {18.6}Add, remove, shuffle and sort}{171}{section.18.6} +\contentsline {section}{\numberline {18.7}Inheritance}{172}{section.18.7} +\contentsline {section}{\numberline {18.8}Class diagrams}{173}{section.18.8} +\contentsline {section}{\numberline {18.9}Debugging}{174}{section.18.9} +\contentsline {section}{\numberline {18.10}Data encapsulation}{175}{section.18.10} +\contentsline {section}{\numberline {18.11}Glossary}{176}{section.18.11} +\contentsline {section}{\numberline {18.12}Exercises}{177}{section.18.12} +\contentsline {chapter}{\numberline {19}Case study: Tkinter}{179}{chapter.19} +\contentsline {section}{\numberline {19.1}GUI}{179}{section.19.1} +\contentsline {section}{\numberline {19.2}Buttons and callbacks}{180}{section.19.2} +\contentsline {section}{\numberline {19.3}Canvas widgets}{181}{section.19.3} +\contentsline {section}{\numberline {19.4}Coordinate sequences}{182}{section.19.4} +\contentsline {section}{\numberline {19.5}More widgets}{182}{section.19.5} +\contentsline {section}{\numberline {19.6}Packing widgets}{183}{section.19.6} +\contentsline {section}{\numberline {19.7}Menus and Callables}{185}{section.19.7} +\contentsline {section}{\numberline {19.8}Binding}{186}{section.19.8} +\contentsline {section}{\numberline {19.9}Debugging}{188}{section.19.9} +\contentsline {section}{\numberline {19.10}Glossary}{189}{section.19.10} +\contentsline {section}{\numberline {19.11}Exercises}{190}{section.19.11} +\contentsline {chapter}{\numberline {A}Debugging}{193}{appendix.A} +\contentsline {section}{\numberline {A.1}Syntax errors}{193}{section.A.1} +\contentsline {subsection}{\numberline {A.1.1}I keep making changes and it makes no difference.}{194}{subsection.A.1.1} +\contentsline {section}{\numberline {A.2}Runtime errors}{195}{section.A.2} +\contentsline {subsection}{\numberline {A.2.1}My program does absolutely nothing.}{195}{subsection.A.2.1} +\contentsline {subsection}{\numberline {A.2.2}My program hangs.}{195}{subsection.A.2.2} +\contentsline {subsubsection}{Infinite Loop}{196}{section*.6} +\contentsline {subsubsection}{Infinite Recursion}{196}{section*.7} +\contentsline {subsubsection}{Flow of Execution}{196}{section*.8} +\contentsline {subsection}{\numberline {A.2.3}When I run the program I get an exception.}{196}{subsection.A.2.3} +\contentsline {subsection}{\numberline {A.2.4}I added so many {\tt print} statements I get inundated with output.}{197}{subsection.A.2.4} +\contentsline {section}{\numberline {A.3}Semantic errors}{198}{section.A.3} +\contentsline {subsection}{\numberline {A.3.1}My program doesn't work.}{198}{subsection.A.3.1} +\contentsline {subsection}{\numberline {A.3.2}I've got a big hairy expression and it doesn't do what I expect.}{199}{subsection.A.3.2} +\contentsline {subsection}{\numberline {A.3.3}I've got a function or method that doesn't return what I expect.}{199}{subsection.A.3.3} +\contentsline {subsection}{\numberline {A.3.4}I'm really, really stuck and I need help.}{200}{subsection.A.3.4} +\contentsline {subsection}{\numberline {A.3.5}No, I really need help.}{200}{subsection.A.3.5} +\contentsline {chapter}{\numberline {B}Analysis of Algorithms}{201}{appendix.B} +\contentsline {section}{\numberline {B.1}Order of growth}{202}{section.B.1} +\contentsline {section}{\numberline {B.2}Analysis of basic Python operations}{204}{section.B.2} +\contentsline {section}{\numberline {B.3}Analysis of search algorithms}{205}{section.B.3} +\contentsline {section}{\numberline {B.4}Hashtables}{206}{section.B.4} +\contentsline {chapter}{\numberline {C}Lumpy}{211}{appendix.C} +\contentsline {section}{\numberline {C.1}State diagram}{211}{section.C.1} +\contentsline {section}{\numberline {C.2}Stack diagram}{212}{section.C.2} +\contentsline {section}{\numberline {C.3}Object diagrams}{213}{section.C.3} +\contentsline {section}{\numberline {C.4}Function and class objects}{215}{section.C.4} +\contentsline {section}{\numberline {C.5}Class Diagrams}{216}{section.C.5} diff --git a/book/hevea.sty b/book/hevea.sty new file mode 100644 index 0000000..17b4e54 --- /dev/null +++ b/book/hevea.sty @@ -0,0 +1,90 @@ +% hevea : hevea.sty +% This is a very basic style file for latex document to be processed +% with hevea. It contains definitions of LaTeX environment which are +% processed in a special way by the translator. +% Mostly : +% - latexonly, not processed by hevea, processed by latex. +% - htmlonly , the reverse. +% - rawhtml, to include raw HTML in hevea output. +% - toimage, to send text to the image file. +% The package also provides hevea logos, html related commands (ahref +% etc.), void cutting and image commands. +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{hevea}[2002/01/11] +\RequirePackage{comment} +\newif\ifhevea\heveafalse +\@ifundefined{ifimagen}{\newif\ifimagen\imagenfalse} +\makeatletter% +\newcommand{\heveasmup}[2]{% +\raise #1\hbox{$\m@th$% + \csname S@\f@size\endcsname + \fontsize\sf@size 0% + \math@fontsfalse\selectfont +#2% +}}% +\DeclareRobustCommand{\hevea}{H\kern-.15em\heveasmup{.2ex}{E}\kern-.15emV\kern-.15em\heveasmup{.2ex}{E}\kern-.15emA}% +\DeclareRobustCommand{\hacha}{H\kern-.15em\heveasmup{.2ex}{A}\kern-.15emC\kern-.1em\heveasmup{.2ex}{H}\kern-.15emA}% +\DeclareRobustCommand{\html}{\protect\heveasmup{0.ex}{HTML}} +%%%%%%%%% Hyperlinks hevea style +\newcommand{\ahref}[2]{{#2}} +\newcommand{\ahrefloc}[2]{{#2}} +\newcommand{\aname}[2]{{#2}} +\newcommand{\ahrefurl}[1]{\texttt{#1}} +\newcommand{\footahref}[2]{#2\footnote{\texttt{#1}}} +\newcommand{\mailto}[1]{\texttt{#1}} +\newcommand{\imgsrc}[2][]{} +\newcommand{\home}[1]{\protect\raisebox{-.75ex}{\char126}#1} +\AtBeginDocument +{\@ifundefined{url} +{%url package is not loaded +\let\url\ahref\let\oneurl\ahrefurl\let\footurl\footahref} +{}} +%% Void cutting instructions +\newcounter{cuttingdepth} +\newcommand{\tocnumber}{} +\newcommand{\notocnumber}{} +\newcommand{\cuttingunit}{} +\newcommand{\cutdef}[2][]{} +\newcommand{\cuthere}[2]{} +\newcommand{\cutend}{} +\newcommand{\htmlhead}[1]{} +\newcommand{\htmlfoot}[1]{} +\newcommand{\htmlprefix}[1]{} +\newenvironment{cutflow}[1]{}{} +\newcommand{\cutname}[1]{} +\newcommand{\toplinks}[3]{} +\newcommand{\setlinkstext}[3]{} +\newcommand{\flushdef}[1]{} +\newcommand{\footnoteflush}[1]{} +%%%% Html only +\excludecomment{rawhtml} +\newcommand{\rawhtmlinput}[1]{} +\excludecomment{htmlonly} +%%%% Latex only +\newenvironment{latexonly}{}{} +\newenvironment{verblatex}{}{} +%%%% Image file stuff +\def\toimage{\endgroup} +\def\endtoimage{\begingroup\def\@currenvir{toimage}} +\def\verbimage{\endgroup} +\def\endverbimage{\begingroup\def\@currenvir{verbimage}} +\newcommand{\imageflush}[1][]{} +%%% Bgcolor definition +\newsavebox{\@bgcolorbin} +\newenvironment{bgcolor}[2][] + {\newcommand{\@mycolor}{#2}\begin{lrbox}{\@bgcolorbin}\vbox\bgroup} + {\egroup\end{lrbox}% + \begin{flushleft}% + \colorbox{\@mycolor}{\usebox{\@bgcolorbin}}% + \end{flushleft}} +%%% Style sheets macros, defined as no-ops +\newcommand{\newstyle}[2]{} +\newcommand{\addstyle}[1]{} +\newcommand{\setenvclass}[2]{} +\newcommand{\getenvclass}[1]{} +\newcommand{\loadcssfile}[1]{} +\newenvironment{divstyle}[1]{}{} +\newenvironment{cellstyle}[2]{}{} +\newif\ifexternalcss +%%% Postlude +\makeatother diff --git a/book/hevea.sty:Zone.Identifier b/book/hevea.sty:Zone.Identifier new file mode 100644 index 0000000..a45e1ac --- /dev/null +++ b/book/hevea.sty:Zone.Identifier @@ -0,0 +1,2 @@ +[ZoneTransfer] +ZoneId=3 diff --git a/book/thinkpython.pdf b/book/thinkpython.pdf new file mode 100644 index 0000000..2d0dad6 Binary files /dev/null and b/book/thinkpython.pdf differ