Академический Документы
Профессиональный Документы
Культура Документы
Джейсон Бриггс
М
«Манн, Иванов и Фербер»
2017
УДК 087.5:004.43
ББК 76.1,62:32.973.412
Б87
Бриггс, Джейсон
Б87 Python для детей. Самоучитель по программированию / Джейсон Бриггс ;
пер. с англ. Станислава Ломакина ; [науч. ред. Д. Абрамова]. — М. : Манн,
Иванов и Фербер, 2017. — 320 с.
ISBN 978-5-00100-616-9
УДК 087.5:004.43
ББК 76.1,62:32.973.412
5
8. КАК ПОЛЬЗОВАТЬСЯ КЛАССАМИ И ОБЪЕКТАМИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Разделяем сущности на классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Другие полезные свойства объектов и классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Инициализация объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9. ВСТРОЕННЫЕ ФУНКЦИИ PYTHON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Использование встроенных функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Работа с файлами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
10. ПОЛЕЗНЫЕ МОДУЛИ PYTHON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Создание копий с помощью модуля copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Ключевые слова и модуль keyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Генерация случайных чисел с помощью модуля random . . . . . . . . . . . . . . . . . . . . . . . . . 133
Управление оболочкой с помощью модуля sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Работа со временем и модуль time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Модуль pickle и сохранение информации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
11. И СНОВА ЧЕРЕПАШЬЯ ГРАФИКА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Начнем с обычного квадрата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Рисуем звезды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Рисуем машину . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Возьмемся за краски . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Функция рисования квадрата . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Рисуем заполненные квадраты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Рисуем закрашенные звезды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
12. БОЛЕЕ СОВЕРШЕННАЯ ГРАФИКА С МОДУЛЕМ TKINTER . . . . . . . . . . . . . . . . . . 161
Создаем кнопку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Именованные аргументы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Создаем холст для рисования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Рисование линий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Рисование прямоугольников . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Рисование дуг . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Рисование многоугольников . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Отображение текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Вывод изображений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Создание простой анимации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Реакция объектов на события . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Для чего еще нужен идентификатор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
ЧАСТЬ II
ПИШЕМ ИГРУ «ПРЫГСКОК!»
13. НАША ПЕРВАЯ ИГРА: «ПРЫГСКОК!» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Прыгающий мяч . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
6 Оглавление
Создаем игровой холст . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Создаем класс для мяча . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Добавим движение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
14. ДОДЕЛЫВАЕМ ПЕРВУЮ ИГРУ: «ПРЫГСКОК!» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Создаем ракетку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Добавим возможность проигрыша . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
ЧАСТЬ III
ПИШЕМ ИГРУ «ЧЕЛОВЕЧЕК СПЕШИТ К ВЫХОДУ»
15. СОЗДАЕМ ГРАФИКУ ДЛЯ ИГРЫ ПРО ЧЕЛОВЕЧКА . . . . . . . . . . . . . . . . . . . . . . . . . . 219
План игры про человечка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
Устанавливаем GIMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Создаем изображения для игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
16. РАЗРАБОТКА ИГРЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Создаем класс игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Создаем класс Coords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Проверка столкновений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Создаем класс Sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Добавляем платформы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
17. СОЗДАЕМ ЧЕЛОВЕЧКА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Инициализация спрайта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Поворот фигурки вправо и влево . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Прыжок фигурки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Что мы уже написали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
18. ДОДЕЛЫВАЕМ ИГРУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Анимация фигурки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Проверяем спрайт человечка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Дверь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Код игры целиком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Что мы узнали . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
ПОСЛЕСЛОВИЕ: КУДА ДВИГАТЬСЯ ДАЛЬШЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Игры и программирование графики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Языки программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
ПРИЛОЖЕНИЕ: КЛЮЧЕВЫЕ СЛОВА PYTHON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
ГЛОССАРИЙ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
ВВЕДЕНИЕ
8
что-то покажется вам непонятным или чересчур сложным, советую дей-
ствовать так:
Введение 9
Глава 6 — циклы for и while.
Глава 7 — введение в создание и использование функций.
Глава 8 — введение в классы и объекты. На этом этапе мы освоим до-
статочно базовых возможностей языка, чтобы использовать приемы про-
граммирования игр.
Глава 9 — обзор большинства встроенных функций Python.
Глава 10 — обзор нескольких модулей, которые идут в комплекте
с Python.
Глава 11 — снова о модуле turtle и рисовании более сложных фигур.
Глава 12 — модуль tkinter и создание продвинутой графики.
Главы 13 и 14 — пишем нашу первую игру, «Прыг-скок!», используя зна-
ния, полученные в предыдущих главах.
Главы от 15 до 18 — создаем вторую игру, «Человечек спешит к выходу».
При вводе кода из глав, посвященных играм, вы можете допустить ошиб-
ки. Если найти их самостоятельно не получится, скачайте код игры с сай-
та этой книги (python-for-kids.com/ или mann-ivanov-ferber.ru) и сравните
с ним вашу программу.
Послесловие — краткий обзор модуля PyGame и некоторых других по-
пулярных языков программирования.
Приложение — подробное описание ключевых слов Python.
Глоссарий — определения терминов из области программирования, ко-
торые встречаются в данной книге.
Повеселитесь!
Изучая эту книгу, помните, что программирование может быть очень ув-
лекательным. Воспринимайте его не как работу, а как способ создания
веселых игр и программ, которыми можно поделиться с другими людь-
ми. Изучение программирования отлично тренирует ум, и результаты
могут быть впечатляющими. Но главное — что бы вы ни делали, не забы-
вайте веселиться!
ЧАС ТЬ I
Учимся
программировать
1
НЕ ВСЕ ЗМЕИ ПРЕСМЫК АЮТСЯ
13
видеоигры и даже писать программы, помогающие делать домашние
задания.
Немного о языке
Как и люди, компьютеры «говорят» на разных языках, только языки
эти — компьютерные. Компьютерный язык служит для того, чтобы пере-
говариваться с компьютером, используя команды, понятные и компью-
теру, и человеку.
Некоторые языки программирования названы в честь людей (напри-
мер, Ада и Паскаль), другие названия являются простыми акронимами,
то есть аббревиатурой (к примеру, BASIC — от англ. Beginner’s All-purpose
Symbolic Instruction Code, универсальный код символических инструк-
Python — ций для начинающих), и уж совсем немногие языки названы в честь те-
букв. питон левизионных шоу — как Python. О да, язык программирования Python
(произносится «Пайтон», с ударением на первый слог, хотя имейте в виду,
что в России многие называют язык просто «питон») получил свое имя
благодаря телешоу «Летающий цирк Монти Пайтона», так что змея питон
здесь вовсе ни при чем.
Установка Python
IDLE (от Integrated Установить Python на компьютер совсем несложно. Сейчас мы шаг за шагом
DeveLopment разберем, как устанавливать его на системы Windows 7, Mac OS X и Ubuntu.
Environment) —
Также мы создадим на рабочем столе ярлык для IDLE — среды разработки
интегриро-
ванная среда Python-программ. Если Python уже установлен на вашем компьютере, може-
разработки те сразу переходить к разделу «Когда Python установлен» на стр. 20.
Customize
3. Ничего не меняйте в разделе установщика Customize Python, про-
Python — настро-
сто нажмите Next. ить Python
После окончания установки в меню Start (Пуск) должен появиться Start — пуск
раздел Python 3.
c:\Python32\Lib\idlelib\idle.pyw –n
Run — запустить 6. Отыщите в списке действий пункт Run Shell Script (Запустить
Shell Script — shell-скрипт) и перетащите его на пустую панель справа. Резуль-
скрипт оболочки тат будет выглядеть примерно так: