ГЛАВА 2. ЗНАКОМСТВО С ЯЗЫКОМ ПРОГРАММИРОВАНИЯ PYTHON

Чтобы читатель не подумал, что Python – игрушечный язык программирования, на котором можно только обучать основам программирования и дальше о нем благополучно забыть, кратко перечислю области, где он активно применяется:

  1. Системное программирование.
  2. Разработка программ с графическим интерфейсом.
  3. Разработка динамических веб-сайтов.
  4. Интеграция компонентов.
  5. Разработка программ для работы с базами данных.
  6. Быстрое создание прототипов.
  7. Разработка программ для научных вычислений.
  8. Разработка игр.

Что нам потребуется для выполнения программ на языке Python? Прежде, чем ответить на этот вопрос, рассмотрим, как запускаются программы на компьютере. Выполнение программ осуществляется операционной системой (Windows, Linux и пр.). В задачи операционной системы входит распределение ресурсов (оперативной памяти и пр.) для программы, запрет или разрешение на доступ к устройствам ввода/вывода и. т.д.

Для запуска программ на языке Python необходима программа интерпретатор (виртуальная машина) Python. Данная программа скрывает от Python-программиста все особенности операционной системы, поэтому, написав программу на Python в системе Windows, ее можно запустить, например, в GNU/Linux и получить такой же результат.

Скачать и установить интерпретатор Python можно совершенно бесплатно с официального сайта: http://l91085tc.beget.tech.org. Для работы нам понадобится интерпретатор Python версии 3 или выше.

рсии 3 или выше3
.
После установки программы запустите интерактивную графическую среду IDLE и
дождитесь появления приглашения для ввода команд:

Type «copyright», «credits» or «license()» for more information.

В самом начале обучения Python можно представить как обычный интерактивный калькулятор. В интерактивном режиме IDLE найдем значения следующих математических выражений. После завершения набора выражения нажмите клавишу Enter для завершения ввода и вывода результата на экран.

3.0 + 6
9.0
4 + 9
13
1 — 5
-4
_ + 6
2>>>

Нижним подчеркиванием в предыдущем примере обозначается последний полученный результат. Если по какой-либо причине совершить ошибку при вводе команды, то Python сообщит об этом:

>>> a Traceback (most recent call last): File «», line 1, in a NameError: name ‘a’ is not defined >>>

Не бойтесь совершать ошибки! Python поправит и подскажет, на что следует обратить внимание.

В математических выражениях в качестве операндов можно использовать целые числа (1, 4, -5) или вещественные (в программировании их еще называют числами с плавающей точкой ): 4.111, -9.3. Математические операторы, доступные над числами в Python:

5 / 3
1.6666666666666667
5 // 3
1
5 % 3
2
5 ** 67
67762635780344027125465800054371356964111328125

Если один из операндов является вещественным числом, то в результате получится вещественное число.
В качестве упражнения найдите значение выражения 2 + 56 * 5.0 — 45.5 + 55. При вычислении математических выражений Python придерживается приоритета операций:

-24 -16 -(24)
-16
(-2)**4
16

В случае сомнений в порядке вычислений будет не лишним обозначить приоритет в виде круглых скобок.

Выражаясь в терминах программирования, только что мы познакомились с числовым типом данных8 (целым типом int и вещественным типом float), т.е. множеством числовых значений и множеством математических операций, которые можно выполнять над данными значениям. Язык Python предоставляет большой выбор встроенных типов данных.

Рассмотрим выражение y=x+3*6, где y и x являются переменными которые могут содержать значения числового типа. На языке Python вычислить значение y при x равном 1 можно следующим образом:

x = 1
y = x + 3*6
y
19

В выражении нельзя использовать переменную, если ранее ей не было присвоено значение — для Python такие переменные не определены. Содержимое переменной y можно увидеть, если в интерактивном режиме набрать ее имя.

Имена переменным придумывает программист, но есть несколько ограничений, связанных с наименованием. В качестве имен переменных нельзя использовать ключевые слова, которые для Python имеют определенный смысл (эти слова подсвечиваются в IDLE оранжевым цветом):

Далее мы часто будем обращаться к формуле перевода из шкалы в градусах по Цельсию в шкалу градусов по Фаренгейту и обратно. Формула перевода из градусов по Цельсию (TC) в градусы по Фаренгейту (TF) имеет вид:

TF = 9/5 * TC + 32

Найдем значение TF при TC равном 26. Создадим переменную с именем cel, содержащую значение целочисленного типа 26.

cel = 26
cel
26
9/5 * cel + 32
78.80000000000001

Остановимся подробно на том, как Python работает с переменными. Здесь есть существенная особенность, которая отличает его от других языков программирования.

Ранее мы сказали, что Python – объектно-ориентированный язык программирования. В чем это выражается?

В момент выполнения присваивания cel = 26 в памяти компьютера создается объект, расположенный по некоторому адресу (условно обозначим его как id1), имеющий значение 26 целочисленного типа int. Затем создается переменная с именем cel, которой присваивается адрес объекта id1. Переменные в Python содержат адреса объектов или можно сказать, что переменные ссылаются на объекты. Постоянно сохраняя в голове эту модель, для упрощения будем говорить, что переменная содержит значение.

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

cel = 26 + 46
cel
72

Рассмотрим чуть более сложный пример. Вместо переменной diff подставится целочисленное значение 20:

diff = 20
double = 2 * diff
double
40

По окончании вычислений память для Python будет иметь следующий вид:

Продолжим вычисления. Присвоим переменной diff значение 5 и посмотрим содержимое переменных double и diff.

diff = 5
double
40
diff
5

В момент присваивания переменной diff значения 5 в памяти создастся объект по адресу id3, содержащий целочисленное значение 5. После этого изменится содержимое переменной diff, вместо адреса id1 туда запишется адрес id3. Также Python увидит, что на объект по адресу id1 больше никто не ссылается и поэтому удалит его из памяти (произведет автоматическую сборку мусора).

Внимательный читатель заметил, что Python не изменяет существующие числовые объекты, а создает новые. Это особенность числового типа данных – объекты этого типа являются неизменяемыми.

У начинающих программистов часто возникает недоумение при виде следующих вычислений:

num = 20
num = num * 3 # сокращенно: num *= 3
num
60

Если вспомнить, что сначала вычисляется правая часть, то все легко объясняется

Функция в Python является основой при написании программ. С чем можно сравнить функцию? Напрашивается аналогия с «черным ящиком», когда мы знаем, что поступает на вход и что при этом получается на выходе, а внутренности «черного ящика» часто бывают от нас скрыты. Примером является банкомат.

На вход банкомата поступает пластиковая карточка (пин-код, денежная сумма), на выходе мы ожидаем получить запрашиваемую сумму. Нас не очень сильно интересует принцип работы банкомата до тех пор, пока он работает без сбоев.

Рассмотрим функцию с именем abs, принимающую на вход один аргумент – объект числового типа и возвращающую абсолютное значение для этого объекта.

Пример вызова функции abs с аргументом -9 имеет вид:

abs(-9)
9
d = 1
n = 3
abs(d — n)
2
abs(-9) + abs(5.6)
14.6

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

Рассмотрим несколько популярных математических функций языка Python. pow(x, y) возвращает значение x в степени y. Эквивалентно записи x**y.

pow(4, 5)
1024

round(number) возвращает число с плавающей точкой, округленное до 0 цифр после запятой (по умолчанию). Может быть вызвана с двумя аргументами: round(number[, ndigits]), где ndigits – число знаков после запятой.

round(4.56666)
5
round(4.56666, 3)
4.567

Помимо составления сложных математических выражений Python позволяет передавать результаты вызова функций в качестве аргументов других функций без использования дополнительных переменных:

На рисунке представлен пример вызова и порядок вычисления выражений. В этом примере на месте числовых объектов (-2, 4.3) могут находиться вызовы функций или их комбинации, поэтому они тоже вычисляются.

Очень часто при написании программ требуется преобразовать объекты разных типов. Т.к. пока мы познакомились только с числовыми объектами, поэтому рассмотрим функции для их преобразования.

int возвращает целочисленный объект, построенный из числа или строки11, или 0, если аргументы не переданы.

float возвращает число с плавающей точкой, построенное из числа или строки.


Что делает float?

Перечислите области, где применяется Python.