Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ThinkPython_v_1_1_24_Kart_Python_3_2_RU_v_1_06

.pdf
Скачиваний:
3155
Добавлен:
14.03.2016
Размер:
3.01 Mб
Скачать

Думать на языке 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]