В этой книге подробно рассматривается решение более 100 задач: математических, словесных, комбинаторных, вероятностных, игровых. И это не учебные, надуманные задачи, которые обычно предлагаются в учебниках по программированию, а вполне конкретные, которые можно встретить в журналах, книгах и на конкурсах по программированию. Изучать теорию можно бесконечно, но без практического применения знаний она ничего не стоит. Только ежедневные упражнения в решении самых разнообразных задач помогут вам стать настоящими программистами.
Помните, что любую задачу можно решить несколькими способами, и не всегда в книге приводится лучшее из них. Цель книги более скромная: показать, как можно решить задачу наиболее простым и понятным способом. Начинающим важно научиться решать задачи именно так, потому что более быстрые/эффективные решения обычно гораздо сложнее и совершенно непонятны начинающим программистам. И тем не менее вы должны искать собственные решения предложенных задач – только так вы научитесь разрабатывать проекты самостоятельно.
Кроме собственно решения задач, мы разработаем и «вспомогательные» проекты:
- Делимость чисел
- Наибольший общий делитель
- Наименьшее общее кратное
- Простые числа. Решето Эратосфена
- Факторизация чисел
- Совершенные числа
- Числовые ребусы
- Факториал
- Числа Фибоначчи
- Генерирование перестановок
- Генерирование сочетаний
- Разбиение числа на слагаемые
Книга охватывает все ключевые элементы языка Питон:
- Числа
- Строки
- Логический тип
- Локальные и глобальные переменные
- Арифметические и логические выражения
- Условный оператор if – elif - else
- Списки
- Кортежи
- Словари
- Циклы for и while
- Вложенные и бесконечные циклы
- Операторы return, continue, break
- Функции с параметрами и без параметров
- Лямбда-функции
- Классы
В самом начале книги находится Тематический указатель, который поможет вам ориентироваться в проектах и легко находить нужный. В конце многих глав имеются задания для самостоятельного решения.
Для решения задач используются следующие методы и алгоритмы:
- метод грубой силы, полный перебор (brute force)
- поиск в глубину d**epth-first search, DFS)
- динамическое программирование (dynamic programming)
- алгоритм Эратосфена (The Sieve of Eratosthenes)
- простой и быстрый алгоритм Евклида
- рекурсия (recursion)
Все проекты разрабатывались в Microsoft Visual Studio 2015 с Python Tools for Visual Studio 2015 и в PyCharm 5 . Поскольку исходный код программ с расширением **.*py не содержит никакой специфической информации, то может быть запущен в любой другой среде разработки программ на Питоне, хотя бы в IDLE.
Везде используется версия Python 3.5, но исходный код будет работать и в более ранних версиях Питона (но не 2.7!).
Книга здесь:
Исходники здесь:
Ролик на Ютубе здесь: