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

Алгоритмизация и программирование. Язык Python. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
2. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА PYTHON
Блок
Описание
Последовательность
(инструкция)
Любое атомарное действие, например, присваивание
Ветвление (условие)
Выполнение инструкций в зависимости от определенного усло-
вия
Цикл
Многократное исполнение набора инструкций
Подпрограмма (про-
цедура/функция)
Часть компьютерной программы, содержащая описание опреде­ленного набора инструкций, которая может быть многократно
вызвана из разных частей программы. Может содержать (1)–(3)
Класс
Абстрактный тип данных в объектно-ориентированном про-
граммировании, задающий общее поведение для группы объек-
тов; модель объекта. Может содержать (1)–(4)
Модуль
Функционально законченный фрагмент программы, оформлен­ный в виде отдельного файла с исходным кодом или поимено-
ванной непрерывной ее части. Может содержать (1)–(5)
Пакет
Логически законченная совокупность модулей как единое целое
Python – высокоуровневый язык программирования, идеально подходя­щий для разработки самостоятельных программ и сценариев.
Python поддерживает структурное, объектно-ориентированное, функцио- нальное, императивное и аспектно-ориентированное программирование. Основ­ные архитектурные черты – динамическая типизация, автоматическое управ­ление памятью, полная интроспекция (способность программы исследовать тип или свойства объекта во время работы программы), механизм обработки ис-
ключений, поддержка многопоточных вычислений, высокоуровневые структу-
ры данных.
2.1. Структура программы в Python
Python относится к языкам, разделяющим идею методологии структурно-
го программирования, в основе которой лежит представление программы в ви-
де иерархической структуры блоков. Синтаксические конструкции могут вкла-
дываться друг в друга (выполняться внутри других конструкций, принадлежать
им), образуя блочную структуру. Блок кода начинается двоеточием :, а тело
блока выделяется обязательным отступом в виде пробелов, количество которых
кратно четырем – 4, 8, 12, и т. д.
Блоки в свою очередь могут состоять из элементов или из таких же бло-
ков. В табл. 1 представлены элементы и блоки языка Python. Т а б л и ц а 1. Элементы и блоки в Python
На рис. 7 приведено визуальное обозначение блоков.
11
Рис. 7. Блоки кода в Python
Комментарии в исходном коде программы начинаются со знака решётка #.
2.2. Понятие данных
Исходный код программы реализует алгоритм решения задачи, в котором
записывается последовательность действий, выполняемых над данными с помощью определенных операций. Для хранения данных, определенных в программе, транслятором языка программирования резервируется определенный участок оперативной памяти. Поскольку данные могут храниться только в двоичной (иначе машинной) форме, то в зависимости от типа данных, может резервироваться либо 1 байт памяти, слово (2 байта),
двойное слово (4 байта) памяти.
Все формы представления данных, заложенные в язык, называются
базовыми типами данных: целые, вещественные, символьные, строковые.
Помимо базовых типов данных в процессе написания кода программы могут
конструироваться производные типы данных.
2.3. Переменные
Переменная предназначена для хранения данных. Идентификатор переменной в Python должно начинаться с алфавитного символа или со знака подчеркивания и может содержать алфавитно-цифровые символы и знак подчеркивания. Идентификатор переменной не должен совпадать с названием ключевых слов языка Python: and, as, assert, break, class, continue, def, del, elif,
else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield. Индентификаторы
12
переменных в Python являются регистрозависимыми, поэтому идентификаторы name и Name будут представлять две переменные.
В Python применяется два типа идентификаторов переменных: Camel case (регистр) и Underscore notation (подчеркивание нотации). Camel case подра­зумевает, что каждое новое подслово в идентификаторе переменной начинается с большой буквы. Underscore notation подразумевает, что подслова в идентифи­каторе переменной разделяются знаком подчеркивания.
Примеры
name = 'Tom' # переменная name хранит строковое значение Tom userName = 'Tom' # идентификатор переменной относится к типу Camel case user_name = 'Tom' # идентификатор переменной относится к типу Underscore
notation
2.4. Типы данных
Тип данного определяет множество значений, которые может принимать
переменная. Переменная хранит данные одного из типов данных. В Python раз­личают типы данных, которые подразделяются на категории: числа, последовательности, словари, наборы:
boolean – логическое значение True или False;
int – представляет целое число, для хранения которого использует 4
байта в памяти компьютера;
float – представляет число с плавающей точкой, для хранения которо- го используется 8 байт;
complex – комплексные числа;
str – строка, представляющая набор символов в кодировке Unicode;
bytes – последовательность чисел в диапазоне 0–255;
byte array – массив байтов, аналогичен bytes с тем отличием, что мо-
жет изменяться;
list – список;
tuple – кортеж;
set – неупорядоченная коллекция уникальных объектов;
frozen set – то же самое, что и set, только не может изменяться
(immutable);
dict – словарь, где каждый элемент имеет ключ и значение.
Python является языком с динамической типизацией. Он определяет тип
данных переменной исходя из значения, которое ей присвоено. Так, при при-
своении строки в двойных или одинарных кавычках переменная имеет тип str. При присвоении целого числа Python автоматически определяет тип перемен­ной как int. Чтобы определить переменную как объект float, ей присваивается дробное число, в котором разделителем целой и дробной части является точка.
13
Примеры x = 3.9e3 #3.9*103
print(x) Результат: 3900
x = 3.9 print(x) Результат: 3.9
x = 3.9e-3 #3.9*10-3 print(x)
Результат: 0.0039
Данные типа float могут иметь только 18 значимых символов. В примере используются два символа – 3.9. В случаях, когда значение слишком велико
или слишком мало, то есть возможность записывать число в нотации, исполь­зуя экспоненту. Число после экспоненты указывает степень числа 10, на кото-
рое надо умножить основное число – 3.9.
Динамическая типизация также позволяет в процессе выполнения про­граммы изменять тип переменной, присвоив ей значение другого типа.
Примеры
user_id = "12tomsmith438" # тип str print(user_id) Результат: 12tomsmith438
user_id = 234 # тип int print(user_id)
Результат: 234
В процессе выполнения программы с помощью функции type() можно узнать текущий тип переменной.
Примеры
user_id = "12tomsmith438" print(type(user_id)) # <class 'str'> Результат: str
user_id = 234 print(type(user_id)) # <class 'int'> Результат: int
14
2.5. Операторы
Обозначение
Оператор
Примечание
+
Сложение
Суммирует два объекта. Например, 3 + 5 дает 8, а
'a' + 'b' дает 'ab'
-
Вычитание
Разность двух чисел, причем если первый число
отсутствует, он считается равным нулю. Напри-
мер, - 5.2 дает -5.2, а 50 - 24 дает 26
*
Умножение
Произведение двух объектов. Например, 2 * 3 да­ет 6, а 'la' * 3 дает 'lalala'
**
Возведение в
степень
Возвращает число х, возведённое в степень y. Например, 3 ** 4 дает 81 (т. е. 3 * 3 * 3 * 3).
/
Деление
Возвращает частное от деления x на y. Например, 4 / 3 дает 1.333 333 333 333 333 3
//
Целочисленное
деление
Возвращает неполное частное от деления (в сто­рону уменьшения). Например, 4 // 3 дает 1, а -4 // 3 дает -2
%
Деление по мо-
дулю
Возвращает остаток от деления. Например, 8 % 3 дает 2, а -25.5 % 2.25 дает 1.5
<
Меньше
Сравнение значений: x < y. Если условие выпол­няется, то возвращается значение True, в против­ном случае False
>
Больше
Сравнение значений: x > y. Если условие выпол­няется, то возвращается значение True, в против­ном случае False
<=
Меньше или
равно
Сравнение значений: x <= y. Если условие вы­полняется, то возвращается значение True, в про­тивном случае False
>=
Больше или рав-
но
Сравнение значений: x >= y. Если условие вы­полняется, то возвращается значение True, в про­тивном случае False
==
Равно
Сравнение значений: x == y. Например,
x = 2; y = 2; x == y дает True; x = 'str'; y = 'stR'; x == y дает False; x = 'str'; y = 'str'; x == y даёт True
!=
Не равно
Сравнение значений на неравенство. Например,
x = 2; y = 3; x != y даёт True
not
Логическое НЕ
Возврат обратного значения. Например, x = True; not x даёт False
Выражения в языках программирования можно разделить на операторы и операнды.
Операторы – это функционал, направленный на организацию выполнения какого-либо действия над данными или переменными. В табл. 2 представлен перечень операторов.
Т а б л и ц а 2. Операторы
15
Обозначение
Оператор
Примечание
and
Логическое И
Сравнение логических значений. Если одна из переменных хранит значение False, то результи-
рующим значением всегда будет False
or
Логическое ИЛИ
Сравнение логических значений. Если одна из переменных хранит значение True, то результи-
рующим значением всегда будет True. Если x равно True, в результате получим True, в против­ном случае получим значение y
Оператор
Описание
or
Логическое “ИЛИ”
and
Логическое “И”
not x
Логическое “НЕ”
in, not in
Проверка принадлежности
is, is not
Проверка тождественности
<, <=, >, >=, !=, ==
Сравнения
+, -
Сложение и вычитание
*, /, //, %
Умножение, деление, целочисленное деление и остаток от
деления
+x, -x
Положительное, отрицательное
**
Возведение в степень
Окончание табл. 2
2.6. Выражения
Выражение является полноправным элементом в исходных кодах про-
грамм. Если выражение содержит несколько операторов, то значения компо-
нентов выражения рассчитываются в определенном порядке. Такой порядок
называют порядком старшинства или приоритетом операторов. В табл. 3 пред­ставлены операторы в порядки возрастания приоритетов.
Т а б л и ц а 3. Приоритеты операторов
Результат проведения некой математической операции присваивается пе-
ременной, над которой эта операция производилась. Для этого существуют
краткие формы записи выражений: Примеры
обычный формат a = 2 a = a * 3 краткий формат a = 2 a *= 3
16
Для выполнения вычислений с использованием математических функций
Синтаксис функции
Назначение
math.ceil(X)
Округление до ближайшего большего числа
math.copysign(X, Y)
Возвращает число, имеющее модуль такой же, как
и у числа X, а знак – как у числа Y
math.fabs(X)
Модуль X
math.factorial(X)
Факториал числа X
math.floor(X)
Округление вниз
math.fmod(X, Y)
Остаток от деления X на Y
math.frexp(X)
Возвращает мантиссу и экспоненту числа
math.ldexp(X, I)
X * 2i. Функция, обратная функции math.frexp()
math.fsum(последовательность )
Сумма всех членов последовательности. Эквива-
лент встроенной функции sum(), но math.fsum() бо­лее точна для чисел с плавающей точкой
math.isfinite(X)
Является ли X числом
math.isinf(X)
Является ли X бесконечностью
math.modf(X)
Возвращает дробную и целую часть числа X. Оба числа имеют тот же знак, что и X
math.trunc(X)
Усекает значение X до целого
math.exp(X)
eX
math.expm1(X)
eX - 1. При X → 0 точнее, чем math.exp(X)-1
math.log(X, [base])
Логарифм X по основанию base: если base не ука­зан, вычисляется натуральный логарифм
math.log1p(X)
Натуральный логарифм (1 + X). При X → 0 точнее, чем math.log(1+X)
math.log10(X)
Логарифм X по основанию 10
math.log2(X)
Логарифм X по основанию 2
math.pow(X, Y)
XY
math.sqrt(X)
Квадратный корень из X
math.acos(X)
Арккосинус X (в радианах)
math.asin(X)
Арксинус X (в радианах)
math.atan(X)
Арктангенс X (в радианах)
math.cos(X)
Косинус X (Х в радианах)
необходимо подключить модуль библиотеки math. Для подключения модуля используется инструкция import в соответствии с синтаксисом:
import модуль, где модуль – название модуля из библиотеки языка. Пример
import math
В табл. 4 представлены математические функции модуля math.
Т а б л и ц а 4. Математические функции модуля math библиотеки языка
Python
17
Синтаксис функции
Назначение
math.sin(X)
Синус X (Х в радианах)
math.tan(X)
Тангенс X (Х в радианах)
math.hypot(X, Y)
Вычисляет гипотенузу треугольника с катетами X и Y (math.sqrt(x * x + y * y))
math.degrees(X)
Конвертирует радианы в градусы
math.radians(X)
Конвертирует градусы в радианы
math.pi
pi = 3,1415926...
math.e
e = 2,718281...
Окончание табл. 4
2.7. Строки
Кроме чисел Python также может манипулировать строками, которые могут быть описаны несколькими способами, путем заключения в одинарные кавычки ('...') или двойные кавычки ("...").
Пример
'spam eggs' # одинарные кавычки Результат: 'spam eggs'
'doesn\'t' # для экранирования одиночной кавычки используется \' Результат: "doesn't"
"doesn't" # ...или вместо этого используйте двойные кавычки Результат: "doesn't"
'"Yes," he said.' Результат: '"Yes," he said.'
"\"Yes,\" he said." Результат: '"Yes," he said.'
'"Isn\'t," she said.'
Результат: '"Isn\'t," she said.'
В интерактивном интерпретаторе выводящаяся строка заключается в кавычки и специальные символы экранирующиеся бэкслешами. В то же время
это может иногда отличаться от ввода (заключающие кавычки могли измениться), две строки эквивалентны. Строка заключена в двойные кавычки, если она включает одинарные, при этом двойные кавычки отсутствуют, иначе
она заключена в одинарные кавычки. Функция print() создает более
читабельный вывод, опуская ограждающие кавычки и интерпретируя
экранируемые и специальные символы.
18
Примеры >>> '"Isn\'t," she said.'
Результат: '"Isn\'t," she said.' >>> print('"Isn\'t," she said.')
Результат: "Isn't," she said. >>> s = 'First line.\nSecond line.' # \n означает новую строку
>>> s # без print(), \n содержится в выводе Результат: 'First line.\nSecond line.'
>>> print(s) # с print(), \n создает новую строку Результат: First line. Second line.
Если не желательно, чтобы символы, которым предшествует \, интерпре­тировались как специальные, то можно использовать raw string (сырые строки – прим. перев.), добавив r перед первой кавычкой.
Примеры
>>> print('C:\some\name') # \n означает новую строку Результат: C:\some ame
>>> print(r'C:\some\name') # r перед кавычкой позволяет \ использовать в качестве специального символа
Результат: C:\some\name
Строковые литералы могут охватывать множество строк. Один способ – это использование тройных кавычек: """...""" или '''...'''. Конец строки по умолчанию обозначает переход на новую строку, но есть возможность предотвратить это, добавив \ в конец строки.
Пример
print("""\ Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to """) Результат: Usage: thingy [OPTIONS]
-h Display this usage message
-H hostname Hostname to connect to
19
Строки могут быть соединены (сцеплены вместе) оператором + и повторены с помощью *.
Пример # 3 раза 'un' с последующим 'ium'
3 * 'un' + 'ium'
Результат: 'unununium'
Две и более строки, следующих друг за другом, автоматически конкатенируются.
Пример
>>> 'Py' 'thon'
Результат: 'Python'
Для переменной, выражения и строки такое действие не выполняется. Примеры
prefix = 'Py' prefix 'thon' # не может со единить переменную и строковый литерал ... Результат: SyntaxError: invalid syntax ('un' * 3) 'ium' ...
Результат: SyntaxError: invalid syntax
Для переменной, выражения и строки конкатенирование производится с
использованием оператора +. Пример
prefix + 'thon'
Результат: 'Python'
Это свойство особенно полезно, когда вы хотите разорвать длинную
строку:
text = ('Put several strings within parentheses ' 'to have them joined together.') print(text) 'Put several strings within parentheses to have them joined together.'
Строку можно рассматривать как структурированный элемент, подле­жащих индексированию. Первый символ имеет индекс 0, а последний – количество символов минус 1.
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]