Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Язык программирования высокого уровня Python. Функции, структуры данных, дополнительные модули. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
1. Логические компоненты программ
Ф
Ф
Обозначим условно понятие «Класс»
Пример класса:
Класс Столы:
Атрибуты: Цвет (белый, черный, красный)
Форма (круглый, квадратный, прямоугольный, овальный)
Размер (журнальный, обеденный)
Методы: Посчитать стоимость стола с заданными атрибутами Изменить атрибут Цвет …
Таким образом, любой предмет живой и неживой природы можно представить в виде объекта – набора атрибутов (характеристик объекта) и методов (действий, которые можно совершать с объектом).
Модули (библиотеки)
Модулем в языке Python называется лю-
бой файл с программой. Обычно модули вклю­чают в себя функции, операторы и классы, от­носящиеся к одной тематике. Поэтому название модулям принято давать осмысленное, связан­ное с их внутренним наполнением. Например, модуль с классами «Столы», «Стулья» и «Шкафы» логично назвать «Мебель».
Модули могут включать в себя наборы операторов, отдельные функции, классы.
Операторы языка Python были подробно описаны в [1], поэтому в данном учебном пособии рассмотрены не будут. В то время как разработ­ка и использование функций, классов и модулей – основная цель этого учебного пособия.
К
О
Ф
О
Ф
К
Класс
…
…
…
Модуль
…
…
…
О
О
К
11
1. Логические компоненты программ
Современная наука о защите информации начинается с трех основ-
ных понятий.
Криптология – наука, включающая в себя криптографию и крипто-
анализ.
Криптография – область математики, изучающая способы сокрытия
сути информации с целью разработки стойких ко взлому алгоритмов.
Криптоанализ – область математики, изучающая способы вскрытия криптографических алгоритмов с целью анализа их стойкости ко взломам и дальнейшего усовершенствования.
12
2. СОЗДАНИЕ ФУНКЦИЙ В ПИТОН
2.1. Оформление функций
Функция – это фрагмент кода, оформленный по определенным в
каждом языке программирования правилам, и решающий одну задачу, который можно вызывать из любого места программы. Функции в общем виде состоят из набора операторов и позволяют уменьшить избыточность программного кода и повысить его структурированность.
В гл.1 при решении задачи были использованы встроенные функции ввода/вывода языка Питон. Однако в любом языке программирования высокого уровня существует возможность создания пользовательской функции.
Принципы написания функций во всех языках программирования высокого уровня идентичны:
1. записать ключевое слово, обозначающее начало функции;
2. придумать и записать имя функции, которое должно отражать ее
смысл;
3. задать входные значения (аргументы функции)
4. описать логику работы на языке программирования (обычно
внутри одного цикла);
5. пометить значения, которые функция должна вернуть, как резуль-
тат.
В языке Питон функция представляет собой объект в оперативной памяти, который умеет принимать аргументы и возвращать значения, по­лученные в результате работы функции, в основную программу [2, 3].
Оформление функции в Питоне
Правила оформления части кода в Питоне как функции можно опи­сать с помощью следующей схемы [23]:
def имя_функции([Аргумент1],…, [АргументN] ): Тело функции [return Значение]
Return – ключевое слово, которое одновременно выполняет две
функции:
13
2. Создание функций в Питон
- является признаком конца функции;
- после return указываются значения, которые необходимо вернуть
из функции в основную программу.
В качестве результата функция может возвращать любые объекты
(списки, кортежи, и даже функции).
Если инструкция отсутствует, то функция возвращает пустое значе-
ние (None).
Так, задача, рассмотренная в гл.1: «напишите программу, которая в последовательности, состоящей из n натуральных чисел, определяет мак­симальное число, кратное 5» может быть оформлена в виде функции на языке Питон, например, так:
n = int(input())
def my_max(n):
max = 0
for i in range(n) :
a = int(input())
if (a > max) and (a % 5 ==0) :
max = a
return max #возвращаемое значение
res = my_max(n) # вызов функции из основной про-
граммы
print(res) # вывод результата работы функции
Если тело функции должно оставаться пустым и не содержать опера­торов, то внутри необходимо разместить оператор pass (используется при создании классов):
def my_func():
pass
14
2.2. Аргументы функций
Правильно:
Неправильно:
my_max()
my_max
2.2. Аргументы функций
Аргументами функции называют все данные, которые поступают на
ее вход и являются начальными значениями для ее операторов. Аргумен­ты функции оформляются внутри круглых скобок после имени функции через запятую:
def Имя_функции([Аргумент1],…, [АргументN] ):
Количество аргументов функции может быть произвольным в ра­зумных пределах (обычно не более пяти), или аргументы могут вовсе от­сутствовать.
Если аргументы функции отсутствуют, то круглые скобки после имени функции остаются пустыми. Оставить имя функции без круглых скобок будет ошибкой:
Виды аргументов в языке Питон:
- аргументы по умолчанию;
- переменное число аргументов;
- произвольное число именованных аргументов.
Рассмотрим каждый из видов аргументов подробнее.
Аргументы функции по умолчанию
В Питон аргументы функции могут иметь значения, заданные про­граммистом по умолчанию. В этом случае при вызове функции такие па­раметры можно вообще не задавать, тогда будут использоваться аргумен­ты по умолчанию.
Для задания такого вида аргумента достаточно при создании функ­ции указать его значение по умолчанию после знака «=». Рассмотрим на примере ранее решенной задачи:
n = int(input())
def my_max(n=3): # n – аргумент по умолчанию
max = 0
15
2. Создание функций в Питон
for i in range(n) : a = int(input()) if (a > max) and (a % 5 ==0) : max = a
return max res = my_max() # используется аргумент по умолчанию n=3 print(res)
Произвольное число аргументов функции
Функция в языке Питон может принимать переменное количество параметров. Здесь возможны следующие варианта:
1. все параметры будут сохранены в кортеж (*);
2. все параметры будут сохранены в словарь (**);
3. комбинирование параметров.
Рассмотрим некоторые примеры.
Если перед параметром внутри круглых скобок поставить символ *, то в этом случае все параметры, которые функция примет на вход, будут сохранены в кортеже. Соответственно, работать с параметрами можно, как обычным кортежем.
Рассмотрим на примере задачи из гл.1. Передадим последователь­ность чисел в функцию, как переменное число аргументов:
n = int(input())
def my_max(n, *a): # n – аргумент по умолчанию
max = 0
for i in a :
if (i > max) and (i % 5 ==0) :
max = i
return max
res = my_max(3, 5, 10, 22) print(res) # Выведет 10
Если перед параметром внутри круглых скобок поставить символ **, то в этом случае все параметры, которые функция примет на вход, будут сохранены в словаре. Все функции и методы для работы со словарями будут доступны.
16
2.2. Аргументы функций
def my_func(**dic): return dic
my_func(a=1, b=2, c=3) # выведет {'a': 1, 'c': 3, 'b': 2}
my_func(a='python') {'a': 'python'}
Возможно комбинирование аргументов, то есть использование всех видов аргументов одновременно. В этом случае необходимо соблюдать приоритет задания аргументов, то есть параметр с двумя ** задается по­следним.
def my_func(*c, a, n=3, **d):
17
3. СОЗДАНИЕ СТРУКТУРЫ ДАННЫХ В ПИТОН
№
Округ
ФИО
Любимый
предмет
Баллы
1 В Иванов И.И.
Информатика
КТсо1-1
2 Ю Петров П.И.
Информатика
КТсо1-1
3 С Гущин И.А.
Физика
КТсо1-2
Структура данных (англ. data structure) составной тип данных, позволяющий хранить и обрабатывать множество логически связан­ных данных разного типа [4].
Структуры данных в программировании предназначены для про­граммирования таблиц с множеством столбов различных типов. Пример такой таблицы представлен в табл. 1.
Таблица 1
Описание структуры данных
В табл. 1 представлены сведения о студентах. Каждому студенту со­ответствует одна строка в таблице. Эта строка на языке программистов называется записью.
Запись состоит из данных разного типа, расположенных в соответ­ствующих столбцах таблицы.
Каждый столбец имеет определенное назначение и содержит единую смысловую информацию. Такие столбцы на языке программистов приня­то называть полями. Каждое поле имеет имя, которое используется для обращения к данному, и тип данного.
Заголовок таблицы представляет собой совокупность полей и являет­ся форматом структуры записи.
Каждая строка является одной записью [5].
Обычно в языках программирования высокого уровня существует отдельный составной тип данных для программирования структур. В язы­ке Питон структуры (записи) не выделены в отдельный тип данных. Од­нако существует возможность программировать структуры, как класс, содержащий характеристики (атрибуты), но не содержащий действия (ме­тоды) [6, 7].
18
3. Создание структуры данных в Питон
Таким образом, в Питон структуры задаются как пустой класс. До­стоинство такого подхода заключается в том, что подобная структура яв­ляется динамической, то есть в любой момент в любом месте программы можно добавить поле (соответствует столбцу таблицы) или удалить его. То есть структуры в питон являются масштабируемыми.
# создание нового типа данных
class TPupil:
pass
Программирование одной строки таблицы не представляет практиче­ского интереса. Поэтому на практике используют множество структур, каждая из которых соответствует одной строке таблицы. Такие наборы структур программируют с помощью массивов структур:
# объявление массива
pupils = []
n = int(input('Введите количество учеников: '))
# создание массива из n пустых структур
for i in range(n):
pupils.append(TPupil())
Заполнение массива структур данными с одновременным созданием полей:
# заполнение массива структур данными for i in range(n): print('Введите информацию о ', i+1, ' ученике: ') pupils[i].region = input('Округ: ') pupils[i].surname = input('Фамилия: ') pupils[i].subject = input('Любимый предмет: ') pupils[i].ball = int(input('Баллы: '))
После создания и заполнения массива структур становится возмож­ным обрабатывать большие таблицы данных с сотнями и тысячами запи­сей. Рассмотрим пример решения задачи для натл.1.: «Напишите про­грамму, позволяющую определить:
19
3. Создание структуры данных в Питон
1. Сколько учеников из Восточного региона выбрали Информатику?
2. Средний балл по экзамену учеников Северного региона»
# создание нового типа данных class TPupil: pass
# объявление массива pupils = []
n = int(input('Введите количество учеников: '))
# создание массива из n пустых структур
for i in range(n): pupils.append(TPupil())
# заполнение массива структур данными for i in range(n): print('Введите информацию о ', i+1, ' ученике: ') pupils[i].region = input('Округ: ') pupils[i].surname = input('Фамилия: ') pupils[i].subject = input('Любимый предмет: ') pupils[i].ball = int(input('Баллы: '))
k1 = 0 k2 = 0 s = 0 for i in range(n): if pupils[i].region == 'в' and pupils[i].subject == 'информатика': k1 +=1 if pupils[i].region == 'с': k2 +=1 s += pupils[i].ball # вывод поля "округ" на экран for i in range(n): print(pupils[i].region) print (k1, ' ', s/k2)
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]