Python без проблем: решаем реальные задачи и пишем полезный код - Даниэль Зингаро - E-Book

Python без проблем: решаем реальные задачи и пишем полезный код E-Book

Даниэль Зингаро

0,0

Beschreibung

Компьютер способен решить практически любую задачу, если ему дать правильные инструкции. С этого и начинается программирование. Даниэль Зингаро создал книгу для начинающих, чтобы вы сразу учились решать интересные задачи, которые использовались на олимпиадах по программированию, и развивали мышление программиста. В каждой главе вам даются задания, собственные решения можно выложить на сайт и получить оценку профи. Вы на практике освоите основные возможности, функции и методы языка Python и получите четкое представление о структурах данных, алгоритмах и других основах программирования. Дополнительные упражнения потребуют от вас усилий, вы должны будете самостоятельно изучить новые понятия, а вопросы с несколькими вариантами ответов заставят задуматься об особенностях работы каждого фрагмента кода. Вы узнаете, как: •запускать программы на Python, работать со строками и использовать переменные; •писать программы, принимающие решения; •повысить эффективность кода с помощью циклов while и for; •использовать множества, списки и словари для организации, сортировки и поиска данных; •разрабатывать программы с использованием функций и методики нисходящего проектирования; •создавать алгоритмы поиска и использовать нотацию «О большое» для разработки более эффективного кода. К концу книги вы не только овладеете Python, но и научитесь тому типу мышления, который необходим для решения задач. Языки программирования приходят и уходят, а подходы к решению проблем останутся с вами навсегда!

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 398

Veröffentlichungsjahr: 2023

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Даниэль Зингаро
Python без проблем: решаем реальные задачи и пишем полезный код
2023

Переводчик С. Черников

Даниэль Зингаро

Python без проблем: решаем реальные задачи и пишем полезный код. — СПб.: Питер, 2023.

ISBN 978-5-4461-1920-2

© ООО Издательство "Питер", 2023

Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.

Оглавление

Об авторе
О научном редакторе
Благодарности
Введение
Интернет-ресурсы
Для кого предназначена книга
Зачем изучать Python
Установка Python
Как читать эту книгу
Сайты с задачами для программистов
Создание учетной записи
Об этой книге
От издательства
1. Приступим к работе
Что мы будем делать
Оболочка Python
Задача 1. Количество слов
Строки
Целые числа и числа с плавающей точкой
Подсчет слов с использованием переменной
Чтение ввода от пользователя
Вывод результата
Решение задачи: полная программа на Python
Задача 2. Объем конуса
Усложняем математику
Преобразование между строками и целыми числами
Решение задачи
Резюме
Упражнения
Примечания
2. Принятие решений
Задача 3. Команда-победитель
Условное выполнение
Логический тип
Операторы сравнения
Оператор if
Решение задачи
Задача 4. Телемаркетологи
Логические операторы
Решение задачи
Комментарии
Перенаправление ввода и вывода
Резюме
Упражнения
Примечания
3. Повторяющийся код: определенные циклы
Задача 5. Три чашки
Зачем нужны циклы
Цикл for
Вложенные операторы
Решение задачи
Задача 6. Занятые места
Новый вид циклов
Индексирование
Функция range и циклы
Использование функции range для перебора индексов
Решение задачи
Задача 7. Тарифный план
Чтение ввода в цикле
Решение задачи
Резюме
Упражнения
Примечания
4. Повторяющийся код: неопределенные циклы
Задача 8. Игровые автоматы
Пример тестового случая
Ограничения цикла for
Цикл while
Решение задачи
Оператор деления по модулю
Форматированные строки
Задача 9. Список воспроизведения
Срезы строк
Решение задачи
Задача 10. Секретное предложение
Еще одно ограничение циклов for
Перебор индексов циклом while
Решение задачи
Операторы break и continue
Резюме
Упражнения
Примечания
5. Упорядоченные значения и списки
Задача 11. Деревни у дороги
Так зачем нам списки?
Списки
Изменяемость списков
Введение в методы
Методы списков
Решение задачи
Как избежать повторов кода: еще два решения
Задача 12. Студенческая поездка
Разделение строк и объединение списков
Изменение значений списка
Решение задачи (большей ее части)
Теперь про хитрость
Задача 13. Бонус «Бейкера»
Табличные данные
Решение задачи
Резюме
Упражнения
Примечания
6. Пишем собственные функции
Задача 14. Карточная игра
Тестовый пример
Определение и вызов функций
Документация по функциям
Решение задачи
Задача 15. Фигурки
Моделирование коробок
Нисходящее проектирование
Резюме
Упражнения
Примечания
7. Чтение из файлов и запись в них
Задача 16. Форматирование эссе
Работа с файлами
Решение задачи
Задача 17. Посевная на ферме
Тестовый пример
Нисходящее проектирование
Резюме
Упражнения
Примечания
8. Организация данных с помощью множеств и словарей
Задача 18. Адреса электронной почты
Использование списков
Эффективность поиска по списку
Множества
Методы множеств
Эффективность поиска по множеству
Решение задачи
Задача 19. Общие слова
Тестовый пример
Словари
Индексирование словарей
Перебор словарей в цикле
Инвертирование словаря
Решение задачи
Задача 20. Города и штаты
Тестовый пример
Решение задачи
Резюме
Упражнения
Примечания
9. Разработка алгоритмов полного поиска
Задача 21. Спасатели
Тестовый пример
Решение задачи
Задача 22. Лыжная база
Тестовый пример
Решение задачи
Задача 23. Коровий бейсбол
Использование трех вложенных циклов
Сортировка прежде всего
Модули Python
Модуль bisect
Решение задачи
Резюме
Упражнения
Примечания
10. «О большое» и эффективность программ
Проблема со сроками
«О большое»
Задача 24. Самый длинный шарф
Тестовый пример
Алгоритм 1
Алгоритм 2
Задача 25. Раскрашивание лент
Тестовый пример
Решение задачи
Резюме
Упражнения
Примечания
Послесловие
Рекомендуем прочитать

Моему отцу, который научил понимать компьютеры, и моей матери, которая научила понимать людей.

Об авторе

Доктор Даниэль Зингаро — адъюнкт-профессор информатики и преподаватель в Университете Торонто, обладатель множества наград. Его основная область исследований — образование в сфере информатики и вопросы, связанные с тем, как студенты осваивают (пусть порой и плохо) информатику. Даниэль написал книгу Algorithmic Thinking1 (No Starch Press, 2021), которая помогает студентам изучать и использовать алгоритмы и структуры данных.

1Зингаро Д. Алгоритмы на практике. — СПб.: Питер, 2023.

О научном редакторе

Люк Савчак — редактор-фрилансер и программист-любитель. Ему нравится превращать прозу в стихи, он написал пособие по нарезанию нужного количества кусочков торта и заумную версию Boggle, разобраться в которой сможет только преподаватель математики. Сейчас он преподает французский и английский языки на окраине Торонто. Люк также пишет стихи и сочиняет музыку для фортепиано, чем с удовольствием зарабатывал бы себе на жизнь, если бы мог. Его сайт: https://sawczak.com/.

Благодарности

Неужели мне снова довелось поработать с ребятами из No Starch Press? Барбара Йен и Билл Поллок предложили мне написать эту книгу. Алекс Фрид, ведущий редактор, помог в работе над рукописью. Я благодарю всех, кто участвовал в создании книги, включая редактора Кима Вимпсетта, выпускающего редактора Кэсси Андредис и дизайнера Роба Гейла. Мне очень повезло с ними.

Спасибо Университету Торонто, который предоставил мне время и место для написания книги. Я благодарю Люка Савчака, моего научного редактора, за исчерпывающую рецензию.

Я благодарен всем, кто занимался решением задач, описанных в этой книге, и соревновательным программированием в целом. Спасибо администраторам DMOJ за поддержку моей работы.

Благодарю своих родителей за то, что они поистине способны на все. А меня они просили лишь об одном — учиться.

Спасибо Дояли за то, что позволила мне уделить достаточно времени написанию книги и понимала, как много для этого требуется.

Наконец, благодарю всех вас за то, что вы купили эту книгу и хотите учиться.

Введение

Компьютеры нужны нам для выполнения каких-то задач и решения проблем. Наверняка вы использовали текстовый редактор, чтобы написать эссе или письмо. Возможно, вы пользовались программами для работы с электронными таблицами, чтобы свести дебет с кредитом. Быть может, с помощью графического редактора чуть-чуть обрабатывали свои фотографии. Сейчас трудно себе представить, как можно было бы сделать все это без компьютера. И текстовые процессоры, и электронные таблицы, и графические редакторы невероятно полезны.

Эти программы — инструменты общего назначения, предназначенные для выполнения широкого круга задач. Вот только написали их другие люди, не мы. А что делать, если имеющаяся программа не дает нам всего необходимого?

В книге наша цель — понять свой компьютер и выйти за рамки того, что пользователь может сделать с помощью уже существующих программ. Если точнее, вы будете писать собственные программы. Но это не будет текстовый или графический редактор либо же редактор таблиц. Это огромные задачи, которые, к счастью, до нас уже решили. Вы всего лишь научитесь писать небольшие программы для решения задач, с которыми в ином случае не справились бы. Я помогу вам научиться давать компьютеру команды, которые подскажут ему, как шаг за шагом решить вашу задачу.

Чтобы отдать компьютеру команду, мы пишем код на языке программирования. Он определяет правила написания кода и действия компьютера в ответ на этот код.

Вы будете учиться программировать на языке Python. Это серьезный навык, который не стыдно будет упомянуть в резюме. Но помимо освоения самого Python, вы научитесь тому типу мышления, который необходим для решения проблем с помощью компьютера. Языки программирования появляются и исчезают, а вот алгоритмический подход к задачам — нет. Я надеюсь, что эта книга поможет вам превратиться из конечного пользователя в программиста и вы получите удовольствие от изучения предложенного материала.

Интернет-ресурсы

Ресурсы для работы с книгой, включая примеры кода и дополнительные упражнения, можно скачать, перейдя по ссылке https://nostarch.com/learn-code-solving-problems/ .

Для кого предназначена книга

Эта книга для всех, кто хочет научиться писать компьютерные программы для решения своих задач.

Во-первых, вы, возможно, слышали о языке программирования Python и хотите научиться писать код на нем. В следующем разделе я объясню, почему именно Python отлично подходит в качестве первого языка программирования для изучения. Здесь вы много узнаете о Python и позже сможете прочесть более сложные книги об этом языке.

Во-вторых, если вы не слышали о Python или просто хотите узнать, что такое программирование, не волнуйтесь, вам эта книга тоже подойдет! Она научит вас понимать суть программирования. У программистов есть свои методы разбивать задачи на небольшие части и находить их решения с помощью кода. На этом уровне не имеет значения, какой именно язык программирования используется, потому что мышление программиста не привязано к какому-либо определенному языку.

И в-третьих, вам может быть интересно изучить какой-нибудь другой язык программирования, например C ++, Java, Go или Rust. Многое из того, что вы узнаете в ходе изучения Python, будет полезно при усвоении других языков программирования. Кроме того, Python сам по себе заслуживает изучения. А почему именно он — об этом дальше.

Зачем изучать Python

За годы преподавания я понял, что Python отлично подходит в качестве первого языка программирования. По сравнению с кодом на других языках код Python часто бывает лучше структурирован и более удобочитаем. Как только вы привык­нете к нему, окажется, что зачастую он читается почти как обычный английский!

Кроме того, у Python есть то, чего нет в других языках, например мощные инструменты для управления данными и их хранения. Многие из этих инструментов мы будем использовать в книге.

Python — это не только отличный язык для обучения, но еще и один из самых востребованных языков программирования в мире. Его используют для написания веб-приложений, игр, средств визуализации, ПО для машинного обучения и многого другого.

В итоге получаем язык, который и для обучения хорош, и для профессиональной деятельности полезен. О большем и мечтать нельзя!

Установка Python

Чтобы начать программировать на Python, нужно его сперва установить. С этого и начнем.

В основном используются две версии языка: Python 2 и Python 3. Python 2 — это более старая версия, которая больше не поддерживается. В этой книге мы будем работать с Python 3, именно ее следует установить на свой компьютер.

Python 3 далеко шагнул по сравнению с Python 2, но и в версии 3 он постоянно меняется. Первой версией Python 3 был Python 3.0. Затем выпустили Python 3.1, Python 3.2 и т.д. На момент написания книги последней версией Python 3 был Python 3.9. Для решения примеров из этой книги достаточно будет версии Python 3.6, но я рекомендую установить последнюю версию Python и поработать с ней.

Чтобы установить Python, выполните приведенные далее инструкции для вашей операционной системы.

Windows

В ОС Windows Python по умолчанию не установлен. Чтобы установить его, на сайте https://www.python.org/ перейдите в раздел Downloads. Вам будет предложено загрузить последнюю версию Python для Windows. Щелкните на ссылке, чтобы загрузить Python, а затем запустите установщик. На одном из первых экранов процесса установки выберите опцию AddPython3.9toPATH или AddPythontoenvironmentvariables — это значительно упрощает запуск. (При обновлении Python вам может потребоваться нажать кнопку Customizeinstallation, чтобы увидеть этот вариант.)

macOS

В macOS по умолчанию Python 3 не установлен. Чтобы установить его, на сайте https://www.python.org/ перейдите в раздел Downloads. Вам будет предоставлена возможность загрузки последней версии Python для macOS. Щелкните на ссылке, чтобы загрузить Python, а затем запустите установщик.

Linux

В Linux Python 3 установлен по умолчанию, но это может быть более старая версия, чем нам нужно. Инструкции по установке могут различаться в зависимости от того, какой дистрибутив Linux вы используете. Установить новейшую версию Python можно с помощью диспетчера пакетов.

Как читать эту книгу

Если вы прочитаете эту книгу от корки до корки за один присест, то мало чему научитесь. Это все равно что пытаться научиться играть на фортепиано, пригласив домой пианиста и посмотрев на него часик-другой, а затем выгнать его, радостно напевая песенку. Практические навыки так не усваиваются.

Я расскажу, как стоит читать эту книгу.

• Распределите работу равномерно. Усваивать информацию большими пор­циями гораздо менее эффективно, чем разбив работу на маленькие фрагменты. Как только почувствуете усталость, сделайте перерыв. Никто не сможет сказать вам, сколько времени нужно работать до перерыва. И точно так же никто не может предугадать, сколько времени потребуется на изучение всей книги. Это зависит от ваших возможностей.

• Делайте паузы, чтобы проверить, все ли вы поняли. Читая что-то новое, мы часто думаем, что поняли новый материал лучше, чем это есть на самом деле. Приходится тратить время на согласование того, что мы знаем и что мы думаем, что знаем. Именно поэтому я добавил к ключевым моментам каждой главы парочку вопросов с несколькими вариантами ответов, которые помогут вам понять, что к чему. Отнеситесь к ним серьезно! Прочтите каждый вопрос и дайте ответ, не проверяя ответы на компьютере. Затем прочтите мой ответ и пояснение к нему. Это позволит убедиться, что вы на правильном пути. Если же ответили неправильно или ответили правильно, но по неправильной причине, устраните пробелы в знаниях, прежде чем двинуться дальше. Возможно, вам придется еще поупражняться с соответствующей функцией Python или перечитать материал из книги, поискать в Интернете дополнительную информацию или примеры.

• Практикуйтесь в программировании. Практика во время чтения поможет вам закрепить понимание ключевых моментов. Но вам нужно нечто большее, чтобы искусно решать задачи и стать программистом. Вам нужно попрактиковаться в использовании Python для решения задач, которых в этой книге не будет, которые окажутся новыми и незнакомыми. В конце каждой главы приведен список практических упражнений. Постарайтесь выполнить как можно больше.

Чтобы научиться программировать, требуется время. Не расстраивайтесь, если вы будете двигаться слишком медленно или станете делать слишком много ошибок. И не пугайтесь напыщенных павлинов, которых немало в Интернете. Лучше побольше общайтесь с людьми, которые могут вам помочь.

Сайты с задачами для программистов

За основу для этой книги я взял задачи из онлайн-задачников для программистов. На таких сайтах есть репозитории задач по программированию, которые решают любители со всего мира. Вы можете отправить туда свое решение в виде кода Python — и сайт протестирует его. Если код даст правильный ответ для всех тестов, то, скорее всего, ваше решение правильное. Если же он дает неправильный ответ для одного или нескольких тестовых примеров, значит, его требуется доработать.

Есть ряд причин, по которым именно сайты с задачами для программистов нравятся мне больше других сайтов для обучения программированию.

• Быстрая обратная связь. Быстрая и целенаправленная обратная связь имеет решающее значение на ранних этапах обучения программированию. Ответ можно получить сразу же, как только вы отправите свой код.

• Качественные задачи. Я считаю, что задачи по программированию на таких сайтах действительно хороши. Одни использовались на различных соревнованиях по программированию. Другие написаны людьми, которые связаны с такими сайтами или просто хотят помочь всем желающим в обучении.

• Количество задач. В онлайн-задачнике вы найдете сотни задач. Для этой книги я отобрал лишь малую их часть. Если вам нужно побольше практики, поверьте, на таком сайте вы найдете все необходимое.

• Помощь сообщества. Сайт с задачами для программистов позволяет пользователям читать комментарии и отвечать на них. Если вы застряли на какой-то проблеме, просмотрите комментарии — и найдете в них подсказки, оставленные другими. Если это не помогает, можете написать собственный комментарий и попросить людей о помощи. Но даже после успешного решения задачи ваше обучение не заканчивается, ведь онлайн-задачник позволяет просматривать код, присланный другими. Изучите уже опубликованные материалы и сравните их со своим решением. Всегда есть несколько способов справиться с задачей. Возможно, поначалу вы будете принимать решения интуитивно, но позже вам откроются новые возможности. Общение — важный шаг в овладении программированием.

Создание учетной записи

По ходу книги мы будем пользоваться сразу несколькими сайтами с задачами для программистов. Все дело в том, что на каждом из них размещены уникальные задачи, которых нет на других сайтах, так что потребуется несколько онлайн-задачников, чтобы охватить все темы, которые я хотел бы осветить.

Далее приведены сайты, с которыми мы будем работать:

• DMOJ — https://dmoj.ca/;

• Timus — https://acm.timus.ru/;

• USACO (USA Computing Olympiad) — http://usaco.org/.

На каждом сайте вам нужно будет создать учетную запись, прежде чем вы сможете отправлять код. Поговорим о процессе создания учетной записи и больше узнаем о каждом из сайтов.

DMOJ

Сайтом DMOJ мы будем пользоваться по ходу книги чаще всего. Вам стоит уделить побольше времени его изучению и узнать о том, что на нем имеется.

Чтобы создать учетную запись на сайте DMOJ, перейдите по ссылке https://dmoj.ca/и нажмите кнопку Signup. На странице регистрации введите свои имя пользователя, пароль и адрес электронной почты. Здесь же можете выбрать язык программирования по умолчанию. В этой книге мы будем применять исключительно язык программирования Python, поэтому выберите Python3. Нажмите Register!, чтобы завершить создание учетной записи. После регистрации вы сможете заходить на DMOJ с помощью своих имени пользователя и пароля.

Все задачи в книге начинаются с указания веб-сайта, на котором вы найдете саму задачу и код для доступа к ней. Например, первая задача, над которой мы будем работать в главе 1, находится на DMOJ и доступна по коду dmopc15c7p2. Чтобы найти ее в DMOJ, щелкните на кнопке Problems, введите код dmopc15c7p2 в поле поиска и нажмите Go. Перед вами появится соответствующая задача. Щелкнув на заголовке, вы должны увидеть саму задачу.

Когда будете готовы отправить свой код Python с решением, найдите задачу и щелк­ните на кнопке Submitsolution. На открывшейся странице вставьте код в текстовое поле и нажмите Submit!. Он будет оценен, и вы увидите результаты.

Timus

Чтобы создать учетную запись на сайте Timus, перейдите по ссылке https://acm.timus.ru/и нажмите кнопку Register. На открывшейся странице регистрации введите свои имя, пароль, адрес электронной почты и прочую запрашиваемую информацию. Нажмите кнопку Register, чтобы создать учетную запись. Затем проверьте свою электронную почту на наличие сообщения от Timus со своим уникальным идентификатором. При отправке кода Python он вам понадобится.

На этом сайте пока нет возможности установить язык программирования по умолчанию, поэтому при каждой отправке кода обязательно выбирайте доступную версию Python 3.

С сайтом Timus мы будем работать лишь один раз, в главе 6, поэтому пока что разговор о нем отложим.

USACO

Чтобы создать учетную запись на сайте USACO, перейдите по ссылке http://usaco.org/ и нажмите на кнопку RegisterforNewAccount. На открывшейся странице регистрации введите свои имя пользователя, адрес электронной почты и прочую информацию. Нажмите кнопку Submit, чтобы создать учетную запись. Затем проверьте свою электронную почту на наличие сообщения от USACO, содержащего пароль. Получив его, вы можете заходить на USACO с помощью своих имени пользователя и пароля.

На этом сайте пока нет возможности установить язык программирования по умолчанию, поэтому при каждой отправке кода обязательно указывайте доступную версию Python 3. Вам также нужно будет выбрать файл с кодом Python, а не вставлять сам код в текстовое поле.

Мы не будем использовать сайт USACO до главы 7, поэтому пока что отложим разговор о нем.

Об этой книге

Все главы книги построены вокруг двух-трех задач с одного из сайтов с задачами для программистов. Фактически глава будет начинаться с постановки первой задачи, и уже после этого вы начнете изучать Python! Моя цель — побудить вас изучить функции Python, необходимые для решения задачи. Не беспокойтесь, если решение задачи не придет вам в голову сразу после прочтения ее описания (ведь если вы еще не можете решить задачу, значит, читаете нужную книгу!). Если же понима­ете, что нужно делать, чтобы ее решить, то все отлично. Мы будем изучать Python и вместе решать задачи. Следующие задачи будут нацелены на использование дополнительных возможностей Python или закрепление и расширение того, что вы узнали в первой задаче. Каждая глава завершается упражнениями, которые вы должны будете выполнить самостоятельно, чтобы попрактиковаться в применении вновь обретенных навыков.

Приведу краткое описание каждой главы.

• Глава 1. Приступим к работе. Существует немало вводных понятий, которые нужно будет изучить, прежде чем вы сможете решать какие-либо задачи с помощью Python. В этой главе мы рассмотрим их, начиная с написания простейшего кода Python, затем перейдем к работе со строками и числами, использованию переменных, чтению ввода и записи вывода.

• Глава 2. Принятие решений. В этой главе вы узнаете об операторе if, который позволяет программе решать, что делать, в зависимости от истинности или ложности того или иного условия.

• Глава 3. Повторяющийся код: определенные циклы. Многие программы работают некоторое время, пока не закончатся входные данные. В этой главе мы изучим цикл for, который позволяет программам обрабатывать входные данные, пока работа не будет выполнена.

• Глава 4. Повторяющийся код: неопределенные циклы. Иногда мы не знаем заранее, сколько раз программа должна будет выполнить некоторые действия. Циклы for для такого рода задач не подходят. В этой главе мы поговорим о цикле while, который повторяет код, пока выполняется определенное условие.

• Глава 5. Упорядоченные значения и списки. Списки в Python позволяют использовать одно имя и ссылаться с его помощью на целую последовательность данных. Списки помогают организовать данные, в Python предусмотрены удобные операции обработки списков, такие как сортировка и поиск. В этой главе вы узнаете все о списках.

• Глава 6. Пишем собственные функции. Большая программа со значительным количеством кода без должной его организации может стать громоздкой. В этой главе вы узнаете о функциях, которые помогают разбивать программы на небольшие автономные фрагменты кода. Применение функций позволяет писать программы, которые намного легче читаются и редактируются. Мы также поговорим о нисходящем проектировании — подходе к разработке программ с функциями.

• Глава 7. Чтение из файлов и запись в них. Для передачи данных программам или сохранения результатов их работы удобно использовать файлы. В этой главе вы узнаете, как читать данные и записывать их в файлы.

• Глава 8. Организация данных с помощью множеств и словарей. Когда мы начинаем решать все более сложные задачи, важно правильно организовать хранение данных. В этой главе поговорим о двух новых инструментах для хранения данных в Python — множествах и словарях.

• Глава 9. Разработка алгоритмов полного поиска. Программисты не придумывают решение каждой задачи с нуля. Вместо этого они стараются тем или иным способом использовать общий шаблон решения — алгоритм. В этой главе вы узнаете об алгоритмах полного поиска, которые можно задействовать для решения широкого круга задач.

• Глава 10. «О большое» и эффективность программ. Иногда нам удается написать программу, которая выполняет задачу правильно, но слишком медленно, из-за чего оказывается бесполезной. В этой главе мы обсудим, как определить эффективность программ, и поговорим об инструментах, которые можно использовать для написания более эффективного кода.

От издательства

В книге приведены ссылки на англоязычные сайты-задачники. Вы можете работать с их переводами, воспользовавшись сайтом https://translate.yandex.ru/translate.

Например, задача по адресу https://dmoj.ca/problem/ccc06j1 на русском языке будет выглядеть так: https://translated.turbopages.org/proxy_u/en-ru.ru.c31992eb-62d7fa12-e0216655-74722d776562/https/dmoj.ca/problem/ccc06j1.

Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.