Вы находитесь на странице: 1из 49

Алгоритмы и структуры данных в языке Python

Введение в язык программирования


Python

1
Выполнение процессором двоичных инструкций

2
3
Низкоуровневое программирование

Для перевода программы, написанной на языке ассемблера, в программу на


машинном языке применяется специальная программа, которая называется
ассемблером.

4
Компилирование высокоуровневой программы и ее
исполнение

5
Исполнение высокоуровневой программы интерпретатором

Интерпретатор транслирует каждую высокоуровневую инструкцию на


эквивалентные ей команды на машинном языке и затем немедленно их
исполняет.

6
История PYTHON

Язык программирования PYTHON был создан примерно в


1991 году голландцем Гвидо ван Россумом.
Свое имя – Пайтон (или Питон) – получил от названия
телесериала, а не пресмыкающегося.
После того, как Россум разработал язык, он выложил его в
Интернет, где уже целое сообщество программистов
присоединилось к его улучшению.

Python активно совершенствуется и в настоящее время.


Часто выходят его новые версии. Официальный сайт
http://python.org.
8
Язык Python поддерживает несколько парадигм
программирования, включая:
• структурное (процедурное)
• объектно-ориентированное
• функциональное программирование.

Парадигма объектно-ориентированного программирования


(сокращенно ООП ) подразумевает, что программа реализуется
через набор взаимодействующих объектов, которые, в свою
очередь, обычно создаются на основе классов.

Язык Python относится к интерпретируемым языкам


программирования

9
Структура программы на Python. Ввод и вывод данных

Программа на Python состоит из инструкций. Каждая инструкция


располагается на отдельной строке. Если инструкция не является
вложенной, то она должна начинаться с начала строки (пробелы перед
инструкцией недопустимы), иначе будет выдано сообщение об ошибке.

Если нужно в одной строке расположить несколько инструкций, то их


следует разделять символом точка с запятой. Слишком длинную
инструкцию можно перенести на следующую строку, поставив в конце
символ продолжения строки «\» (перед Enter).

Любая часть программы, заключенная в скобки (круглые, квадратные или


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

10
Комментарии в Python являются однострочными. Комментарий
начинается с символа «#» и заканчивается в конце строки.

Если нужно закомментировать несколько строк программы, то можно


разместить их внутри тройных кавычек или апострофов. Получится
строка документирования.

11
Основные типы данных в языке Python
Данные в программе являются объектами. Каждый объект имеет значение
и тип. Например, когда в программе используется инструкция x = 22,
создается объект типа int со значением 22. Тип (или класс) объекта
определяет его внутреннее представление и операции, которые над ним
можно выполнять.

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

13
Имена переменных
МОЖНО использовать
• латинские буквы (A-Z, a-z)
заглавные и строчные буквы различаются
• русские буквы (не рекомендуется!)
• цифры
имя не может начинаться с цифры
• знак подчеркивания _
НЕЛЬЗЯ использовать
• скобки
• знаки +, =, !, ? и др.
Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos” TU154
[QuQu] _ABBA A+B
14
Типы переменных

a=4
print ( type(a) )
целое число (integer)
<class 'int'>
a = 4.5
print ( type(a) )
вещественное число
<class 'float'>
a = "Вася"
print ( type(a) )
символьная строка
<class 'str'>
a = True
print ( type(a) )
логическая
<class
15
'bool'>
Как записать значение в переменную?

оператор ! При записи нового значения


старое удаляется из памяти!
присваивания

a = 5 a 5

a = 7 7

Оператор – это команда языка программирования


(инструкция).
Оператор присваивания – это команда для записи
нового значения переменной.

16
Ввод значения с клавиатуры

a = input() ввести строку с клавиатуры и


связать с переменной a
b = input()
Протокол:
с=a + b 21
33
print ( c )
2133 ? Почему?

! Результат функции input – строка символов!

преобразовать в
целое число
a = int( input() )
b = int( input() )
17
Ввод двух значений в одной строке

a, b = map ( int, input().split() )


21 33 input() ввести строку с клавиатуры

21 33 input().split()
целые разделить строку на
применить части по пробелам
21 33 map ( int, input().split() )
эту
операцию к каждой части

a, b = map ( int, input().split() )

18
Ввод с подсказкой

a = input ( "Введите число: " )


Введите число: 26 подсказка

? Что не так?

a = int( input("Введите число: ") )

19
Изменение значений переменной

a = 5
b = a + 2
a = (a + 2)*(b – 3)
b = b + 1

28 =(5+2)*(7-3)
a 5

b 7 =5+2
8 =7+1

20
Вывод данных
значение
print ( a ) переменной

print ( "Ответ: ", a ) значение и


текст
перечисление через запятую
вычисление
print ( "Ответ: ", a+b ) выражения
print ( a, "+", b, "=", c )
2 + 3 = 5 через пробелы

print ( a, "+", b, "=", c, sep = "" )


2+3=5 убрать разделители
21
Сложение чисел: простое решение

a = int ( input() )
b = int ( input() )
c=a+b
print ( c )

? Что плохо?

22
Сложение чисел: полное решение

print ( "Введите два числа: " )


a = int ( input() )
подсказка
b = int ( input() )
c=a+b
print ( a, "+", b, "=", c )
Протокол: компьютер

Введите два целых числа


25 30 пользователь
25 + 30 = 55

23
Форматный вывод

целое
a = 123
print ( "{:5d}".format(a)
5 ) 123
5 знаков

a = 5
print ( "{:5d}{:5d}{:5d}".format
(a, a*a, a*a*a) )

5 25 125
5 знаков 5 знаков 5 знаков

24
Архитектура приложений Python

25
Модульное программирование 

Модульное программирование есть процесс разбиения большой и


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

Преимущества модульного подхода:


1. Простота
2. Модифицируемость
3. Повторное использование кода
4. Область действия

26
•Функция: это блок кода, который можно использовать по несколько
раз, вызывая его с помощью ключевого слова. Например, print() - это
функция.

•Модуль: это файл с расширением .py, который содержит список


функций (также — переменных и классов). Например,
в statisctics.mean(a), mean - это функция, которую можно найти в
модуле statistics.

•Пакет: это коллекция модулей


Например, numpy.random.randint(2, size=10). randint() - это функция в
модуле random в пакете numpy.

•Библиотека: это обобщенное название для определенной


коллекции кода в Python.

27
28
29
Модуль оформляется в виде отдельного файла с
исходным кодом. Стандартные модули находятся в
каталоге, где их может найти соответствующий
интерпретатор языка. Пути к каталогам, в которых Python
ищет модули, можно увидеть в значении переменной
sys.path:

30
Стандартная библиотека Python

Примеры модулей:

random – генерация случайных чисел


statistics - встроенный модуль со следующими функциями:
среднее значение, медиана, деление с остатком,
среднеквадратичное отклонение, дисперсия и многие
другие
math- включает факториал, возведение в степень,
логарифмические функции, а также тригонометрию и
константы.
datetime- работа с датами и временем
csv- модуль для работы с csv файлами
copy- копирование объектов
os- взаимодействие с операционной системой
31
Оператор import  
Содержимое модуля становится доступным вызывающему объекту после
выполнения оператора import, который может быть записан в нескольких
форматах.
Вариант 1. import <module_name>   
Данный формат записи оператора import позволяет импортировать
отдельные объекты из модуля непосредственно в таблицу определений
вызывающего скрипта:

Вариант 2. from <module_name> import <name(s)>


После выполнения приведенного выше оператора в среде вызывающего
скрипта на <name(s)> можно ссылаться без префикса <module_name> :
from mod import s, foo

Вариант 3. Можно даже сделать import всего из модуля :


from <module_name> import *

32
Примеры использования команды import  

import math
# Используем функцию sqrt из модуля math
print (math.sqrt(9))
# Печатаем значение переменной pi, определенной в math
print (math.pi)

# Импортируем из модуля math функцию sqrt


from math import sqrt
# Выводим результат выполнения функции sqrt.
# Обратите внимание, что нам больше незачем указывать имя модуля
print (sqrt(144))
# Но мы уже не можем получить из модуля то, что не импортировали
print (pi) # Выдаст ошибку

33
from math import *
 # Теперь у нас есть доступ ко всем функция и переменным,
определенным в модуле math
print (sqrt(121))
print (pi)
print (e)

Однако это конструкцию следует использовать с осторожностью,


поскольку при импортировании нескольких модулей можно запутаться в
своем собственном коде.

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

В среде Python без дополнительных операций импорта доступно более сотни


встроенных объектов, в основном, функций и исключений. Для удобства функции
условно разделены по категориям:

•Функции преобразования типов и классы: coerce, str, repr, int, list, tuple, long, float,
complex, dict, super, file, bool, object
•Числовые и строковые функции: abs, divmod, ord, pow, len, chr, unichr, hex, oct, cmp,
round, unicode
•Функции обработки данных: apply, map, filter, reduce, zip, range, xrange, max, min,
iter, enumerate, sum
•Функции определения свойств: hash, id, callable, issubclass, isinstance, type
•Функции для доступа к внутренним структурам: locals, globals, vars, intern, dir
•Функции компиляции и исполнения: eval, execfile, reload, __import__, compile
•Функции ввода-вывода: input, raw_input, open
•Функции для работы с атрибутами: getattr, setattr, delattr, hasattr
•Функции-"украшатели" методов классов: staticmethod, classmethod, property

35
36
Пакеты позволяют иерархически структурировать пространство имен
модуля с использованием точечной нотации. Точно так же,
как модули помогают избежать коллизий между именами глобальных
переменных, пакеты помогают избежать коллизий между именами
модулей.
import pkg.mod1, pkg.mod2

37
Основополагающими являются следующие библиотеки:

NumPy - основополагающая библиотека для научных вычислений


Matplotlib - библиотека для работы с двумерными графиками
Pandas - инструмент для анализа данных и временных рядов.
Scikit-learn - интегратор алгоритмов машинного обучения.
Scikit-image - коллекция алгоритмов для обработки изображений.
SciPy - библиотека, используемая в математике, естественных науках
Jupyter - интерактивная онлайновая вычислительная среда;
PyQt5 - библиотека инструментов для программирования
графического интерфейса пользователя,
Spyder - инструментальная среда программирования на Python.
38
Вычисления в Python

39
40
Типы данных
• int # целое
• float # вещественное
• bool # логические значения
• str # символьная строка
a=5
print ( type(a) ) <class 'int'>
a = 4.5
print ( type(a) ) <class 'float'>
a = True
print ( type(a) ) <class 'bool'>
a = "Вася"
print ( type(a) ) <class 'str'>
41
Арифметическое выражения
3 1 2 4 5 6
a = (c + b**5*3 - 1) / 2 * d
Приоритет (старшинство): 5
1) скобки c  b  3 1
a d
2) возведение в степень ** 2
3) умножение и деление
4) сложение и вычитание перенос на
следующую строку
a = (c + b*5*3 - 1) \\
/2*d
перенос внутри
скобок разрешён
a = (c + b*5*3
- 1) / 2 * d
42
Деление
Классическое деление:
a = 9; b = 6
x = 3 / 4 # = 0.75
x = a / b # = 1.5
x = -3 / 4 # = -0.75
x = -a / b # = -1.5
Целочисленное деление (округление «вниз»!):
a = 9; b = 6
x = 3 // 4 # = 0
x = a // b # = 1
x = -3 // 4 # = -1
x = -a // b # = -2
43
Остаток от деления
% – остаток от деления
d = 85
b = d // 10 # 8
a = d % 10 # 5
d = a % b # 5
d = b % a # 3
Для отрицательных чисел:
a = -7 ! Как в математике!

b = a // 2 # -4 остаток  0
d = a % 2 # 1
-7 = (-4)*2 + 1
44
Сокращенная запись операций

a += b # a = a + b a += 1
a -= b # a = a - b
a *= b # a = a * b увеличение на 1
a /= b # a = a / b
a //= b # a = a // b
a %= b # a = a % b

45
Вещественные числа

! Целая и дробная части числа разделяются


точкой!
Форматы вывода:
x = 123.456
print( x ) 123.456
print("{:10.2f}".format(x)) 123.46
всего знаков в дробной части

print("{:10.2g}".format(x))
1.2e+02
значащих цифр
1,2  102
46
47
int() – преобразование к целому числу.
float() – преобразование к числу с плавающей точкой
round() – округление до N знаков после запятой
abs() – возвращает абсолютную величину (модуль числа).
max(), min() – находят максимальное или минимальное значение
math.pi, math.e – числа π и e.
math.sin(), math.cos(), math.tan() – тригонометрические функции
math.exp() – экспонента.
math.sqrt() – квадратный корень.
math.ceil(), math.floor() – округление до ближайшего большего и меньшего целого
math.pow() – возведение числа в указанную степень

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


math, нужно предварительно выполнить инструкцию import:

48
Спасибо за внимание

49

Вам также может понравиться