Мэтиз. Изучаем Python. Crash course2 n d e d i t i o na h a n d s o n, p r o j e c t b a s e d i n t r o d u c t i o n t o p r o g r a m m i n g
Скачать 6.2 Mb.
|
PYTHON CRASH COURSE 2 N D E D I T I O N A H a n d s - O n , P r o j e c t - B a s e d I n t r o d u c t i o n t o P r o g r a m m i n g by Eric Matthes PYTHON CRASH COURSE 2 N D E D I T I O N A H a n d s - O n , P r o j e c t - B a s e d I n t r o d u c t i o n t o P r o g r a m m i n g by Eric Matthes Э Р И К М Э Т И З ИЗУЧАЕМ PYTHON П Р О Г Р А М М И Р О В А Н И Е И Г Р, В И З У А Л И З А Ц И Я Д А Н Н Ы Х, В Е Б - П Р И Л О Ж Е Н И Я 3-Е И З Д А Н И Е ББК 32.973.2-018.1 УДК 004.43 М97 Мэтиз Эрик М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения. 3-е изд. — СПб.: Питер, 2020. — 512 с.: ил. — (Серия «Библиотека программи- ста»). ISBN 978-5-4461-1528-0 «Изучаем Python» — это самое популярное в мире руководство по языку Python. Вы сможете максимально быстро освоить Python, научитесь писать программы, устранять ошибки и создавать работающие приложения. В первой части книги вы познакомитесь с основными концепциями программирования, такими как переменные, списки, классы и циклы, а простые упражнения познакомят вас с шаблонами чистого кода. Вы узнаете, как делать программы интерактивными и как протестировать код, прежде чем до- бавлять в проект. Во второй части вы примените новые знания на практике и создадите три проекта: аркадную игру в стиле Space Invaders, визуализацию данных с удобными библиотеками Python и про- стое веб-приложение, которое можно быстро развернуть онлайн. 16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. № 436-ФЗ.) ББК 32.973.2-018.1 УДК 004.43 Права на издание получены по соглашению с No Starch Press. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как на- дежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. Издательство не несет ответственности за доступность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет- ресурсы были действующими. ISBN 978-1593279288 англ. © 2019 by Eric Matthes. Title of English-language original: Python Crash Course, 2nd Edition: A Hands-On, Project-Based Introduction to Programming, ISBN 978-1-59327-928-8, published by No Starch Press. ISBN 978-5-4461-1528-0 © Перевод на русский язык ООО Издательство «Питер», 2020 © Издание на русском языке, оформление ООО Издательство «Питер», 2020 © Серия «Библиотека программиста», 2020 Оглавление Отзывы о книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 О научном редакторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Предисловие к третьему изданию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Для кого написана эта книга? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Чему эта книга вас научит? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Онлайн-ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Почему именно Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 ЧАСТЬ I. ОСНОВЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Глава 1 . Первые шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Подготовка среды программирования . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Python в разных операционных системах . . . . . . . . . . . . . . . . . . . . . . . . 23 Запуск программы Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Решение проблем с установкой . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Запуск программ Python в терминале . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Глава 2 . Переменные и простые типы данных . . . . . . . . . . . . . . . . . . . . . . 33 Что происходит при запуске hello_world .py . . . . . . . . . . . . . . . . . . . . . . 33 Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 6 Оглавление Дзен Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Глава 3 . Списки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Что такое список? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Индексы начинаются с 0, а не с 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Изменение, добавление и удаление элементов . . . . . . . . . . . . . . . . . . . 53 Упорядочение списка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Ошибки индексирования при работе со списками . . . . . . . . . . . . . . . . . 62 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Глава 4 . Работа со списками . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Перебор всего списка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Предотвращение ошибок с отступами . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Создание числовых списков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Работа с частью списка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Кортежи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Стиль программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Глава 5 . Команды if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Проверка условий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Команды if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Использование команд if со списками . . . . . . . . . . . . . . . . . . . . . . . . . 100 Оформление команд if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Глава 6 . Словари . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Простой словарь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Работа со словарями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Перебор словаря . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Вложение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 Глава 7 . Ввод данных и циклы while . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Как работает функция input() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Циклы while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Использование цикла while со списками и словарями . . . . . . . . . . . . . . 138 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Глава 8 . Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Определение функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Передача аргументов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 Оглавление 7 Возвращаемое значение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Передача списка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Хранение функций в модулях . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Стилевое оформление функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Глава 9 . Классы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Создание и использование класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Работа с классами и экземплярами . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Импортирование классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Стандартная библиотека Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Оформление классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Глава 10 . Файлы и исключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Чтение из файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Запись в файл . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Исключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Сохранение данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Глава 11 . Тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Тестирование функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 Тестирование класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 ЧАСТЬ II. ПРОЕКТЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Программирование игры на языке Python . . . . . . . . . . . . . . . . . . . . . . 238 Визуализация данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 Веб-приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 ПРОЕКТ 1. ИГРА «ИНОПЛАНЕТНОЕ ВТОРЖЕНИЕ» . . . . . . . . . . . . . . . . 239 Глава 12 . Инопланетное вторжение . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Планирование проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Установка Pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Создание проекта игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 Добавление изображения корабля . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 Рефакторинг: методы _check_events() и _update_screen() . . . . . . . . . . 249 Управление кораблем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 В двух словах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 8 Оглавление Стрельба . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Глава 13 . Осторожно, пришельцы! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Анализ проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Создание пришельца . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Построение флота . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 Перемещение флота . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 Уничтожение пришельцев . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 Завершение игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Определение исполняемых частей игры . . . . . . . . . . . . . . . . . . . . . . . . 291 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 Глава 14 . Ведение счета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Добавление кнопки Play . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 Повышение сложности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Подсчет очков . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 ПРОЕКТ 2. ВИЗУАЛИЗАЦИЯ ДАННЫХ . . . . . . . . . . . . . . . . . . . . . . . . . . 318 Глава 15 . Генерирование данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 Установка matplotlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 Построение простого графика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 Случайное блуждание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 Моделирование бросков кубиков в Plotly . . . . . . . . . . . . . . . . . . . . . . . 338 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Глава 16 . Загрузка данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Формат CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Построение карт с глобальными наборами данных: формат JSON . . . . 361 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Глава 17 . Работа с API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Использование API веб-приложений . . . . . . . . . . . . . . . . . . . . . . . . . . 374 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 ПРОЕКТ 3. ВЕБ-ПРИЛОЖЕНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 Глава 18 . Знакомство с Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Подготовка к созданию проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 Начало работы над приложением . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 Построение других страниц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422 Оглавление 9 Глава 19 . Учетные записи пользователей . . . . . . . . . . . . . . . . . . . . . . . . 423 Редактирование данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Создание учетных записей пользователей . . . . . . . . . . . . . . . . . . . . . . 435 Редактирование данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 Глава 20 . Оформление и развертывание приложения . . . . . . . . . . . . . . . 454 Оформление приложения Learning Log . . . . . . . . . . . . . . . . . . . . . . . . 454 Развертывание Learning Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 Послесловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 ПРИЛОЖЕНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 Приложение А . Установка Python и диагностика проблем . . . . . . . . . . . . 486 Python в Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 Python в macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 Python в системе Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 Ключевые слова Python и встроенные функции . . . . . . . . . . . . . . . . . . 489 |