Оглавление
Об авторе
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
Благодарности
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
Введение
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Часть I. Основы
...............................................
16
Глава
1
.
Начало работы
.....................................
17
Подготовка среды программирования
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
17
Решение проблем с установкой
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
28
Запуск программ Python в терминале
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
29
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
31
Глава
2
.
Переменные и простые типы данных
..................
32
Что происходит при запуске hello_world .py
. . . . . . . . . . . . . . . . . . . . . . . . .
.
32
Переменные
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
32
Строки
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
35
Числа
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
41
Комментарии
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
44
Философия Python
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
45
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
47
Глава
3
.
Списки
............................................
48
Что такое список?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
48
Индексы начинаются с 0, а не с 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
49
Упорядочение списка
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
56
Ошибки индексирования при работе со списками
. . . . . . . . . . . . . . . . . . . .
.
59
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
61
Глава
4
.
Работа со спи
сками
.................................
62
Перебор всего списка
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
62
6
Оглавление
Создание числовых списков
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
69
Работа с частью списка
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
73
Кортежи
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
77
Стиль программирования
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
79
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
82
Глава
5
.
Команды if
.........................................
83
Проверка условий
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
84
Команды if
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
89
Использование команд if со списками
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
96
Оформление команд if
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
99
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
100
Глава
6
.
Словари
..........................................
101
Простой словарь
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
101
Работа со словарями
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
102
Перебор словаря
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
107
Вложение
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
113
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
119
Глава
7
.
Ввод данных и циклы while
..........................
120
Как работает функция input()
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
120
Циклы while
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
124
Использование цикла while со списками и словарями
. . . . . . . . . . . . . . . .
.
130
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
134
Глава
8
.
Функции
..........................................
135
Определение функции
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
135
Передача аргументов
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
137
Возвращаемое значение
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
142
Передача списка
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
147
Хранение функций в модулях
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
154
Стилевое оформление функций
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
158
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
159
Глава
9
.
Классы
...........................................
160
Создание и использование класса
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
161
Работа с классами и экземплярами
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
165
Наследование
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
170
Импортирование классов
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
176
Импортирование нескольких классов из модуля
. . . . . . . . . . . . . . . . . . . .
.
179
Стандартная библиотека Python
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
182
О
формление кла
ссов
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
184
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
184
Оглавление
7
Глава
10
.
Файлы и исключения
..............................
185
Чтение из файла
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
185
Запись в файл
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
193
Исключения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
195
Сохранение данных
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
204
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
209
Глава
11
.
Тестирование
....................................
210
Тестирование функции
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
210
Тестирование класса
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
216
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
222
Часть II. Проекты
.............................................
224
Проект 1. Инопланетное вторжение
Глава
12
.
Стреляющий корабль
..............................
226
Планирование проекта
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
226
Установка Pygame
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
227
Создание проекта игры
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
231
Добавление изображения корабля
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
235
Рефакторинг: модуль game_functions
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
238
Управление кораблем
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
240
В двух словах
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
247
Стрельба
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
248
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
255
Глава
13
.
Осторожно, пришельцы!
...........................
256
Анализ проекта
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
256
Создание пришельца
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
257
Построение флота
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
260
Перемещение флота
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
266
Уничтожение пришельцев
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
270
Завершение игры
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
274
Определение исполняемых частей игры
. . . . . . . . . . . . . . . . . . . . . . . . . .
.
280
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
280
Глава
14
.
Ведение счета
....................................
281
Добавление кнопки Play
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
281
Повышени
е сложности
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
288
Подсчет очков
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
291
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
307
8
Оглавление
Проект 2. Визуализация данных
Глава
15
.
Генерирование данных
............................
309
Установка matplotlib
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
309
Построение простого графика
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
311
Случайное блуждание
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
319
Моделирование бросков кубиков в Pygal
. . . . . . . . . . . . . . . . . . . . . . . . . .
.
327
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
335
Глава
16
.
Загрузка данных
..................................
336
Формат CSV
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
336
Формат JSON
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
348
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
361
Глава
17
.
Работа с API
......................................
362
Использование API веб-приложений
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
362
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
378
Проект 3. Веб-приложения
Глава
18
.
Знакомство с Django
...............................
380
Подготовка к созданию проекта
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
380
Начало работы над приложением
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
385
Построение других страниц
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
398
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
407
Глава
19
.
Учетные записи пользователей
.....................
408
Редактирование данных
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
408
Создание учетных записей пользователей
. . . . . . . . . . . . . . . . . . . . . . . . .
.
419
Редактирование данных
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
428
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
435
Глава
20
.
Оформление и развертывание приложения
...........
437
Оформление приложения Learning Log
. . . . . . . . . . . . . . . . . . . . . . . . . . .
.
437
Развертывание Learning Log
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
448
Итоги
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
465
Приложение А. Установка Python
...............................
466
Python в системе Linux
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
466
Python в
OS X
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
467
Python в Windows
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
468
Ключевые слова и встроенные функции Python
. . . . . . . . . . . . . . . . . . . . .
.
469
Приложение Б. Текстовые редакторы
...........................
471
Geany
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
471
Sublime Text
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
474