7.94M
Category: programmingprogramming

Основы программирования на Python. Мультимедийное сопровождение лекций

1.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. А.Н. Косыгина (ТЕХНОЛОГИИ. ДИЗАЙН. ИСКУССТВО)»
(ФГБОУ ВО «РГУ им. А.Н. Косыгина»)
_____________________________________________________________________________________________________
Захаркина С.В.
Основы программирования на Python.
Мультимедийное сопровождение лекций
Учебное пособие
Допущено к изданию редакционно-издательским советом университета в качестве электронного учебного пособия
для подготовки бакалавров по направлениям
09.03.01 Информатика и вычислительная техника, 09.03.02 Информационные системы и технологии,
15.03.06 Мехатроника и робототехника
Объем 4,47 МБ Тираж 10
Редакционно-издательский отдел ФГБОУ ВО «РГУ им. А.Н. Косыгина»
115035, Москва, ул. Садовническая, 33, стр. 1
тел./ факс: 8-495-811-01-01 доб. 1099
e-mail: riomgudt@mail.ru
Москва
ФГБОУ ВО «РГУ им. А.Н. Косыгина», 2024
Copyright © 2024 ФГБОУ ВО «РГУ им. А.Н. Косыгина»
All Rights Reserved
Copyright © 2024 Захаркина С.В.
All Rights Reserved
ISBN 978-5-00181-603-4

2.

УДК 004.42
ББК 32.973.2
З-38
З-38 Захаркина С.В. Основы программирования на Python. Мультимедийное сопровождение лекций: учебное пособие – М.: ФГБОУ ВО
«РГУ им. А.Н. Косыгина», 2024. – 4,47 МБ
Электронное учебное издание, предназначенное для представления теоретического материала с использованием компьютера и
мультимедийного проектора преподавателями высших учебных заведений, будет полезно студентам при самостоятельном изучении
предмета. Визуальный ряд в виде банка слайдов-заготовок изображений разработан в среде Power Point.
Мультимедийное сопровождение лекций предназначено для обучающихся по направлениям подготовки 09.03.01 Информатика и
вычислительная техника, 09.03.02 Информационные системы и технологии и 15.03.06 Мехатроника и робототехника всех форм обучения и
будет использовано при изучении дисциплин «Основы программирования», «Алгоритмизация и скриптовые языки программирования»,
«Основы программирования робототехнических систем».
Минимальные системные требования: ПЭВМ, работающая под управлением Windows; оперативная память – 512 Мб; необходимо на
винчестере – 512 Мб; операционные системы- WindowsVista/ Windows 7/ Windows 8/Windows 10/ Windows 11; дополнительные программные
средства - AdobeAcrobat.
Работа подготовлена на кафедре Автоматики и промышленной электроники ФГБОУ ВО «РГУ им. А.Н. Косыгина».
Copyright © 2024 ФГБОУ ВО «РГУ им. А.Н. Косыгина»
All Rights Reserved
Copyright © 2024 Захаркина С.В.
All Rights Reserved

3.

Лекция 1
Язык программирования

4.

Основные языки программирования

5.

Области, в которых применяется язык
программирования Python

6.

Выполнение программ

7.

Установка Python и pip на Windows
Скачать
официальный
установщик можно с сайта python.org
по ссылке https://python.org/.

8.

Запускаем установщик Python
Необходимо активировать «Add Python X.Y to PATH» при установке. Это нужно, чтобы в
дальнейшему инсталлятора Python был доступ к командной стоке.

9.

Подтверждаем, что Python был установлен
правильно
Откроем командную строку и убедимся, что python3 доступен.
Чтобы открыть терминал в Windows:
• Если у вас Windows 8 и выше нажмите кнопку «Поиск» (значок лупы рядом с кнопкой «Пуск»), в
панели поиска наберите «Выполнить» и запустите найденную программу.
• Если у вас Windows версии ниже 8 нажмите кнопку «Пуск» и выберите «Выполнить».
Окно программы "Выполнить" можно также вызвать с помощью сочетания клавиш Win+R.
В появившемся диалоговом окне программы "Выполнить" наберите слово cmd и нажмите
Enter. Запустится терминал.
Затем наберите python - должен запуститься интерактивный интерпретатор. Если команда
python не запустила интерпретатор – попробуйте python3.

10.

Интерактивный режим и первая программа
После установки Python открываем IDLE (среда разработки на языке Python, поставляемая вместе с
дистрибутивом). После запуска IDLE (изначально запускается в интерактивном режиме) появится приглашение к вводу
(>>>).
Команды выполняются построчно: после
нажатия <Enter>, интерпретатор выполняет команду и
выводит. Это удобно, когда пользователь изучает
программирование или тестирует небольшую часть кода.
Ведь если работать на компилируемом языке, то
пришлось бы сначала написать код на исходном языке
программирования, затем скомпилировать, и уже потом
запустить исполняемый файл на выполнение.
Удобнее сохранить код в файл и выполнять уже
файл. Такой режим работы называется скриптовый.

11.

Алфавит и словарь языка
Имена (констант, переменных и других объектов):
не служебные слова;
состоят из букв, цифр и символа подчеркивания;
Первым символом является буква или символ подчеркивания;
прописные и строчные буквы РАЗЛИЧАЮТСЯ!
Правильные имена
x
velichina
zzz
polnaja_summa
s25
_k1
oshibka
Неправильные имена
polnaja summa - содержится
символ (пробел)
2as - начинается с цифры
Domby&Son - содержится
символ &
and – служебное слово языка
Желательно давать переменным «говорящие» имена

12.

Комментарии
Комментарии могут быть
• однострочными, тогда они начинаются с символа #
• многострочными

13.

Арифметические операции

14.

На языке Python вычислить значение y при x равном 1 можно следующим образом:
Эта программа выведет значение y, которое равно 19.
Рассмотрим, как выполняется вычисление пошагово:
1. Переменной x присваивается значение 1.
2. Вычисляется выражение 3 * 6, которое равно 18.
3. К значению переменной x добавляется результат вычисления 3 * 6, что дает 19.
4. Значение переменной y выводится в консоль.

15.

Встроенные функции

16.

Библиотека math
Модуль math содержит часто используемые математические функции. Загрузка модулей в Python осуществляется с помощью
оператора import.
1 способ: загрузить всё содержимое модуля глобально
from math import *
t = sin (pi /6)
v = log (e)
print(t, v)
С помощью этого способа можно обращаться к функциям, лежащим в math, не используя math.sin.
2 способ подойдет в случае необходимости подключения двух, трёх и более модулей. Ведь может возникнуть ситуация, когда в
разных модулях содержатся функции с одинаковыми названиями, но с разными действиями.
import math
t = math .sin ( math .pi /6)
v = math .log ( math .e)
print(t, v)
3 способ заключается в создании псевдонима с помощью ключевого слова as:
import matplotlib . pyplot as plt
plt . plot (x)

17.

Встроенные функции math
math.ceil(x)
Находит ближайшее целое число большее, чем x.
math.fabs(x)
Находит абсолютное значение числа.
math.floor(x)
Находит ближайшее целое число меньшее, чем x.

18.

Вывод данных в консоль
Для вывода данных в консоль используется функция print.
По умолчанию, для разделения элементов в функции print используется пробел.
Для замены разделителя необходимо использовать параметр sep функции print.
>>> print('A','B','C', sep='\n')
A
B
C

19.

Функция print
>>> print('A','B','C', sep='\n')
A
B
C

20.

Ввод данных с клавиатуры
Для считывания вводимых с
клавиатуры данных используется
функция input().
Для сохранения данных в переменной
используется следующий синтаксис.
Если считывается с клавиатуры целое число, то
строку, получаемую с помощью функции input(),
можно передать сразу в функцию int().
Для вывода строки-приглашения,
используйте ее в качестве аргумента
функции input().

21.

Основные типы
данных
ЛЕКЦИЯ 2

22.

Основные типы данных
Встроенные типы данных
Простые
Составные
Числа
Логические переменные
Неизменяемые
Изменяемые
Строки
Списки
Кортежи
Словари
Множества

23.

Типы данных PYTHON
Числовые типы:
int: целые числа
`float`: числа с плавающей точкой
complex: комплексные числа
Последовательности:
list: изменяемый список элементов
`tuple`: неизменяемый список элементов
range: диапазон чисел
Множества:
set: неупорядоченное множество уникальных элементов
Словари:
dict: неупорядоченная коллекция пар "ключ-значение"
Логический тип:
bool: логическое значение (True или False)
Тип "Нет значения":
None: специальное значение, обозначающее отсутствие
значения

24.

Пользовательские типы данных
Помимо встроенных типов данных, Python также позволяет создавать собственные типы данных с помощью
классов. Классы позволяют определять новые типы объектов с пользовательскими атрибутами и методами.
Пример создания пользовательского типа данных:
Этот класс определяет тип данных Person, который имеет
два атрибута: name и age. Он также имеет два метода:
get_name() и get_age(), которые возвращают имя и возраст
объекта Person соответственно.
Теперь можно получить доступ к атрибутам и методам объекта person:
print(person.get_name()) # Выведет "John Doe"
print(person.get_age()) # Выведет 30

25.

Объект None
Объект None является единственным значением специального типа NoneType, который используется для
того, чтобы подчеркнуть отсутствие значения. Важно отметить, что при преобразовании None к типу bool всегда
получается False.
Переменная со значением None может пригодиться, когда необходимо отличать её от нуля. Например,
обозначим некоторой переменной доход от продаж. Он будет равен нулю, если мы ничего не заработали, и None,
если даже не начали продавать.
В условиях сравнения можно проверять, что некоторая переменная является None:
Важно отметить, что мы проверяем равенство переменной income объекту None с помощью оператора is.
Это идиоматичный способ проверки соответствия переменной объекту None в Python.
Писать if income == None неидиоматично в Python, потому что в Python оператор == можно
переопределить с помощью магических методов, о которых будет сказано в дальнейшем.
Вы часто увидите None в именованных аргументах функций или методах классов как значение по
умолчанию --- это обычно применяется тогда, когда аргумент является не обязательным --- функция или метод будут
работать и тогда, когда аргумент явным образом не передали при вызове. Также часто этим значением
инициализируют атрибуты экземпляров классов, чтобы потом в нужный момент переопределить каким-то
значением.

26.

Строки
Строки в Python представляют собой последовательности символов Юникода. Они
заключаются в одинарные или двойные кавычки
\n - перевод на новую строку
\t - знак табуляции
\\ - наклонная черта влево
\' - символ одиночной кавычки
\" - символ двойной кавычки

27.

Преобразование числа в строку
Преобразование строки в число осуществляется с помощью int() или float()
Узнать номер (код) символа - с помощью функции ord(). Получить символ по числовому
коду - chr()

28.

Базовые операции над строками

29.

1. Сложение.
3. Функция len()
2. Умножение.
4. Доступ по индексу.
К символам строки можно получить доступ по
индексам. Первый символ имеет индекс 0, а
последний - `len(string) - 1`.

30.

5. Срезы.
Срезы позволяют получить подстроку из данной строки.
```python
substring = my_string[start:end]
```
где `start` - индекс первого символа подстроки (включительно), а `end` - индекс первого символа после подстроки
(исключительно).
```python
substring = my_string[0:5] # "Hello"
substring = my_string[6:] # "world!"

31.

6. Оператор in.
Возвращает True, если элемент в составе строки встречается и False, если нет:
7. Функции min и max.

32.

Форматирование строк
1-ый способ:
'Лень — главное достоинство программиста. (Larry Wall)'
2-ой способ:
И ещё один (возможно, самый
удобный) способ форматирования строк,
доступный начиная
с версии Python 3.6:
'Преждевременная оптимизация — корень всех зол. (Donald Knuth)'

33.

Методы строк
Python предоставляет множество полезных встроенных методов для работы со строками, таких как:
* `upper()`: возвращает строку в верхнем регистре
* `lower()`: возвращает строку в нижнем регистре
* `title()`: возвращает строку с заглавной первой буквой в каждом слове
* `split()`: разбивает строку на список подстрок, разделенных пробелами
* `join()`: объединяет список подстрок в одну строку, разделенную указанным разделителем

34.

Логический (булевский) тип
Логический тип в Python представлен двумя значениями:
* True (истина)
* False (ложь)
Логические значения используются для представления условий и принятия решений в программах
Python.
Логические значения можно создавать явно с помощью ключевых слов `True` и `False`:
my_bool = True

35.

Логические операторы
Операторы сравнения:
• >,
• <,
• ==,
• ! =,
• >=,
• <=.

36.

В Python есть три основных логических оператора:
* `and`: возвращает `True`, если оба операнда истинны, и `False` в противном случае.
* `or`: возвращает `True`, если хотя бы один операнд истинный, и `False` в противном случае.
* `not`: возвращает противоположное логическое значение операнда.
x=5
y = 10
print(x > 0 and y > 5) # True
print(x > 10 or y > 15) # True
print(not x == 10) # True

37.

Логические значения можно комбинировать для создания более сложных логических
выражений. Например, следующее выражение проверяет, является ли число `x`
положительным и четным:
is_positive_and_even = (x > 0) and (x % 2 == 0)

38.

Условный оператор if
Оператор if в Python используется для создания условных операторов, которые позволяют выполнять
разные действия в зависимости от истинности или ложности условия.

39.

Операторы if могут быть вложены друг в друга для создания более сложных условий.
В этом примере, если x больше 0, будет проверено,
является ли x четным или нечетным. Если x четное, будет
выведено сообщение "x is positive and even", в противном
случае будет выведено сообщение "x is positive and odd".
Если x не больше 0, будет выведено сообщение "x is nonpositive".

40.

Оператор elif
Оператор elif используется для проверки нескольких условий последовательно. Он является сокращением
от "else if".
В этом примере, если x больше 0, будет выведено
сообщение "x is positive". Если x равен 0, будет выведено
сообщение "x is zero". Если x меньше 0, будет выведено
сообщение "x is negative".
Оператор `else` является необязательным и может быть опущен, если не требуется выполнять
никаких действий, когда условие ложно.
Оператор elif может использоваться несколько раз перед оператором else.

41.

Условный оператор if

42.

Списки
Списки в Python представляют собой изменяемые последовательности элементов
любого типа. Они заключаются в квадратные скобки.
[159 , 152 , 140 , 128 , 113]
[15.9 , 15.2 , 14.0 , 128. , 11.3]
[’Даша’, ’Катя’, ’Ксюша’]
[’Саратов’, ’Астраханская’, 104 , 18]
[[1 , 0, 0], [0, 1, 0], [0, 0, 1]]
#список целых чисел
#список вещественных чисел
#список строк
#смешанный список
#список списков
К элементам списка можно получить доступ по индексам. Первый элемент имеет индекс 0, а последний `len(list) - 1`.
first_element = my_list[0] # 1
last_element = my_list[-1] # True

43.

44.

Срезы позволяют получить подсписок из данного списка. Синтаксис:
sublist = my_list[start:end]

45.

Метод copy
Cсылкf на список

46.

Методы списка

47.

48.

49.

Функции для списков
Стандартные функции
len
len(mylist)
sum
подсчитывает сумму элементов списка, если все они числового типа
range
позволяет сформировать диапазон значений целых чисел
В самом общем случае range принимает 3 аргумента: начало диапазона, конец (всегда берётся не
включительно) и шаг.
sorted()
возвращает новый список, отсортированный по убыванию
min и max
находят максимальный и минимальный элементы списка.

50.

Оператор in, позволяющий узнать, принадлежит ли элемент списку

51.

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

52.

Создание кортежей
my_tuple = (1, 2, 3, "Hello", True)
Доступ к элементам кортежа
К элементам кортежа можно получить доступ по индексам. Первый элемент имеет индекс 0, а
последний - `len(tuple) - 1`.
first_element = my_tuple[0] # 1
last_element = my_tuple[-1] # True
Срезы кортежей
Срезы позволяют получить подкортеж из данного кортежа. Синтаксис:
subtuple = my_tuple[start:end]
subtuple = my_tuple[1:3] # (2, 3)
subtuple = my_tuple[2:] # (3, "Hello", True)

53.

>>> A=(1, 2, 3)
>>> B=list(A)
>>> B
[1, 2, 3]
>>> C=tuple(B)
>>> C
(1, 2, 3)
можно использовать кортежи, чтобы присваивать значение
нескольким переменным сразу:
>>> v=('f',5,True)
>>> (x,y,z)=v
>>> x
'f'
>>> y
5
>>> z
True

54.

Встроенные методы кортежей
Python предоставляет несколько полезных встроенных методов для работы с кортежами, таких как:
* `tuple.count()`: возвращает количество вхождений элемента в кортеж
* `tuple.index()`: возвращает индекс первого вхождения элемента в кортеж
**Пример:**
count = my_tuple.count(2) # Возвращает количество вхождений 2 в кортеж
index = my_tuple.index("Hello") # Возвращает индекс первого вхождения "Hello" в кортеж

55.

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

56.

Словари
Словари в Python представляют собой неупорядоченные коллекции пар "ключзначение". Они заключаются в фигурные скобки.

57.

Создание словарей:
my_dict = {"name": "John Doe", "age": 30, "city": "New York"}
Доступ к значениям словаря:
К значениям словаря можно получить доступ по ключам. Ключами могут быть строки, числа или
кортежи.
name = my_dict["name"] # John Doe
age = my_dict["age"] # 30

58.

59.

Встроенные методы словарей
Python предоставляет множество полезных встроенных методов для работы со словарями, таких как:
`dict.keys()`: возвращает список ключей словаря
dict.values(): возвращает список значений словаря
`dict.items()`: возвращает список пар "ключ-значение" словаря
dict.get(): возвращает значение, связанное с заданным ключом, или значение по умолчанию, если ключ
отсутствует

60.

Множества
Множества (set) в Python –представляют собой
неупорядоченные коллекции уникальных элементов. Они
заключаются в фигурные скобки.

61.

Способы создания множеств

62.

Добавление и удаление элементов множества
Элементы можно добавлять в множество с помощью метода add().
Элементы можно удалять из множества с помощью метода remove().

63.

64.

Встроенные методы множеств
Python предоставляет несколько полезных встроенных методов для работы со множествами, таких как:
`set.union()`: объединяет два множества
set.intersection(): возвращает пересечение двух множеств
`set.difference()`: возвращает разность двух множеств
set.issubset(): проверяет, является ли одно множество подмножеством другого

65.

Циклы
ЛЕКЦИЯ 3

66.

Цикл while

67.

Пример : вывод первых n чисел Фибоначчи. Это ряд чисел, в котором каждое последующее
число равно сумме двух предыдущих

68.

69.

Моржовый оператор
Значение 15 присваивается num. Затем возвращается то же значение, которое становится
аргументом для функции print. Таким образом, выводится 15.

70.

Моржовый оператор. Пример
А теперь перепишем эту программу с использованием моржового оператора:

71.

Цикл for

72.

Для строк

73.

Функция range
Создает последовательность (диапазон) целых чисел
для создания диапазона чисел необходимо использовать
цикл for

74.

Тоже самое можно сделать:
Диапазоны и списки:

75.

break и continue
Два похожих оператора, которые можно встретить и в других языках программирования.
•break — прерывает цикл и выходит из него;
•continue — прерывает текущую итерацию и переходит к следующей.
В случае continue
происходит похожая
ситуация, только
прерывается лишь одна
итерация, а сам же цикл
продолжается.
цикл, дойдя до числа 45 и вернув истину
в условном выражении, прерывается и
заканчивает свою работу

76.

Сумма чисел в строке:
Результат:
Инструкция continue приводит к переходу к
следующему шагу цикла, т.е. все команды, которые
находятся после continue, будут проигнорированы.

77.

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

78.

Подходы при создании списков

79.

Списковое включение (List Comprehension)
Списковое включение — это встроенный в Python механизм генерации списков. У него только
одна задача — это построить список. Списковое включение строит список из любого итерируемого типа,
преобразуя (фильтруя) поступаемые значения.
В списковом включении можно задавать условие для выбора значения из диапазона (например,
исключить значение 4):

80.

Функция randint генерирует
случайное число из заданного
диапазона

81.

82.

Использование моржового оператора в генераторах
списка
Генерировать список res из значений, превышающих 1, и полученных при
целочисленном делении на 2 элементов списка lst:

83.

Некоторые алгоритмические приёмы
Необходимо вычислить значение выражения 1! + 2! + · · · + n!
Вычисление «в лоб»

84.

Некоторые алгоритмические приёмы
Рекуррентные соотношения

85.

Некоторые алгоритмические приёмы
Счётчик событий

86.

Некоторые основные алгоритмические приёмы
Поиск первого вхождения
Конструкция else, относящаяся к циклу.

87.

Обработка исключений
Обработка исключений в Python позволяет обрабатывать ошибки и исключения, возникающие во
время выполнения программы.

88.

где:
`try`: блок кода, который может привести к исключению
except Exception1 as e1: блок обработки исключения Exception1, переменная e1 будет содержать экземпляр
исключения
`except Exception2 as e2`: блок обработки исключения `Exception2`, переменная `e2` будет содержать
экземпляр исключения
...: дополнительные блоки обработки исключений (необязательно)
`else`: блок кода, который будет выполнен, если исключений не возникло (необязательно)
finally: блок кода, который будет выполнен независимо от того, возникло исключение или нет
(необязательно)

89.

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

90.

Finally

91.

Функции в Python
ЛЕКЦИЯ 4

92.

Функции в программировании
Функции в Python представляют собой именованные блоки кода, которые можно многократно
вызывать и которые могут принимать параметры и возвращать значения.
Синтаксис:
def имя_функции (параметры):
"""Докстрока (документация функции)"""
# Тело функции
return значение
где:
* `имя_функции` - имя функции
* `параметры` - параметры, которые принимает функция (необязательно)
* `Докстрока` - строка документации, описывающая функцию и ее поведение (необязательно)
* `Тело функции` - код, который будет выполнен, когда функция будет вызвана
* `значение` - значение, возвращаемое функцией (необязательно)

93.

94.

Обязательные и необязательные аргументы
**Обязательные аргументы функции** в Python - это аргументы, которые должны быть переданы
при вызове функции. Если какой-либо обязательный аргумент не указан, будет выдана ошибка.
**Необязательные аргументы функции** - это аргументы, которые не являются обязательными и
могут иметь значения по умолчанию. Если необязательный аргумент не указан при вызове функции,
ему будет присвоено значение по умолчанию.
* Обязательные аргументы должны быть указаны перед
необязательными.
* Если необязательный аргумент не указан, ему будет
присвоено значение по умолчанию.
* Если указаны как обязательный, так и необязательный
аргумент с одинаковым именем, будет использоваться
значение обязательного аргумента.
def Degree (x, a):
f = x**a
return f
def Degree (x, a =2):
f = x**a
return f
>>> Degree (3, 4)
81

95.

Именованные аргументы

96.

Произвольное количество аргументов

97.

Локальные и глобальные переменные
Локальные переменные объявляются внутри функции и
доступны только из этой функции. Они существуют только
во время выполнения функции и уничтожаются после
завершения функции.
Глобальные переменные объявляются вне любой функции
и доступны из любой точки программы. Они существуют на
протяжении всего выполнения программы.
>>> def mathem (a, b):
a = a/2
b = b+10
print(a+b)
>>> num1 = 100
>>> num2 = 12
>>> mathem (num1 , num2 )
72.0
>>> num1
>>>100
>>> num2
12
>>> a
Traceback ( most recent call last ):
File "<pyshell #10 >", line 1, in <module >
a
NameError : name ’a’ is not defined

98.

Доступ к глобальным переменным из функций:
Чтобы получить доступ к глобальной переменной из функции, необходимо использовать ключевое
слово global. Это сообщает интерпретатору Python, что вы хотите использовать глобальную
переменную, а не локальную.
Синтаксис:

99.

Изменение глобальных переменных из функций:
Чтобы изменить значение глобальной переменной из функции, необходимо присвоить ей новое
значение после объявления ее как глобальной.
Синтаксис:
Изменение глобальных переменных из функций следует использовать с осторожностью, поскольку
это может привести к побочным эффектам и ошибкам.
Рекомендуется избегать использования глобальных переменных, если это возможно, и вместо
этого использовать локальные переменные и параметры функций.

100.

Рекурсивный вызов функции
**Рекурсивный вызов функции** - это когда функция вызывает саму себя. Это мощный инструмент,
который может быть использован для решения различных задач, таких как обход деревьев, поиск в глубину и
вычисление факториалов.
**Как работает рекурсия:**
* Функция вызывает саму себя с другими аргументами.
* Вызов рекурсии продолжается до тех пор, пока не будет достигнуто базовое условие, которое
останавливает рекурсию.
* После того, как базовое условие достигнуто, функция начинает возвращаться из своих рекурсивных
вызовов, разматывая стек вызовов.
* Результаты каждого рекурсивного вызова используются для вычисления окончательного результата.

101.

**Пример:**
Вычисление факториала с помощью рекурсии:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
**Как работает этот пример:**
* Если `n` равно 0, функция возвращает 1, что является базовым условием.
* Если `n` не равно 0, функция умножает `n` на результат рекурсивного вызова `factorial(n-1)`.
* Рекурсия продолжается до тех пор, пока не будет достигнуто базовое условие (`n` равно 0).
* Результаты каждого рекурсивного вызова перемножаются, чтобы получить окончательный результат.

102.

Преимущества рекурсии
* Упрощает код для задач, которые имеют рекурсивную структуру.
* Позволяет решать сложные задачи, разбивая их на более мелкие подзадачи.
Недостатки рекурсии
* Может привести к переполнению стека, если рекурсия слишком глубокая.
* Может быть сложнее отслеживать и отлаживать, чем итеративный код.
Советы по использованию рекурсии:
* Всегда используйте базовое условие для остановки рекурсии.
* Внимательно подбирайте параметры рекурсивных вызовов, чтобы избежать переполнения стека.
* Рассмотрите использование итеративного подхода вместо рекурсии, если это возможно, для
повышения производительности и простоты отслеживания.

103.

Массивы. Модуль
numpy
ЛЕКЦИЯ 5

104.

**NumPy** (сокращенно от Numerical Python) - это библиотека Python,
которая предоставляет мощные функции для работы с многомерными
массивами и матрицами. Она широко используется в научных вычислениях,
обработке данных и машинном обучении.
**Основные возможности NumPy:**
* Создание и манипулирование многомерными массивами (также
известными как тензоры)
* Линейная алгебра (матричные операции, вычисление собственных
значений и собственных векторов)
* Статистические функции (вычисление средних значений, дисперсий и т.д.)
* Обработка сигналов (преобразование Фурье, фильтрация и т.д.)
* Взаимодействие с другими библиотеками, такими как SciPy и Matplotlib
Сайт: http://numpy.scipy.org/
Документация: http://scipy.org/doc/numpy_api_docs/

105.

Создание и индексация массивов
Для создания массивов NumPy можно использовать функцию `numpy.array()`.
import numpy as np
# Создаем одномерный массив
array_1d = np.array([1, 2, 3, 4, 5])
# Создаем двумерный массив (матрицу)
array_2d = np.array([[1, 2, 3], [4, 5, 6]])

106.

107.

108.

109.

linspace также создаюет массив-диапазон.
Её первый аргумент – начало диапазона, второй - конец диапазона, третий - количество элементов в
диапазоне.

110.

Срезы

111.

Специальные функции для создания массива
ones массив из единиц,
zeros - массив из нулей,
empty - массив, значения элементов которого могут быть какими угодно (берётся то, что лежало в ячейках памяти до того, как
в них был размещён массив).

112.

113.

Методы массивов
a=numpy.array([0.1, 0.25, -1.75, 0.4, -0.9]):

114.

115.

Функция может применяться к самому массиву и производить действия над всеми элементами
И даже сложные составные выражения
r = sin(x)*cos(x)*exp(-x**2) + 2 + x**2
подвластны волшебству массивов:
r = zeros(len(x))
for i in xrange(len(x)):
r[i] = sin(x[i])*cos(x[i])*exp(-x[i]**2) + 2 + x[i]**2
+
существенный выигрыш в скорости по сравнению со списками
существенно повышает скорость обработки
делает код более понятным и ясным для чтения

116.

Использование срезов:

117.

Массивы numpy можно итерировать циклом

118.

Применим форматирование
print(" {:12.8 f}\t {:12.8 f}\t {:12.8 f}".format(t[i], x[i], y[i ]))

119.

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

120.

121.

Итерирование многомерных массивов
Если нужно перебрать поэлементно весь массив, можно использовать атрибут flat:

122.

Функция dot
Осуществляет матричное умножение
[[4 1]
[2 2]]
11
[16 1]
[18 6]

123.

Графики. Модуль
matplotlib
ЛЕКЦИЯ 6

124.

Модуль matplotlib
Matplotlib - это библиотека визуализации данных для Python, которая используется для
создания различных типов графиков, таких как линейные графики, гистограммы, рассеянные
диаграммы и т.д. Она предоставляет простой и интуитивно понятный интерфейс для создания
настраиваемых и информативных визуализаций.
Основные возможности Matplotlib:
Создание широкого спектра типов графиков, включая линейные графики, гистограммы,
рассеянные диаграммы и т.д.
• Настройка осей координат, легенд, заголовков и т.д.
• Поддержка различных форматов вывода, таких как PNG, JPEG, PDF и SVG
• Взаимодействие с другими библиотеками, такими как NumPy и Pandas

125.

Простые графики
Импортируйте библиотеку Matplotlib и используйте функции pyplot для создания графика.

126.

По оси абсцисс отложены номера элементов
списка x, а по оси ординат - сами эти элементы.
Вы можете настроить график, изменив его
размер, цвет, стиль линий, метки осей и т.д.

127.

128.

Встроенные типы линий (linestyle) и маркеров (markers)

129.

plot (x, ’:o’)
show ()

130.

Изменить цвет графика можно с помощью параметра color:
plot (x, ’:o’, color =’grey ’)
show ()
Если нужного цвета нет среди именованных значений, можно использовать кодировку, похожую на RGB. Нужно
задать интенсивность каждого цвета от 0 до 1:
1 соответствует максимально возможной интенсивности каждого цвета,
0 - его нулевой интенсивности.
plot (x, ’:o’, color =(0.5 , 0, 0.5))
show ()

131.

Функции plot можно передать два списка.
Первый список интерпретируется как абсциссы точек, второй - как их ординаты.

132.

Несколько кривых на одном поле

133.

Сохранение графика в файл
С помощью команды savefig, единственным обязательным аргументом которой является имя файла.
plot (t, x)
plot (t, y)
savefig (’sincos .png ’)
show ()
Можно сохранить график в файлы разных форматов:
plot (t, x)
plot (t, y)
savefig (’sincos .png ’)
savefig (’sincos .pdf ’)
show ()

134.

title, xlabel и ylabel

135.

136.

137.

legend (loc=’best ’)
grid ( True )

138.

Несколько графиков на одном поле
from numpy import *
from matplotlib . pyplot import *
t = arange (0, 2, 0.01)
x = sqrt (t)
y=t
z = sqrt (t **3)
u = t**2
v = sqrt (t **5)
w = t**3
subplot (3, 2, 1)
plot (t, x, label =’x **(1/2) ’)
title (r’$\ sqrt {x}$’)
ylim ([0 , 5])
subplot (3, 2, 2)
plot (t, y, label =’x’, color =’red ’)
title (r’$x$ ’)
ylim ([0 , 5])
subplot (3, 2, 3)
plot (t, z, label =’x **(3/2) ’)
title (r’$\ sqrt {x^3}$’)
ylim ([0 , 5])
subplot (3, 2, 4)
plot (t, u, ’:’, label =’x **2 ’)
title (r’$x ^2$’)
ylim ([0 , 5])
subplot (3, 2, 5)
plot (t, v, label =’x **(5/2) ’)
title (r’$\ sqrt {x^5}$’)
ylim ([0 , 5])
subplot (3, 2, 6)
plot (t, w, label =r’$x ^3$’)
title (r’$x ^3$’)
legend (loc =0)
grid ( True )
tight_layout ()
show ()

139.

140.

Несколько окон с графиками

141.

Гистограммы

142.

Изменим программу, указав количество разбиений:

143.

Диаграммы-столбцы

144.

145.

146.

Круговые диаграммы

147.

148.

Контурные диаграммы

149.

150.

Можно использовать функцию contourf .

151.

Трёхмерные графики
Все дополнительные классы для работы в 3D находятся в модуле:
mpl_toolkits.mplot3d
создадим трехмерную систему координат

152.

После создания координатных осей можно в них строить двумерные и трехмерные графики:
•plot() – линейный 2D график в трех измерениях;
•step() – ступенчатый 2D график в трех измерениях;
•scatter() – точеный график 3D график.
Также становятся доступными следующие дополнительные функции:
•plot_wireframe() – построение каркасной поверхности в 3D;
•plot_surface() – построение непрерывной 3D поверхности.

153.

154.

Теперь можно нарисовать что-нибудь трёхмерное в полученных осях. Можно рисовать
один каркас (wireframe ), а можно - поверхность (surface):

155.

156.

loadtxt и savetxt
[[ 1. 0. 0.]
[ 0. 1. 0.]
[ 0. 0. 1.]]
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]

157.

Обработка текстов
ЛЕКЦИЯ 7

158.

Обработка текста

159.

Кодировка Python-программы

160.

Кодировка Python-программы
Полный перечень кодировок (и их псевдонимов):
Если кодировка не указана, то считается, что используется us-ascii.

161.

Строковые литералы

162.

Форматирование строк
Форматирование можно сделать с помощью оператора %, и метода format.
Если для подстановки требуется только один аргумент, то значение - сам аргумент:
А если несколько, то значением будет являться кортеж со строками подстановки:

163.

164.

165.

Флаги преобразования:

166.

Операции над строками

167.

168.

Некоторые наиболее употребительные значения
для спецификации форматирования

169.

Методы строк

170.

171.

172.

Метод endswith()используется для проверки того, оканчивается ли строка на определенное
сочетание букв:
Метод replace:

173.

Модуль difflib

174.

Пример на использование функции difflib.get_close_matches():
В списке names - названия Unicode-символов с ASCII-кодами от 40 до 127.

175.

Регулярные выражения

176.

177.

Синтаксис регулярного выражения

178.

179.

180.

181.

Флаги, используемые с регулярными
выражениями

182.

Методы объекта-шаблона

183.

184.

185.

Примеры
Любой символ кроме новой строки
Точки в строке

186.

Любая цифра
>>> text = '01, Янв 2018'
>>> print(re.findall('\d+', text)) # Любое число (1 и более цифр подряд)
['01', '2018']
Все, кроме цифры
>>> text = '01, Янв 2018'
>>> print(re.findall('\D+', text)) # Любая последовательность, кроме цифр
[', Янв ']
Любая буква или цифра
>>> text = '01, Янв 2018'
>>> print(re.findall('\w+', text)) # Любой символ(1 или несколько подряд)
['01', 'Янв', '2018']

187.

Все, кроме букв и цифр
Только буквы
>>> text = '01, Янв 2018'
>>> print(re.findall('[а-яА-ЯёЁ]+', text)) # Последовательность букв русского алфавита
['Янв']
Соответствие заданное количество раз

188.

1 и более вхождений
>>> print(re.findall(r'Co+l', 'So Cooool')) # 1 и более буква 'o' в строке
['Cooool']
Любое количество вхождений (0 или более раз)
0 или 1 вхождение

189.

Работа с файлами
ЛЕКЦИЯ 8

190.

Файлы Python

191.

Открытие файла

192.

193.

Пример

194.

Закрытие файла

195.

196.

197.

Чтение и запись файлов в Python

198.

199.

200.

Переименование файлов в Python

201.

Текущая позиция в файлах Python

202.

Некоторые методы файла в Python

203.

МодульTkinter
ЛЕКЦИЯ 9

204.

205.

Tkinter

206.

Класс Tk

207.

Расширенное использование виджетов в Tkinter
Некоторые виджеты Tkinter:

208.

Расположение виджетов

209.

Обработка событий

210.

Tkinter и ООП
Пример использования ООП с Tkinter для создания простого приложения:

211.

Стилизация виджетов

212.

Виджеты меню и подменю
Для создания меню используется виджет Menu

213.

Взаимодействие с пользователем через
диалоговые окна

214.

Canvas
В tkinter от класса Canvas создаются объекты-холсты, на которых можно "рисовать", размещая
различные фигуры и объекты, с помощью вызовов соответствующих методов.
При создании экземпляра Canvas необходимо указать к какому окну он относится, его ширину и высоту
(точка отсчета – верхний левый угол).
can = Canvas(root, width=200, height=200, bg='white')
Здесь:
сan – это имя (любой идентификатор) холста, под которым он в дальнейшем используется
root – имя окна, в котором будет расположен «холст»
with – ширина
height – длина
bg – фон холста.
Фон может задаваться словами: white, black, gray, navy, blue, cyan, green, yellow, red, orange, brown,
maroon, violet, purple и т.д. или в формате RGB.

215.

Canvas применяется в Python для вывода следующих графических примитивов:
линий,
прямоугольников,
эллипсов,
текста,
окон,
изображений
При размещении объектов на «холсте» указываются их координаты на холсте в пикселах.
Точка отсчета – верхний левый угол (0,0)

216.

217.

Методы Canvas для двухмерного рисования:

218.

Создание линии
Метод
Параметры
Свойства:
create_line()
координаты x и y
fill – цвет линии
arrow – тип стрелки ((FIRST(начало отрезка), BOTH (с обеих сторон), LAST (в конце отрезка)
with – ширина стрелки в пикселях
activefille – цвет стрелки при наведении курсора
arrowshape – форма стрелки (три значения)
dash – делает стрелку пунктирной (два значения – первое – сколько пикселей нарисовано, второе –
сколько пикселей пропущено)

219.

Создание нескольких одинаковых линий

220.

Создание прямоугольника
Метод
Параметры
Свойства:
create_rectangle()
координаты x и y верхнего левого угла и правого нижнего
fill – цвет прямоугольника
outline – цвет границ прямоугольника
with – ширина границ прямоугольника в пикселях
activedash – при наведении курсора граница прямоугольника становится пунктирной
activefill – при наведении курсора цвет фигуры меняется на указанный
activeoutline – цвет контура фигуры меняется при наведении курсора

221.

Отрисовка многоугольника
Метод
create_polygon()
Параметры
координаты каждой точки многоугольника
(координаты каждой точки можно брать в скобки)
Свойства:
такие же как и в прямоугольнике
Важно! Если не задавать цвет – многоугольник окрашивается в сплошной черный цвет!!!

222.

Пример 2: при наведении курсора, буква П меняет цвет на синий:

223.

Отрисовка овала
Метод
Параметры
Свойства:
create_oval()
координаты прямоугольника, в который вписан овал
такие же как и в прямоугольнике

224.

Отрисовка дуги

225.

Отображение текста

226.

227.

Вывод изображения

228.

Добавление виджетов
метод create_window()

229.

230.

Создание прокрутки
Для создания прокрутки виджет Canvas предоставляет параметр , который позволяет установить
прокручиваемую область:
В данном случае устанавливается прокручиваемая область 1000х1000:

231.

Список использованных источников и литературы:
1. Сысоева М. В., Сысоев И. В. Программирование для «нормальных» с нуля на языке Python: Учебник. В
двух частях. Часть 1 / Ответственный редактор: В. Л. Черный : — М.: Базальт СПО; МАКС Пресс, 2018. —
176 с. [+4 с. вкл]: ил.
2. Примеры применения регулярных выражений в Python. URL: https://pythonru.com/primery/primeryprimeneniya-regulyarnyh-vyrazheniy-v-python. (Дата обращения 20.01.2024)
3. Васильев А. Н. Программирование на Python в примерах и задачах. М.: Бомбора. – 2020. – 616 с.

232.

Учебная литература
Захаркина Светлана Валерьевна
Основы программирования на Python.
Мультимедийное сопровождение лекций
Учебное пособие
Объем 4,47 МБ Тираж 10
Редакционно-издательский отдел ФГБОУ ВО «РГУ им. А.Н. Косыгина»
115035, Москва, ул. Садовническая, 33, стр. 1
тел. 8-495-811-01-01 доб. 1099
e-mail: riomgudt@mail.ru
English     Русский Rules