Продолжаем поиск лучших книг по питону и сегодня на обзоре «Python без проблем» Даниэля Зингаро.
И судя по фотографиям в интернете именно про него можно написать «Студенты уговорили угарного препода из университета Торонто написать книгу по Python»:
Но в реальном мире всё более прозаичней и эту книгу Даниэлю предложили написать ребята из издательства No Starch Press, которые её и выпустили.
В России за выпуск книги отвечает издательство «Питер», а значит вы можете воспользоваться нашим промокодом «Shultais Education» на её покупку на сайте издательства.
Но для начала давайте разберемся, а стоит ли её в принципе покупать? И книга начинается с общей информации о программировании и языке Python, а также содержит полезные советы как будет более эффективно по ней заниматься.
При этом Даниэль один из немногих авторов, кто рекомендует практиковаться не только по примерам из книги, но и на сайтах с задачами по программированию. Так как на них быстрая обратная связь по решению, большое количество качественных задач, а также помощь сообщества.
И это хороший совет. Я тоже рекомендую поискать такие онлайн-задачники, какие-то есть на Степике, какие-то есть на англоязычных сайтах. Или же можете записаться на наш онлайн-курс по Python, сейчас там более 300 задач, которые реально развивают навыки программирования. Ссылка, как всегда, под видео.
Но вернемся к книге и приступим к работе. Именно так называется первая глава. И в ней автор сразу предлагает отталкиваться от задач и уже на базе них давать теорию. То есть мы будем изучать теорию в процессе решения прикладных проблем. А именно подсчета слов в тексте и вычисления объема конуса.
И сразу скажу, что мне очень понравилось, как автор легко и просто шаг шагом приходит к тому как подсчитать количество слов. Попутно рассказывая о строках, числах, методах, операциях, переменных и так далее. При этом Дэниэль не перегружает информацией и всё подробно объясняет, а в конце приводит полный текст программы. Единственное он предлагает написать её в блокноте, а это не лучший вариант. Всё-таки лучше воспользоваться каким-то более продвинутым редактором, тем же IDLE.
В конце главы автор объясняет, как отправить данную задачу на проверку на сайте DMOJ, чтобы система её автоматически проверила. В целом, мне пока всё нравится.
Вторая задача — расчет объема конуса, также написана простым и понятным языком.
Следующая глава книги посвящена принятию решений, то есть она про условия if else и это классно, ведь мы сразу начинаем расширять наш инструментарий программиста.
Глава также построена вокруг решения практической задачи, связанной с бейсбольным матчем. Тут Даниэль Зингаро знакомит нас с логическими типами, операторами сравнения и, разумеется, с if, elif, else.
В этой же главе он даёт еще одну практическую задачу, через которую сильнее расширяет возможности условий.
Далее, в третьей главе, нас знакомят с циклами, и автор начинает с цикла for. А так как списки мы еще не проходили, то проход он осуществляет по строкам, что очень наглядно. Разумеется, всё объяснение строится через решение задач.
Далее Дэниэль Зингаро рассказывает про while, а также операторы break и continue. При этом приводимые задачи становятся всё сложнее и объемней. И это логично, ведь у нас расширяется и инструментарий для их решения.
И в пятой главе мы знакомимся со списками. И я еще раз хочу подчеркнуть выбор задач в «Python без проблем». Они крутые. Наборы заданий есть во многих книгах из верхнего списка, но тут они прямо кайфовые. Какие-то условия могут показаться несколько нереальными, выдуманными, но эта выдумка как раз даёт изюминку при решении. Заставляет мозг немного подумать.
Вы только послушайте начало 13 задания: «У кондитерской Baker Brie есть несколько франшиз, каждая из которых продает потребителям выпечку. Чтобы отметить 13 лет работы, руководитель выдает франшизам награду …» И решается данная задача через вложенные списки, то есть через матрицы. Это даже круче чем в «Начинаем программировать» Тони Гэддиса.
Процесс обучения
Далее в «Python без проблем» мы изучаем написание собственных функций на примере задачи про карточную игру и Дэниэль уделяет ей 16 страниц. Я чуть подробнее остановился именно на этой задаче, чтобы протестировать качество изложения и в целом повествование строится так:
Сперва автор дает текст задачи и проводит некоторые размышления о том, как её можно решить. Так он приходит к выводу, что нужны функции, так как для решения надо много раз повторять одинаковые действия.
Затем Даниэль знакомит нас основами функций в нескольких мини-разделах. Рассказывает о запуске с параметрами и без, о локальных переменных, о возврате значений и так далее. Каждый блок сопровождается кодом с объяснениями.
После мы начинаем потихоньку писать функцию для решения поставленной задачи.
И в конце автор приводит полный текст программы, в котором в важных местах расставлены номера. А ниже, под кодом, идет его описание в соответствии с номерами. Точно такой же подход используется во всех книгах издательства No Starch Press.
В целом всё описано достаточно подробно с точки зрения поставленной задачи, но какого-то глубокого погружения в Python тут вы не найдете. Информация только по делу.
7 глава посвящена работе с файлами и тут автор приводит задачи из олимпиады по программированию про расстановку слов в строке. Она не сложная, но интересная и более того у неё есть вполне реальное применение.
В восьмой главе мы узнаем про словари и множества, а девятая посвящена разработке алгоритмов полного поиска или, другими словами, перебора.
«Фермер Джон купли для своих коров бассейн. Для наблюдения за бассейном Джон нанимает n спасателей.» — прекрасное начало задачи. Тут же мы узнаем про модули стандартной библиотеки, а в следующей, последней главе Даниэль Зингаро знакомит нас со сложностью алгоритмов и нотацией большое-О. И, собственно, в ней же он приводит небольшие алгоритмы с разной сложностью.
Вывод
На этом книга заканчивается. И, с одной стороны, она очень крутая, хорошие объяснения и великолепные задания.
Но, с другой стороны, тут несколько не хватает питона. Мы не рассмотрели классы, а также не сильно глубоко погружались в особенности языка.
Но зато глубоко погрузились именно в процесс написания кода, то есть непосредственно в программирование и алгоритмирование. А это важно.
И в целом я бы её порекомендовал, ученикам старших классов или студентам, которым интересно программирование. У которых в будущем будет достаточно времени на знакомство с классами, ООП, базами данных и тд. А сейчас им бы хотелось влиться в практическое программирование, решая кайфовые задачи.
Или в принципе если вы хотите познакомиться с программированием и все эти вещи про создание и парсинг сайтов, написание ботов, написание программ с графическим интерфейсом вам кажется чем-то далеким или неважным, а хочется именно покодить, да еще и не скучно, то данная книга вполне подойдет.