Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Алгоритмизация и программирование. Язык Python. Учебное пособие
.pdf
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
