Оглавление....4
Введение....6
Как обучают языкам программирования?....6
И вот появился язык Python....8
Структура книги....8
Благодарности....9
Об авторе....10
Урок 1. Ввод/вывод, переменные, условия....11
1.1. Привет, мир!....11
1.2. Как тебя зовут?....14
1.3. Чему равно 12 + 34?....16
1.4. Линейное уравнение....19
1.5. Тип треугольника....27
1.6. Стакан чая и кружка кофе....30
Урок 2. Поток чисел, циклы и списки....35
2.1. Поток чисел, рекуррентные формулы....35
2.2. Поток чисел, списки....41
2.3. Векторы: длина, сумма, скалярное произведение....47
Урок 3. Флаги. Структурное программирование и стиль Python....52
3.1. Эпидемия на корабле....52
3.2. Является ли слово палиндромом?....56
3.3. Поиск и замена подстроки в строке....60
3.4. Сравнение чисел между собой. Множества....63
Урок 4. Словари, рекуррентный индекс в списке....77
4.1. Палиндром путем перестановки букв....77
4.2. Подстановки....84
Урок 5. Двумерные списки....89
5.1. Сложение, транспонирование и умножение матриц....89
5.2. Магический квадрат....99
Итоги уроков 1–5....106
Урок 6. Декомпозиция программы в функции....107
6.1. Математические формулы как функции....107
6.2. Функция факториал с циклом....109
6.3. Библиотека формул комбинаторики....111
6.4. Декомпозиция магического квадрата в функции....115
Урок 7. Рекурсии....118
7.1. Рекурсивный факториал....118
7.2. Числа Фибоначчи без списка, списком, с рекурсией....120
7.3. Быстрое возведение в степень....126
7.4. Мемоизация чисел Фибоначчи....129
7.5. Генерация слов и перестановок....133
Урок 8. Динамика по подотрезкам....140
8.1. Палиндром максимальной длины вычеркиванием букв....140
8.2. Максимальный квадрат в матрице....156
Урок 9. Функциональное программирование....164
9.1. Сумма факториалов в функциональном стиле....164
9.2. Стандартные функционалы Python....171
9.3. Стандартные функционалы для «Эпидемии на корабле»....174
9.4. Стандартные функционалы Python для суммы факториалов....176
9.5. Частичное применение функции на примере степени....179
9.6. Универсальный мемоизатор....185
9.7. Декораторы....192
9.8. Генераторы....200
Итоги уроков 6–9....203
Урок 10. Объектно-ориентированное программирование предметной области «Геометрия»....205
10.1. Класс «точка»....205
10.2. Предметная область «Геометрия»....212
10.3. Геометрическая фигура «многоугольник»....223
10.4. Составные фигуры....228
Урок 11. Матрица в объектно-ориентированном стиле....232
11.1. Конструктор, индексатор....232
11.2. Транспонирование, сложение, умножение....234
11.3. Определитель, обратная матрица, возведение в степень....236
Урок 12. Программирование сложных коллекций....247
12.1. Функторы....247
12.2. Коллекция «кольцо» и задача Иосифа Флавия....254
12.3. Мемоизация максимального квадрата матрицы в словаре....261
Итоги уроков 10–12....269
Заключение....271
Предметный указатель....272
В 12 уроках показаны основы программирования и базовые конструкции языка Python. Изложены принципы различных стилей программирования. Даны понятия ввода-вывода, переменных, условий, потока чисел, циклов и списков, массивов, функций и рекурсий. Рассмотрены особенности структурного, объектно-ориентированного и функционального программирования. В каждой главе предложены практические задачи и дано их пошаговое решение с подробным описанием алгоритма.
Для начинающих программистов
Python используется как в коммерческих проектах, так и для обучения новичков программированию. Кроме того, он наиболее удобен для сдачи ЕГЭ по информатике. На практических примерах, подробно рассмотренных в отдельных уроках, читатель изучит основные конструкции Python, освоит базовые приемы и стили программирования. Решение каждой задачи приводится в книге пошагово — так, как разработчики пишут программы в реальности. Подробные разборы задач и описания алгоритмов основаны на практических занятиях автора со своими учениками. С помощью этой книги читатель не только изучит язык Python, но и научится программировать, что, как показывает практика, совсем не одно и то же.