Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Технологии программирования и компьютерный практикум на языке Python

Покупка
Основная коллекция
Артикул: 808082.01.99
Доступ онлайн
315 ₽
В корзину
Пособие содержит теоретический материал, а также варианты индивидуальных и проектных заданий, связанных как с основными разделами языка программирования Python (функции, строки, списки и т. п.), так и с использованием распространенных библиотек научного программирования — Numpy, Matplotlib, Pandas. В качестве средства выполнения заданий предполагается использование среды Jupyter Notebook. Предназначено для студентов бакалавриата укрупненной группы 01.03.00 «Математика и механика». Оно также может быть полезно учителям информатики для организации самостоятельной работы в старших классах средней школы.
Карякин, М. И. Технологии программирования и компьютерный практикум на языке Python : учебное пособие / М. И. Карякин, К. А. Ватульян, Р. М. Мнухин ; Южный федеральный университет. - Ростов-на-Дону ; Таганрог : Издательство Южного федерального университета, 2022. - 242 с. - ISBN 978-5-9275-4108-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/2057604 (дата обращения: 26.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ 
РОССИЙСКОЙ ФЕДЕРАЦИИ 
Федеральное государственное автономное образовательное  
учреждение высшего образования 
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» 
 
 
 
                                                                                                                    

 

М. И. Карякин 
К. А. Ватульян 
Р. М. Мнухин 
 
Технологии программирования  
и компьютерный практикум 
на языке 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

Доступ онлайн
315 ₽
В корзину