Программирование на языке Python
Собственные конкурсы:
- АКАДЕМУС, 2025, Компьютерные и информационные науки, Победитель, III место
Учебное пособие С.Р. Гурикова «Программирование на языке Python» представляет собой комплексный образовательный ресурс, адаптированный под требования высшей школы и задачи подготовки к профильным экзаменам. Автор ставит целью не просто ознакомить читателя с синтаксисом популярного языка, но и сформировать фундаментальное алгоритмическое мышление, необходимое для профессиональной разработки программного обеспечения.
Методологические основы и алгоритмизация
Книга начинается с теоретического базиса, где рассматриваются свойства алгоритмов, способы их описания и государственные стандарты оформления блок-схем (ГОСТ 19.701—90). Особое внимание уделяется алфавиту языка, правилам именования идентификаторов и динамической типизации — ключевой особенности Python, позволяющей гибко управлять данными. Автор последовательно проводит читателя через три «кита» программирования: линейные процессы, разветвляющиеся алгоритмы и циклы. Подробно разбираются конструкции if-elif-else, а также итерационные циклы for и while. Важным дидактическим элементом является включение задач на вычисление приближенных значений функций и работу с рекуррентными соотношениями, что сближает курс программирования с дисциплинами математического анализа.
Структурирование кода и модульное проектирование
Одной из центральных тем пособия является разработка пользовательских функций. Гуриков акцентирует внимание на том, что умение выделять логические блоки кода — основа грамотного стиля. В пособии детально описаны механизмы передачи параметров, возврата нескольких значений и создания собственных модулей. Читатель осваивает технологию создания пакетов, работу с установочными файлами (setup.py) и преобразование скриптов в исполняемые файлы (.exe) с помощью утилиты PyInstaller. Такой подход позволяет учащимся перейти от написания простых сценариев к проектированию отчуждаемых программных продуктов.
Работа со сложными структурами данных
Значительный объем материала посвящен обработке последовательностей. Автор классифицирует методы работы с кортежами (неизменяемыми списками) и списками, демонстрируя их различия в контексте управления памятью и производительности. Рассматриваются базовые алгоритмы: поиск экстремумов, сортировка, срезы и фильтрация элементов. Особый интерес представляет глава об обработке вложенных последовательностей (матриц), где на примерах случайной генерации данных разбираются задачи манипулирования строками и столбцами, а также работа с диагоналями квадратных матриц. Дополнительно освещается использование словарей как эффективного инструмента для создания ассоциативных массивов.
Объектно-ориентированная парадигма и GUI
Переход к объектно-ориентированному программированию (ООП) осуществляется через изучение классов, объектов и конструкторов. В пособии доступно изложены принципы инкапсуляции (скрытие данных через закрытые атрибуты), наследования и использования свойств (@property). Практическая значимость закрепляется в главе по событийно-ориентированному программированию. Используя библиотеку tkinter, автор обучает созданию графических интерфейсов (GUI). Читатель проходит путь от размещения простых кнопок и текстовых полей до разработки многостраничных интерактивных приложений с системой авторизации и подсчетом результатов.
Работа с файловой системой и сериализация
Заключительные разделы посвящены сохранению данных. Рассматриваются методы работы с текстовыми файлами (кодировка UTF-8) и бинарными данными. Автор вводит понятие «консервации» объектов с помощью модулей pickle и shelve, что позволяет сохранять сложные структуры данных (списки, словари) между сеансами работы программы.
В целом, пособие отличается строгой академической структурой: каждая глава завершается контрольными вопросами и обширным набором задач для самостоятельного решения (всего более 200 листингов программ). Книга является эффективным инструментом для формирования компетенций в области системного анализа и прикладного программирования.
- ВО - Бакалавриат
- 01.03.02: Прикладная математика и информатика
- 03.03.02: Прикладная математика и информатика
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- 27.03.04: Управление в технических системах
- ВО - Специалитет
- 10.05.05: Безопасность информационых технологий в правоохранительной сфере
- 21.05.06: Нефтегазовые техника и технологии
- 27.05.01: Специальные организационно-технические системы
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PYTHON С.Р. ГУРИКОВ Москва ИНФРА-М 2026 УЧЕБНОЕ ПОСОБИЕ
УДК 004.2(075.8) ББК 32.973-018я73 Г95 Гуриков С.Р. Г95 Программирование на языке Python : учебное пособие / С.Р. Гуриков. — Москва : ИНФРА-М, 2026. — 332 с. — (Высшее образование). — DOI 10.12737/2230807. ISBN 978-5-16-021562-4 (print) ISBN 978-5-16-114399-5 (online) В учебном пособии рассмотрены основы алгоритмизации и программирования на языке Python. Особое внимание уделено разработке пользовательских функций, на основе которых построено большинство программ, что позволяет формировать у обучающихся навыки структурированного и модульного программирования. Содержится описание такого материала, как работа линейных, разветвляющихся и циклических структур, обработка списков, кортежей и вложенных последовательностей, создание модулей. Приведены примеры создания объектно-ориентированных и событийно-ориентированных программ. Кроме того, рассмотрены методы работы со строками, функциями, файлами. В конце каждой главы содержится набор контрольных вопросов и упражнений, задач для самостоятельного решения. Будет полезно студентам и преподавателям высших и средних специальных учебных заведений, школьникам при подготовке к Единому государственному экзамену по дисциплине «Информатика и ИКТ». УДК 004.2(075.8) ББК 32.973-018я73 Р е ц е н з е н т ы: Новоселова О.В., кандидат технических наук, доцент, заведующий кафедрой «Информационные технологии и вычислительные системы» Московского государственного технологического университета «СТАНКИН»; Аляпкин В.В., кандидат технических наук, программист ООО «Научно-производственная фирма СИНТОЛ» ISBN 978-5-16-021562-4 (print) ISBN 978-5-16-114399-5 (online) © Гуриков С.Р., 2026
ВВЕДЕНИЕ В условиях глобальных информационных процессов, решения социальноэкономических проблем актуализируется важность информатизации образования. На сегодняшний день почти все учебные заведения обладают новейшим компьютерным оборудованием, подключенным к сети Интернет. Однако известно, что мало иметь современный персональный компьютер, нужно также позаботиться и об установке программного обеспечения. Сегодня перед образовательными учреждениями стоит задача выбора таких языков программирования и сред разработки, которые были бы одновременно современными, простыми в освоении и доступными для широкого круга пользователей. В условиях международных санкций, ограничивающих доступ к ряду программных продуктов, особую ценность приобретает использование свободно распространяемых решений. Особенно важно, чтобы выбранный инструмент не только позволял изучать основы алгоритмизации, но и открывал возможности для дальнейшего профессионального роста, был востребован в реальных проектах и соответствовал актуальным тенденциям в IT-индустрии. В связи с этим, отличным решением, с точки зрения преподавания основ программирования и алгоритмизации школьникам и студентам, может стать изучение языка Python, который относится к категории свободно распространяемого программного обеспечения. Python – современный, активно развивающийся язык программирования, который активно используется разработчиками во всем мире. Он востребован во многих крупных компаниях, таких как Google, IBM, Microsoft, Red Hat, Yahoo! и др. Это бесплатная система с открытым кодом, поддерживающая динамическую типизацию (не надо заранее объявлять переменные), объектноориентированное программирование, интеграцию с другими языками, такими как C, C++, Java, обладает кроссплатформенностью (независимостью от той или иной операционной системы) и многими другими достоинствами. Тем не менее, от коллег по университету автор часто слышит мнение о том, что Python является исключительно “школьным” языком, что начинать обучение студентов программированию именно с этого языка будет ошибкой и последующее освоение языков со строгой типизацией, таких как C++, Java или C# будет весьма затруднительным. Динамическая типизация действительно снимает необходимость явного объявления переменных, что облегчает начальное обучение. Однако следует отметить, что основы алгоритмического мышления и умение структурировать код формируются независимо от конкретного синтаксиса. Более того, простота Python позволяет сосредоточить внимание обучающихся на ключевых идеях программирования, что делает его отличным инструментом для первых шагов в профессии.
Проведенный анализ литературы по языку программирования Python, имеющейся на рынке книгопечатной продукции, показал, что ее содержание практически не отвечает целям совместной работы студента и преподавателя в конкретном учебном заведении и на конкретном занятии. В основном книги по программированию на Python имеют характер справочных изданий либо вовлекают читателя в написание игровых моментов. Вероятно, подобное изложение представляет интерес для начинающего, но при этом рабочие программы дисциплин, связанных с обучением программированию, подразумевают совершенно иной алгоритм знакомства с языком. В данной книге особое внимание уделено разработке пользовательских функций. Такой подход неслучаен: умение правильно выделять функции является основой грамотного стиля программирования. Функции позволяют структурировать код, повышают его читаемость и повторное использование, упрощают отладку и модификацию программы. Более того, именно такой стиль закладывает основы модульного и объектно-ориентированного программирования, к которым неизбежно приходит любой современный разработчик. Главная цель настоящего издания – обеспечить прочное и сознательное освоение основ алгоритмизации и программирования, формирование практических умений – профессиональных, учебных, интеллектуальных, необходимых школьнику или студенту. Помимо приобретения чисто практических умений, ценных с точки зрения освоения компьютерной грамотности, ребята получат наглядное представление о возможностях, предоставляемых компьютером человеку, выработают при решении поставленных задач такие профессионально значимые качества, как самостоятельность, ответственность, точность, творческая инициатива. Учебное пособие построено так, что непосредственно к программированию читатель приступает с самого начала – первая программа описывается уже в первой главе (в первой главе приводятся теоретические основы алгоритмизации и программирования). Во второй главе описан процесс создания проекта на Python, рассказано о методах ввода и вывода данных, способах обработки исключительных ситуаций, возникающих в ходе выполнения программ. В третьей главе речь пойдет о создании пользовательских функций, технике написания и импортирования собственных модулей. В третьей, четвертой и пятой главах подробно рассматриваются операторы, относящиеся к трем «китам» программирования – линейному, разветвляющемуся и циклическому алгоритмам. В шестой главе изложен процесс работы с кортежами (последовательность данных, не позволяющая изменять свои значения) и списками (являются изменяемыми последовательностями), а также работа со словарями (структурами данных). Материал седьмой главы даст представление о работе со строками, познакомит с функциями и методами работы с ними, базовыми алгоритмами их обработки.
В восьмой главе объясняется работа со вложенными последовательностями, рассматриваются «классические» способы их обработки. Десятая глава содержит информацию о работе с файлами, умение работать с которыми – необходимая компетенция человека, постигающего азы программирования. Одиннадцатая и двенадцатая главы посвящены объектно-ориентированному и событийно-ориентированному программированию. Читатель получит представление о создании таких объектов, как классы, научится писать методы, расширяющие функциональность классов, а также создавать новые классы на основе уже существующих. Кроме того, знакомство с программированием виджетов позволит приобрести навыки создания Windows-приложений на языке Python. В книге приведено свыше 200 листингов программ, снабженных комментариями. Для удобства их чтения полужирным шрифтом выделены, заголовки функций и методов языка Python. При наборе на компьютере программ, приведенных в учебном пособии, следует учитывать, что в Python отступы (четыре пробела или нажатие клавиши Tab) являются частью синтаксиса программных конструкций. Материал, изложенный в пособии, особенно будет полезен школьникам при подготовке к ЕГЭ по дисциплине «Информатика и ИКТ», студентам, обучающимся на технических специальностях техникумов, колледжей и вузов. Апробация учебного пособия показала, что учащиеся, не имеющие подготовки в области программирования, не только успешно осваивают представленные в пособии приложения, но и вносят свои очень интересные изменения, направленные на улучшение их работы. Преподаватели могут оценить учебное пособие с точки зрения методики преподавания. Многие программы специально написаны таким образом, чтобы учащиеся имели возможность доработать или оптимизировать их код, что поможет педагогу создать творческую атмосферу на занятиях. Практически к каждому из разделов приведены примеры решения задач, упражнения, задачи для самостоятельного решения, контрольные вопросы, позволяющие оценить уровень подготовки школьника или студента. Следует отметить, что учебное пособие не может претендовать на функциональную полноту или на полную оригинальность приведенных методов, алгоритмов и программ. Автор преследовал иную цель: привлечь внимание школьников, студентов и преподавателей к такому активно развивающемуся языку программирования, как Python, дать почувствовать его преимущественные отличия от других языков. Python доступен для свободного скачивания по адресу http://www.python.org/. Материал предлагаемого учебного пособия был подготовлен автором на основе многолетнего опыта преподавания курса алгоритмизации и программирования школьникам, студентам среднего и высшего профессионального образования, написания книг по программированию в различных средах.
1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ Прежде всего хочется отметить, что первая глава учебного пособия носит ознакомительный характер: здесь представлены теоретические основы алгоритмизации и программирования. Ее чтение подготовленному читателю можно пропустить, а начинающему лучше ее внимательно изучить. Тем не менее, стоит упомянуть, что в тексте будут приводиться примеры различных функций (термин «функция» уже может быть непонятен читателю), результаты их работы, терминологические названия (списки, кортежи и пр.), однако написанное может не объясняться в деталях. Таким образом, мы сразу должны оговорить, что многое станет более понятным и доступным, как только вы начнете работать со средой программирования Python, напишите свои первые программы на основе чтения второй главы. Тогда вы сможете более осознанно перечитать материал первой главы и сделать соответствующие выводы. 1.1. Алгоритм. Свойства алгоритма. Способы описания алгоритма Если мы хотим написать программу на каком-либо языке программирования, то сначала нам следует составить алгоритм решения задачи. Алгоритм – это точное и простое описание последовательности действий для решения данной задачи. Алгоритм содержит несколько шагов, которые должны выполняться в определенной последовательности. Каждый шаг алгоритма может состоять из одной или нескольких простых операций. Каждый из нас ежедневно использует различные алгоритмы: инструкции, правила, рецепты и т.д. Обычно мы это делаем не задумываясь. Например, открывая дверь ключом, никто не размышляет над тем, в какой последовательности выполнять действия. Однако чтобы кого-нибудь научить открывать дверь, придется четко указать и сами действия, и порядок их выполнения. Например: 1. Достать ключ. 2. Вставить ключ в замочную скважину. 3. Повернуть ключ два раза против часовой стрелки. 4. Вынуть ключ. Представим, что мы поменяли местами второе и третье действия. Мы сможем выполнить и этот алгоритм, но дверь не откроется, т.е. алгоритм станет невыполнимым. Для алгоритма важен не только набор действий, но и то, в каком порядке они выполняются. Понятие алгоритма в информатике является фундаментальным. Таким же, какими являются понятия точки, прямой и плоскости в геометрии, вещества в химии, пространства и времени в физике и т.д.
Свойства алгоритма: дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых шагов (этапов); определенность – каждый шаг алгоритма должен быть четким и однозначным. Выполнение алгоритма носит механический характер и не требует никаких дополнительных сведений о решаемой задаче; результативность – алгоритм должен приводить к решению задачи за конечное число шагов; массовость – алгоритм решения разрабатывается в общем виде, т.е. он должен быть применим для решения некоторого класса задач, различающихся лишь исходными данными. Способы описания алгоритмов словесный; графический; табличный; формульный. 1. Словесный способ каждый из нас использует ежедневно, пересказывая собеседнику, например, различные инструкции, правила, кулинарные рецепты, т.е. какую-то последовательность, приводящую к конечному результату. 2. Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным. Как часто для лучшего понимания той или иной ситуации нам проще начертить какую-то схему, план, согласно которым мы будем действовать. В программировании данный способ предпочтителен, поскольку позволяет с помощью последовательности функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий, представить ход решения той или иной задачи. Такое представление алгоритма называется структурной схемой алгоритма, или блок-схемой. 3. Табличный способ используется, например, в бухгалтерии при составлении ежегодных отчетов, сводок и т.д. 4. Формульный способ находит свое применение при решении задач из области математики, физики и т.д. Например, при решении квадратного уравнения мы приступаем к нахождению дискриминанта уравнения, а затем, в зависимости от полученного результата, находим корни уравнения по известным всем формулам. 1.2. Назначение функциональных блоков На условные обозначения в схемах алгоритмов, программ, данных и систем распространяется ГОСТ 19.701—90. «ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения». При отрисовке блок-схем мы будем использовать функциональные блоки (символы – так трактует их ГОСТ), представленные ниже.
Терминатор Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных) Процесс Символ отображает функцию обработки данных любого вида (выполнение конкретной операции или группы операций, приводящее к изменению значения, формы или размещения информации, или к определению, по которому из нескольких направлений потока следует двигаться) Данные Символ отображает данные, носитель которых не определен. Решение Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. Соответствующие результаты вычисления могут быть записаны по соседству с линиями, отображающими эти пути. Подготовка Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию (установка переключателя, модификация индексного регистра или инициализация программы). Соединитель Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и ее продолжения в другом месте. Соответствующие символысоединители должны содержать одно и то же уникальное обозначение.
Предопределенный процесс Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). Линия Символ отображает поток данных или управления. Комментарий Символ используют для добавления описательных комментариев или пояснительных записей в целях объяснения или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры . Документ Символ отображает данные, представленные на носителе в удобочитаемой форме (машинограмма, документ для оптического или магнитного считывания, микрофильм, рулон ленты с итоговыми данными, бланки ввода данных). Граница цикла Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие.
1.3. Основные этапы решения задач Процесс решения некоторой задачи в среде программирования, как правило, состоит из нескольких этапов, часть из которых выполняется пользователем, а часть – компьютером. 1-й этап. Общая постановка задачи. На этом этапе описывается содержание задачи, составляется перечень исходных данных. 2-й этап. Разработка математической модели. Цель этого этапа состоит в установлении формализованных связей между исходными данными и искомыми результатами. Этап заключается в записи расчетных формул или функциональных зависимостей. 3-й этап. Разработка алгоритма. Этап состоит в описании последовательности действий, в результате которых может быть получено решение задачи. 4-й этап. Разработка программы. Программа составляется в полном соответствии с разработанным алгоритмом решения задачи. 5-й этап. Отладка программы. Процесс поиска ошибок в программе и их устранение. 6-й этап. Анализ результатов. Позволяет принять решение о необходимости внесения изменений в программу, проведении дополнительных расчетов или их окончании. 1.4. Алфавит языка Python Изучение любого языка начинается с изучения алфавита, из букв складываются слова, из слов – предложения. То же происходит и при изучении языка программирования. Сначала мы должны уяснить, какие символы можно использовать для записи слов языка, из которых можно формировать определенные конструкции. Итак, в алфавит языка Python входят: 1. Латинские буквы от a до z и от A до Z. В Python есть различия между прописными и строчными буквами алфавита, например, chislo, CHISLO, Chislo – разные имена переменных. 2. Цифры от 0 до 9. 3. Специальные символы, например +, -, *, /. 4. Зарезервированные (служебные) слова: for, if, class, def и т.д. 1.5. Идентификаторы и общие правила их написания Для того чтобы программа решения задачи обладала свойством массовости, следует употреблять не конкретные значения величин, а использовать их обозначения для возможности изменения по ходу выполнения программы их значений. Для обозначения в программе переменных и