ThinkPython_v_1_1_24_Kart_Python_3_2_RU_v_1_06
.pdfДумать на языке Python
Думать как компьютерный специалист
Allen Downey
Green Tea Press
Needham, Massachusetts
Версия 1.1.24+Kart [Python 3.2]
Версия русского перевода: 1.06
Оригинальное название книги (на английском):
Think Python: How to Think Like a Computer Scientist
Автор: Allen Downey
Издательство: Green Tea Press, Needham, Massachusetts
2
© 2008 Allen Downey История публикаций:
Апрель 2002: Первое издание How to Think Like a Computer Scientist.
Август 2007: Переработанное издание, название изменено на How to Think Like a (Python) Programmer.
Июнь 2008: Переработанное издание, название изменено на Think Python: How to Think Like a Computer Scientist.
Информация об издательстве: Green Tea Press
9 Washburn Ave Needham MA 02492
Разрешается копировать, распространять и/или изменять этот документ в соответствии с лицензией GNU Free Documents License, версия 1.1 или более поздняя, опубликованная фондом Free Software Foundation.
Лицензия GNU Free Documentation License доступна по адресу: www.gnu.org или по письменному запросу от Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Оригинал этой книги создан в формате LaTeX. Это означает, что его можно преобразовывать в другие форматы, которые будут отображаться одинаково вне зависимости от используемой платформы.
Исходный LaTeX код этой книги (на английском) доступен по адресу: http://www.thinkpython.com
Русский перевод:
Copyright © 2013 Николай Орехов
Об ошибках в русской версии вы можете сообщить по адресу:
thinkpython [ at ] yandex.com
3
|
Оглавление |
|
Предисловие --------------------------------------------------------------------------------------------------- |
14 |
|
Интересная история написания этой книги---------------------------------------------------------- |
14 |
|
Благодарности ------------------------------------------------------------------------------------------------ |
15 |
|
Список внесших свой вклад ------------------------------------------------------------------------------- |
15 |
|
От переводчика ----------------------------------------------------------------------------------------------- |
20 |
|
Глава 1 ----------------------------------------------------------------------------------------------------------- |
21 |
|
Как работают программы---------------------------------------------------------------------------------- |
21 |
|
1.1 |
Язык программирования Python ------------------------------------------------------------------ |
21 |
1.2 |
Что такое программа? -------------------------------------------------------------------------------- |
22 |
1.3 |
Что такое отладка? ------------------------------------------------------------------------------------ |
23 |
1.3.1 Синтаксические ошибки (syntax errors) ------------------------------------------------------ |
23 |
|
1.3.2 Ошибки при выполнении (runtime errors) --------------------------------------------------- |
23 |
|
1.3.3 Семантические ошибки (semantic errors) ---------------------------------------------------- |
23 |
|
1.3.4 |
Экспериментальная отладка --------------------------------------------------------------------- |
24 |
1.4 |
Формальные и естественные языки ------------------------------------------------------------- |
24 |
1.5 |
Первая программа ------------------------------------------------------------------------------------- |
25 |
1.6 |
Отладка --------------------------------------------------------------------------------------------------- |
26 |
1.7 |
Словарь терминов ------------------------------------------------------------------------------------- |
26 |
1.8 |
Упражнения---------------------------------------------------------------------------------------------- |
27 |
Глава 2 ----------------------------------------------------------------------------------------------------------- |
29 |
|
Переменные, выражения и предложения ------------------------------------------------------------- |
29 |
|
2.1 |
Значения и типы --------------------------------------------------------------------------------------- |
29 |
2.2 |
Переменные --------------------------------------------------------------------------------------------- |
29 |
2.3 |
Имена переменных и ключевые слова ---------------------------------------------------------- |
30 |
2.4 |
Предложения-------------------------------------------------------------------------------------------- |
31 |
2.5 |
Операторы и операнды------------------------------------------------------------------------------- |
31 |
2.6 |
Выражения----------------------------------------------------------------------------------------------- |
32 |
4
2.7 |
Порядок вычислений --------------------------------------------------------------------------------- |
32 |
2.8 |
Строковые операции---------------------------------------------------------------------------------- |
33 |
2.9 |
Комментарии-------------------------------------------------------------------------------------------- |
33 |
2.10 |
Отладка ------------------------------------------------------------------------------------------------- |
34 |
2.11 |
Словарь терминов------------------------------------------------------------------------------------ |
34 |
2.12 |
Упражнения-------------------------------------------------------------------------------------------- |
35 |
Глава 3 ----------------------------------------------------------------------------------------------------------- |
36 |
|
Функции--------------------------------------------------------------------------------------------------------- |
36 |
|
3.1 |
Вызов функций ----------------------------------------------------------------------------------------- |
36 |
3.2 |
Функции, конвертирующие типы----------------------------------------------------------------- |
36 |
3.3 |
Математические функции--------------------------------------------------------------------------- |
36 |
3.4 |
Композиция---------------------------------------------------------------------------------------------- |
37 |
3.5 |
Добавление новых функций ------------------------------------------------------------------------ |
38 |
3.6 |
Определение и использование--------------------------------------------------------------------- |
39 |
3.7 |
Поток вычислений------------------------------------------------------------------------------------- |
39 |
3.8 |
Параметры и аргументы----------------------------------------------------------------------------- |
40 |
3.9 |
Переменные и параметры являются локальными------------------------------------------- |
40 |
3.10 |
Стековые диаграммы ------------------------------------------------------------------------------- |
41 |
3.11 Функции, возвращающие результат и не возвращающие результата --------------- |
42 |
|
3.12 Для чего нужны функции?------------------------------------------------------------------------- |
42 |
|
3.13 |
Отладка ------------------------------------------------------------------------------------------------- |
43 |
3.14 |
Словарь терминов------------------------------------------------------------------------------------ |
43 |
3.15 |
Упражнения-------------------------------------------------------------------------------------------- |
44 |
Глава 4 ----------------------------------------------------------------------------------------------------------- |
46 |
|
Углубленное изучение: разработка интерфейса ---------------------------------------------------- |
46 |
|
4.1 |
Модуль TurtleWorld ----------------------------------------------------------------------------------- |
46 |
4.2 |
Простые повторения---------------------------------------------------------------------------------- |
47 |
4.3 |
Упражнения---------------------------------------------------------------------------------------------- |
47 |
5
4.4 |
Инкапсуляция------------------------------------------------------------------------------------------- |
48 |
4.5 |
Обобщение----------------------------------------------------------------------------------------------- |
48 |
4.6 |
Разработка интерфейса ------------------------------------------------------------------------------ |
49 |
4.7 |
Рефакторинг (пересмотр программного кода) ----------------------------------------------- |
50 |
4.8 |
Способ разработки------------------------------------------------------------------------------------- |
51 |
4.9 |
Строки документации -------------------------------------------------------------------------------- |
51 |
4.10 |
Отладка ------------------------------------------------------------------------------------------------- |
52 |
4.11 |
Словарь терминов------------------------------------------------------------------------------------ |
52 |
4.12 |
Упражнения-------------------------------------------------------------------------------------------- |
52 |
Глава 5 ----------------------------------------------------------------------------------------------------------- |
54 |
|
Условия и рекурсия ------------------------------------------------------------------------------------------ |
54 |
|
5.1 |
Оператор % ---------------------------------------------------------------------------------------------- |
54 |
5.2 |
Булевы выражения------------------------------------------------------------------------------------ |
54 |
5.3 |
Логические операторы ------------------------------------------------------------------------------- |
55 |
5.4 |
Условное выполнение -------------------------------------------------------------------------------- |
55 |
5.5 |
Альтернативное выполнение ---------------------------------------------------------------------- |
55 |
5.6 |
Последовательные условия------------------------------------------------------------------------- |
56 |
5.7 |
Вложенные условия----------------------------------------------------------------------------------- |
56 |
5.8 |
Рекурсия-------------------------------------------------------------------------------------------------- |
57 |
5.9 |
Стековая диаграмма рекурсивных функций--------------------------------------------------- |
58 |
5.10 |
Бесконечная рекурсия ------------------------------------------------------------------------------ |
58 |
5.11 |
Ввод с клавиатуры ----------------------------------------------------------------------------------- |
59 |
5.12 |
Отладка ------------------------------------------------------------------------------------------------- |
60 |
5.13 |
Словарь терминов------------------------------------------------------------------------------------ |
60 |
5.14 |
Упражнения-------------------------------------------------------------------------------------------- |
61 |
Глава 6 ----------------------------------------------------------------------------------------------------------- |
63 |
|
Результативные функции---------------------------------------------------------------------------------- |
63 |
|
6.1 |
Возвращаемые значения----------------------------------------------------------------------------- |
63 |
6
6.2 |
Пошаговая разработка ------------------------------------------------------------------------------- |
64 |
6.3 |
Композиция---------------------------------------------------------------------------------------------- |
65 |
6.4 |
Булевы функции --------------------------------------------------------------------------------------- |
66 |
6.5 |
Больше примеров рекурсий------------------------------------------------------------------------- |
66 |
6.6 |
Шаг веры ------------------------------------------------------------------------------------------------- |
68 |
6.7 |
Еще один пример -------------------------------------------------------------------------------------- |
68 |
6.8 |
Проверка типов----------------------------------------------------------------------------------------- |
69 |
6.9 |
Отладка --------------------------------------------------------------------------------------------------- |
70 |
6.10 |
Словарь терминов------------------------------------------------------------------------------------ |
71 |
6.11 |
Упражнения-------------------------------------------------------------------------------------------- |
71 |
Глава 7 ----------------------------------------------------------------------------------------------------------- |
73 |
|
Итерация (повтор) ------------------------------------------------------------------------------------------- |
73 |
|
7.1 |
Многократное присваивание----------------------------------------------------------------------- |
73 |
7.2 |
Обновление---------------------------------------------------------------------------------------------- |
73 |
7.3 |
Команда while------------------------------------------------------------------------------------------- |
74 |
7.4 |
Инструкция break-------------------------------------------------------------------------------------- |
75 |
7.5 |
Квадратные корни------------------------------------------------------------------------------------- |
75 |
7.6 |
Алгоритмы----------------------------------------------------------------------------------------------- |
76 |
7.7 |
Отладка --------------------------------------------------------------------------------------------------- |
77 |
7.8 |
Словарь терминов ------------------------------------------------------------------------------------- |
77 |
7.9 |
Упражнения---------------------------------------------------------------------------------------------- |
78 |
Глава 8 ----------------------------------------------------------------------------------------------------------- |
79 |
|
Строки ----------------------------------------------------------------------------------------------------------- |
79 |
|
8.1 |
Строка как последовательность------------------------------------------------------------------- |
79 |
8.2 |
Функция len---------------------------------------------------------------------------------------------- |
79 |
8.3 |
Перебор элементов строки с помощью цикла for -------------------------------------------- |
80 |
8.4 |
Срезы строк---------------------------------------------------------------------------------------------- |
81 |
8.5 |
Строки принадлежат к неизменяемым типам данных ------------------------------------- |
81 |
7
8.6 |
Поиск ------------------------------------------------------------------------------------------------------ |
82 |
8.7 |
Цикл и подсчет------------------------------------------------------------------------------------------ |
82 |
8.8 |
Методы строк string ----------------------------------------------------------------------------------- |
82 |
8.9 |
Оператор in ---------------------------------------------------------------------------------------------- |
83 |
8.10 |
Сравнение строк-------------------------------------------------------------------------------------- |
84 |
8.11 |
Отладка ------------------------------------------------------------------------------------------------- |
84 |
8.12 |
Словарь терминов------------------------------------------------------------------------------------ |
85 |
8.13 |
Упражнения-------------------------------------------------------------------------------------------- |
86 |
Глава 9 ----------------------------------------------------------------------------------------------------------- |
88 |
|
Углубленное изучение: играем словами--------------------------------------------------------------- |
88 |
|
9.1 |
Чтение списков слов ---------------------------------------------------------------------------------- |
88 |
9.2 |
Упражнения---------------------------------------------------------------------------------------------- |
89 |
9.3 |
Поиск ------------------------------------------------------------------------------------------------------ |
89 |
9.4 |
Циклы с индексами------------------------------------------------------------------------------------ |
90 |
9.5 |
Отладка --------------------------------------------------------------------------------------------------- |
91 |
9.6 |
Словарь терминов ------------------------------------------------------------------------------------- |
92 |
9.7 |
Упражнения---------------------------------------------------------------------------------------------- |
92 |
Глава 10 --------------------------------------------------------------------------------------------------------- |
94 |
|
Списки ----------------------------------------------------------------------------------------------------------- |
94 |
|
10.1 |
Список как последовательность ----------------------------------------------------------------- |
94 |
10.2 |
Списки принадлежат к изменяемым типам данных --------------------------------------- |
94 |
10.3 |
Перебор элементов списка ------------------------------------------------------------------------ |
95 |
10.4 |
Операции со списками ------------------------------------------------------------------------------ |
96 |
10.5 |
Срезы списков----------------------------------------------------------------------------------------- |
96 |
10.6 |
Методы списков -------------------------------------------------------------------------------------- |
96 |
10.7 |
Отображение, фильтрация и сокращение ---------------------------------------------------- |
97 |
10.8 |
Удаление элементов--------------------------------------------------------------------------------- |
98 |
10.9 |
Списки и строки -------------------------------------------------------------------------------------- |
99 |
8
10.10 |
Объекты и значения ------------------------------------------------------------------------------- |
99 |
10.11 |
Создание синонимов----------------------------------------------------------------------------- |
100 |
10.12 |
Аргументы списков------------------------------------------------------------------------------- |
101 |
10.13 |
Отладка ---------------------------------------------------------------------------------------------- |
102 |
10.14 |
Словарь терминов -------------------------------------------------------------------------------- |
103 |
10.15 |
Упражнения ---------------------------------------------------------------------------------------- |
103 |
Глава 11-------------------------------------------------------------------------------------------------------- |
105 |
|
Словари -------------------------------------------------------------------------------------------------------- |
105 |
|
11.1 |
Словари в качестве счетчиков ------------------------------------------------------------------ |
106 |
11.2 |
Циклы и словари------------------------------------------------------------------------------------ |
107 |
11.3 |
Поиск ключей по их значениям ---------------------------------------------------------------- |
107 |
11.4 |
Словари и списки ----------------------------------------------------------------------------------- |
108 |
11.5 |
Memo --------------------------------------------------------------------------------------------------- |
110 |
11.6 |
Глобальные переменные------------------------------------------------------------------------- |
110 |
11.7 |
Отладка------------------------------------------------------------------------------------------------ |
112 |
11.8 |
Словарь терминов---------------------------------------------------------------------------------- |
112 |
11.9 |
Упражнения ------------------------------------------------------------------------------------------ |
113 |
Глава 12-------------------------------------------------------------------------------------------------------- |
114 |
|
Кортежи ------------------------------------------------------------------------------------------------------- |
114 |
|
12.1 |
Кортежи принадлежат к неизменяемому типу-------------------------------------------- |
114 |
12.2 |
Кортежи и операция присваивания----------------------------------------------------------- |
115 |
12.3 |
Кортежи в качестве возвращаемого значения--------------------------------------------- |
115 |
12.4 |
Кортежи с переменным числом аргументов ----------------------------------------------- |
116 |
12.5 |
Списки и кортежи ---------------------------------------------------------------------------------- |
116 |
12.6 |
Словари и кортежи--------------------------------------------------------------------------------- |
117 |
12.7 |
Сравнение кортежей------------------------------------------------------------------------------- |
119 |
12.8 |
Последовательности последовательностей ------------------------------------------------ |
119 |
12.9 |
Отладка------------------------------------------------------------------------------------------------ |
120 |
9
12.10 |
Словарь терминов -------------------------------------------------------------------------------- |
121 |
12.11 |
Упражнения ---------------------------------------------------------------------------------------- |
121 |
Глава 13-------------------------------------------------------------------------------------------------------- |
123 |
|
Углубленное изучение: выбор диапазона значений из структуры данных --------------- |
123 |
|
13.1 |
Частотный словарь--------------------------------------------------------------------------------- |
123 |
13.2 |
Случайные числа ----------------------------------------------------------------------------------- |
123 |
13.3 |
Гистограммы слов---------------------------------------------------------------------------------- |
124 |
13.4 |
Самые распространенные слова --------------------------------------------------------------- |
125 |
13.5 |
Опциональные параметры----------------------------------------------------------------------- |
126 |
13.6 |
Вычитание словарей------------------------------------------------------------------------------- |
126 |
13.7 |
Случайные слова------------------------------------------------------------------------------------ |
127 |
13.8 |
Анализ Маркова------------------------------------------------------------------------------------- |
127 |
13.9 |
Структуры данных --------------------------------------------------------------------------------- |
128 |
13.10 |
Отладка ---------------------------------------------------------------------------------------------- |
129 |
13.11 |
Словарь терминов -------------------------------------------------------------------------------- |
130 |
13.12 |
Упражнения ---------------------------------------------------------------------------------------- |
131 |
Глава 14-------------------------------------------------------------------------------------------------------- |
132 |
|
Файлы ---------------------------------------------------------------------------------------------------------- |
132 |
|
14.1 |
Персистентность (устойчивость)-------------------------------------------------------------- |
132 |
14.2 |
Чтение и запись ------------------------------------------------------------------------------------- |
132 |
14.3 |
Оператор форматирования---------------------------------------------------------------------- |
133 |
14.4 |
Имена файлов и пути------------------------------------------------------------------------------ |
133 |
14.5 |
Перехват ошибок ----------------------------------------------------------------------------------- |
134 |
14.6 |
Базы данных ----------------------------------------------------------------------------------------- |
135 |
14.7 |
Сериализация и десериализация -------------------------------------------------------------- |
136 |
14.8 |
Конвейеры-------------------------------------------------------------------------------------------- |
136 |
14.9 |
Создание собственных модулей---------------------------------------------------------------- |
137 |
14.10 |
Отладка ---------------------------------------------------------------------------------------------- |
138 |
10