Технологии программирования и компьютерный практикум на языке Python
Покупка
Основная коллекция
Тематика:
Программирование и алгоритмизация
Издательство:
Южный федеральный университет
Год издания: 2022
Кол-во страниц: 242
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9275-4108-9
Артикул: 808082.01.99
Доступ онлайн
В корзину
Пособие содержит теоретический материал, а также варианты индивидуальных и проектных заданий, связанных как с основными разделами языка программирования Python (функции, строки, списки и т. п.), так и с использованием распространенных библиотек научного программирования — Numpy, Matplotlib, Pandas. В качестве средства выполнения заданий предполагается использование среды Jupyter Notebook. Предназначено для студентов бакалавриата укрупненной группы 01.03.00 «Математика и механика». Оно также может быть полезно учителям информатики для организации самостоятельной работы в старших классах средней школы.
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 510: Фундаментальные и общие проблемы математики. Основания математики, математ. логика
- 519: Комбинатор. анализ. Теория графов. Теория вер. и мат. стат. Вычисл. мат., числ. анализ. Мат. кибер..
ОКСО:
- ВО - Бакалавриат
- 01.03.01: Математика
- 01.03.02: Прикладная математика и информатика
- 01.03.03: Механика и математическое моделирование
- 01.03.04: Прикладная математика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего образования «ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» М. И. Карякин К. А. Ватульян Р. М. Мнухин Технологии программирования и компьютерный практикум на языке Python Учебное пособие Ростов-на-Дону – Таганрог Издательство Южного федерального университета 2022
УДК 519.6+004.43+510.5 ББК 22.193+32.973 К27 Печатается по решению кафедры теории упругости Института математики, механики и компьютерных наук им. И.И. Воровича Южного федерального университета (протокол № 6 от 18 апреля 2022 г.) Рецензенты: заведующий кафедрой «Теоретическая и прикладная механика» Донского государственного технического университета, доктор физико-математических наук, доцент А.Н. Соловьев; доцент кафедры теории упругости Южного федерального университета, кандидат физико-математических наук, О.В. Явруян Карякин, М.И. К27 Технологии программирования и компьютерный практикум на языке Python : учебное пособие / М. И. Карякин, К. А. Ватульян, Р. М. Мнухин ; Южный федеральный университет. – Ростов-на-Дону ; Таганрог : Издательство Южного федерального университета, 2022. – 242 с. ISBN 978-5-9275-4108-9 Пособие содержит теоретический материал, а также варианты индивидуальных и проектных заданий, связанных как с основными разделами языка программирования Python (функции, строки, списки и т. п.), так и с использованием распространенных библиотек научного программирования — Numpy, Matplotlib, Pandas. В качестве средства выполнения заданий предполагается использование среды Jupyter Notebook. Предназначено для студентов бакалавриата укрупненной группы 01.03.00 «Математика и механика». Оно также может быть полезно учителям информатики для организации самостоятельной работы в старших классах средней школы. УДК 519.6+004.43+510.5 ББК 22.193+32.973 ISBN 978‐5‐9275‐4108‐9 © Южный федеральный университет, 2022 © Карякин М. И., Ватульян К. А., Мнухин Р. М., 2022
Содержание Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1 Основы программирования на Python . . . . . . . . . . . . 8 1.1 Базовые элементы программы . . . . . . . . . . . . . . . . 8 1.2 Переменные и значения . . . . . . . . . . . . . . . . . . . . 13 1.3 Ввод и вывод данных . . . . . . . . . . . . . . . . . . . . . 18 1.4 Библиотека математических функций . . . . . . . . . . . . 20 1.5 Условный оператор . . . . . . . . . . . . . . . . . . . . . . . 23 1.6 Цикл while . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.7 Цикл for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2 Индивидуальная работа «Функции и строки» . . . . . . . 40 2.1 Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.1.1 Основные сведения и примеры . . . . . . . . . . . . 40 2.1.2 Модули . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.1.3 Аргументы функции: дополнительные вопросы . . . 47 2.1.4 Области видимости переменных . . . . . . . . . . . 51 2.1.5 Рекурсия . . . . . . . . . . . . . . . . . . . . . . . . 57 2.2 Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 2.2.1 Основные сведения и примеры . . . . . . . . . . . . 63 2.2.2 Escape-последовательности . . . . . . . . . . . . . . 67 2.2.3 f-строки . . . . . . . . . . . . . . . . . . . . . . . . . 69 2.2.4 Функции и методы строк . . . . . . . . . . . . . . . 73 2.3 Табулирование функции . . . . . . . . . . . . . . . . . . . . 76 2.3.1 Постановка задачи . . . . . . . . . . . . . . . . . . . 76 2.3.2 Образец выполнения задания . . . . . . . . . . . . . 79 2.4 Рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 2.4.1 Постановка задачи . . . . . . . . . . . . . . . . . . . 85 2.4.2 Образец выполнения задания . . . . . . . . . . . . . 88 2.5 Работа со строками . . . . . . . . . . . . . . . . . . . . . . . 92 2.5.1 Постановка задачи . . . . . . . . . . . . . . . . . . . 92 2.5.2 Образец выполнения задания . . . . . . . . . . . . . 95 2.6 Оформление отчета . . . . . . . . . . . . . . . . . . . . . . 100 3
Индивидуальная работа «Численное исследование графика функции» . . . . . . . . . . . . . . . . . . . . . . . . . . 106 3.1 Списки и кортежи . . . . . . . . . . . . . . . . . . . . . . . 106 3.1.1 Определение и примеры списков . . . . . . . . . . . 106 3.1.2 Способы создания списков . . . . . . . . . . . . . . . 111 3.1.3 Основные методы списков . . . . . . . . . . . . . . . 113 3.1.4 Кортежи . . . . . . . . . . . . . . . . . . . . . . . . . 115 3.2 Основные определения . . . . . . . . . . . . . . . . . . . . . 117 3.3 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . 118 3.4 Образец выполнения задания . . . . . . . . . . . . . . . . . 123 3.5 Графики исследуемых функций . . . . . . . . . . . . . . . 129 4 Индивидуальная работа «Создание и обработка матриц стандартными средствами языка Python» . . . . . . . . . 140 4.1 Матрицы и их реализация . . . . . . . . . . . . . . . . . . . 140 4.2 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . 144 4.3 Образец выполнения задания . . . . . . . . . . . . . . . . . 151 4.4 Материалы к заданию . . . . . . . . . . . . . . . . . . . . . 156 5 Проектное задание «Вычисления с использованием пакета NumPy» . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 5.1 Пакет NumPy . . . . . . . . . . . . . . . . . . . . . . . . . . 162 5.1.1 Основные сведения о пакете . . . . . . . . . . . . . . 162 5.1.2 Простая демонстрация возможностей . . . . . . . . 164 5.1.3 Массивы и их создание . . . . . . . . . . . . . . . . 166 5.1.4 Операции с массивами . . . . . . . . . . . . . . . . . 171 5.2 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . 176 5.3 Варианты заданий . . . . . . . . . . . . . . . . . . . . . . . 177 5.4 Образец выполнения задания . . . . . . . . . . . . . . . . . 183 6 Индивидуальная работа «Основные возможности паке- та Matplotlib» . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 6.1 Знакомство с Matplotlib . . . . . . . . . . . . . . . . . . . . 191 6.2 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . 192 6.3 Методические указания . . . . . . . . . . . . . . . . . . . . 197 4
Проектное задание «Обработка и анализ данных в Pan- das» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 7.1 Знакомство с Pandas . . . . . . . . . . . . . . . . . . . . . . 219 7.2 Данные для анализа . . . . . . . . . . . . . . . . . . . . . . 223 7.3 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . 224 7.4 Образец выполнения проектного задания . . . . . . . . . . 225 Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . 236
Предисловие Язык программирования Python в последнее время стал одним из са- мых распространенных и популярных языков программирования. Уже несколько лет подряд именно Python возглавляет рейтинг языков про- граммирования, составляемый IEEE Spectrum [34]. В конце 2021 года Python переместился на первую строку популярного рейтинга Tiobe [33]. Области применения языка Python в современном мире чрезвычайно широки: на нем сегодня «говорят» специалисты в области математиче- ского моделирования, физики, астрономии, химии, биологии, биоинфор- матики, лингвистики, машинного обучения, анализа данных, статистики и других разделов естественных и инженерных наук. Подобная попу- лярность неизбежно приводит к тому, что ежегодно появляется боль- шое количество учебников и учебных пособий, посвященных изучению как языка в целом, так и его различных подразделов (библиотек, обла- стей применения и т. д.). Работы [5,8,14–16] представляют лишь малую часть огромного списка публикаций, позволяющих новичкам погрузить- ся в увлекательный мир современного программирования. Важным элементом изучения языка является практическая работа обучающихся. Именно в процессе самостоятельной работы можно до- статочно быстро познакомиться с мощью и гибкостью Python, уверенно овладеть основными и продвинутыми навыками его использования, что позволит впоследствии успешно применять его для решения различных задач профессиональной деятельности в сфере современной прикладной математики и программирования. Настоящее учебное пособие как раз и предназначено для организации самостоятельной работы: содержащиеся в нем задачи могут быть использованы в качестве индивидуальных или групповых проектных заданий, как относящихся к «классическим» ос- новам программирования, так и связанных с использованием основных 6
библиотек, разработанных для применения Python в сфере научного про- граммирования. Первый раздел данного пособия содержит базовые сведения о языке Python. Краткая теоретическая информация есть и в остальных разде- лах, посвященных описанию заданий по отдельным темам или библио- текам. Тем не менее, авторы настоятельно рекомендуют обучающимся не ограничиваться этими сведениями, а параллельно с выполнением за- даний знакомиться и с более подробными материалами. В этом смысле отдельного упоминания заслуживает учебник К. Хилла [14], материал которого достаточно полно покрывает не только собственно язык, но и используемые в данном пособии библиотеки NumPy, Matplotlib, Pandas. Общая структура разделов пособия, содержащих варианты заданий, приблизительно одинакова. Во вводном подразделе приводятся те или иные сведения о языковых структурах или библиотеках, важных для выполнения задания. Далее формулируется само задание (в случае инди- видуальных работ — по 30 вариантов, для проектных заданий — порядка 10 вариантов), а затем приводится возможный образец выполнения одно- го из этих вариантов, во всех случаях он имеет номер «ноль». В разделе, посвященном пакету Matplotlib, вместо прямого решения одного из вари- антов содержится целый ряд дополнительных вопросов и мини-заданий, анализ которых позволит обучающимся овладеть основными навыками создания научных иллюстраций и успешно выполнить любой вариант индивидуального задания. Предполагается, что обучающиеся готовят по каждому заданию отчет, представляющий собой файл, созданный в среде Jupyter Notebook [23]. Краткие сведения о возможностях форматирования, предоставляемых используемым в этой среде языком разметки Markdown, приведены в разделе 2.6. Отметим также, что для набора математических формул в отчете должны быть использованы возможности системы компьютерной верстки LATEX. 7
Основы программирования на Python 1.1 Базовые элементы программы Программа на языке Python представляет собой последовательность определений и команд. Определения обрабатываются и команды вы- полняются в специальной среде (оболочка, shell). Они могут быть на- браны прямо в оболочке или сохранены в файле, который впоследствии может быть загружен в оболочку и выполнен. В данном пособии все примеры будут продемонстрированы средой специального вида — Jupyter Notebook. Она позволяет выполнять и со- хранять не только тексты программ, но и блоки отформатированного текста, формулы, изображения, поэтому очень удобна как для интер- активных презентаций, так и для представления отчетов о выполнен- ных работах. В то же время эта среда полностью сохраняет интерак- тивность, присущую базовой оболочке IDLE, входящей в состав дистри- бутива Python. Если в ячейке ввода команд (она помечена символами In []:) ввести какое-то арифметическое выражение и «выполнить» его, нажав кнопку ▶ Run на панели задач или комбинацию клавиш Shift + Enter на клавиатуре, то под ячейкой будет сразу отображен результат введенной операции: In [1]: 5 + 3 Out[1]: 8 Цифра внутри квадратных скобок — это счетчик операций, он увели- чивается на единицу каждый раз после выполнения ячейки с командой или набором команд (кодом программы). Команда (или оператор) — инструкция интерпретатору осуществить то или иное действие. Суть работы программы — манипулирование с данными, обработка объектов, содержащих данные. Каждый такой объект имеет важную 8
характеристику — тип, определяющий, что за данные он содержит, и какие операции к нему применимы. Основная классификация объектов: ◦ Скалярные (их нельзя разделить на составные части). ◦ Нескалярные (составные, имеющие внутреннюю структуру, к кото- рой можно получить доступ). Например, строка состоит из несколь- ких символов, а комплексное число — из вещественной и мнимой части. Скалярные объекты Python: ◦ int — целые числа (5, -23, 1234567890). ◦ float — действительные числа (3.14, 9.81, 1.2e-5). ◦ bool — используется для представления двух логических значений: True (истина) и False (ложь). ◦ NoneType — у этого типа данных есть только одно значение, кон- станта None. Эту константу обычно используют для обозначения того, что конкретное значение отсутствует. Сразу отметим, что объекты целого типа языка Python могут хранить значения с очень большим количеством значащих цифр — оно ограниче- но только размерами оперативной памяти компьютера. Вычислим, для примера значение выражения 2150: In [2]: 2**150 Out[2]: 1427247692705959881058285969449495136382746624 Встроенная функция type служит для определения типа объекта. In [3]: type(3) Out[3]: int In [4]: type(3.14) Out[4]: float 9
Выражения. С помощью знаков операций объекты объединяются в выраже- ния, значение каждого из которых представляет собой объект опреде- ленного типа. Синтаксис простейшего выражения: <объект> <знак операции> <объект> Арифметические операции с числовыми объектами. a + b — сумма. Если оба числа — целые, то результат — объект int, в остальных случаях результат имеет тип float. a - b — разность. a * b — произведение. a / b — частное. В Python 3 тип у частного всегда float, независимо от типов входящих в него объектов. a // b — результат деления нацело. a % b — остаток от деления. В двух предыдущих операциях, как правило, a и b имеют тип int и результат — тоже int. Нужно помнить, однако, что эти операции при- менимы и к вещественным числам. a**b — возведение в степень, ab. Если оба числа — целые, то результат — объект int, в остальных случаях — float. Порядок действий аналогичен принятому в математике: сначала вы- числяются выражения в скобках, затем выполняется операция возведе- ния в степень **. Следующий приоритет имеют операции умножения и деления *, /, //, %. Их приоритет одинаков, они выполняются слева направо. Завершают вычисления операции сложения и вычитания +, -, которые тоже имеют одинаковый приоритет. Правило выполнения слева направо операций одинакового приорите- та является общим для языка Python за одним исключением: операции возведения в степень выполняются справа налево. Поэтому выражение 2**3**2 имеет смысл 232, то есть 29. 10
Операции сравнения. Результатом операций сравнения a > b (больше), a >= b (больше или равно), a < b (меньше), a <= b (меньше или равно), a == b (равно), a != b (не равно) является одно из двух значений — истина или ложь, True или False. In [5]: 2022**2023 > 2023**2022 Out[5]: True Операции с объектами логического типа. a and b (результат True, если оба аргумента True), a or b (результат True, если хотя бы один аргумент True), not a (противоположное значение: если значением a является True, то результат — False, и наоборот). Приоритет операций сравнения и логических операций меньше, чем у арифметических операций, перечисленных выше. Относительный их приоритет таков: сначала выполняются операции сравнения (все они имеют одинаковый приоритет), потом not, далее and и, наконец, or. Игнорирование приоритетов может привести к неожиданным ошиб- кам. Так, например, выражение True == not False является ошибоч- ным, правильная его запись такова: True == (not False). Преобразование типов (type casting). На основе объекта одного типа может быть создан объект другого типа. Для преобразования используется имя типа следующим образом: In [6]: float(100) Out[6]: 100.0 11
In [7]: int(3.9) Out[7]: 3 In [8]: bool(3.9) Out[8]: True In [9]: bool(0.0) Out[9]: False Последние примеры демонстрируют важную особенность приведения данных к логическому типу: все, что не равно нулю, сводится при таком преобразовании к значению True. Нескалярные объекты. Важным примером составного объекта является строка: набор сим- волов, заключенный в кавычки. В языке Python возможны три вариан- та оформления строк: одинарные кавычки, двойные кавычки (их смысл одинаков, но смешивать — начинать строку одинарной, а заканчивать двойной — нельзя) и тройные кавычки (можно использовать и три оди- нарных, и три двойных), которые позволяют выделять т. н. многостроч- ные строки. Примеры строк и простых операций с ними приведены ниже, более подробно строки будут рассмотрены в разделе 2.2. In [10]: 'abc' "abc" '''Привет! В этой строке - сразу три строчки''' Out[10]: 'Привет!\nВ этой строке - \nсразу три строчки' Заметим, что для хранения информации о разрыве строки использу- ется комбинация символов \n. 12
In [11]: type('123') Out[11]: str In [12]: 'мех' + 'мат' Out[12]: 'мехмат' In [13]: 'A'*3 Out[13]: 'AAA' In [14]: str(100) Out[14]: '100' In [15]: int('100') Out[15]: 100 1.2 Переменные и значения Переменная в языке Python — это символическое имя, которое яв- ляется ссылкой или указателем на тот или иной объект. После связы- вания переменной с объектом, которое часто называется присваиванием переменной значения, мы можем ссылаться на объект, используя имя переменной. Но надо помнить при этом, что данные по-прежнему при- надлежат самому объекту. В языке Python нет специальной команды объявления переменной. Переменная здесь создается в момент связывания с объектом. Тип пере- менной определяется типом этого объекта. Рассмотрим следующий пример. 13
Доступ онлайн
В корзину