Python в качестве калькулятора#

Взаимодействовать с python можно несколькими разными способами, в том числе и в интерактивном режиме с помощью так называемой интерактивной оболочки. Запустить её можно набрав команду python в Anaconda prompt или командной строке.

python

Note

В разных комбинациях команда запуска интерактивной оболочки может принимать вид python3, py или py3.

Note

Если во время установки вы не добавили python в переменную среды PATH, то, чтобы вызвать интерактивную оболочку из командной строки, придется сначала перейти в папку с установленным python.

Набирая команду python, вы запускаете сессию интерактивной оболочки python. Сразу вы должны увидеть приветственное сообщение интерактивной оболочки, в котором должны быть перечислены версия python, время сборки, задействованный компилятор и другое. На последней строке отображается приглашение >>>, которое сигнализирует, что интерпретатор ждет команды от пользователя. Набор допустимых команд почти не зависит от режима взаимодействия и ряд из них будет рассмотрен ниже. Прямо сейчас рассмотрим одну из немногих доступных только в интерактивном режиме команд quit(), которая завершает сеанс интерактивной оболочки.

../_images/session.gif

Арифметические операторы#

Интерактивную подсказку можно использовать в качестве калькулятора. Ознакомимся с доступными арифметическими операторами на её основе.

Арифметическая операция

Оператора

Сложение

+

Вычитание

-

Умножение

*

Деление

/

Целая часть от деления

//

Остаток от деления

%

Возведение в степень

**

Сложение, вычитание и умножение работают в точности как в С/C++.

../_images/arithmetics_1.gif

С операторами деления ситуация немного отличается. В C/C++ результат вычисления выражения a / b зависит от типов переменных a и b:

  • если обе переменные целочисленного типа, то выполняется целочисленное деление (целая часть при делении a на b),

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

В python оператор “/всегда выполняет обычное деление вне зависимости от типа операндов. Оператор “//” всегда вычисляет целую часть от деления вне зависимости от типа операндов.

Warning

Данный курс посвящен третей версии языка python. В предыдущей второй версии оператор “/” работал так же, как в C/C++. В этом курсе упор сделан именно на третьей версии python и такие отличия в будущем могут быть пропущены. Будьте внимательны, если вам по какой-то причине пришлось работать с второй версией языка python!

../_images/arithmetics_2.gif

Оператор “**” возводит число слева от него в степень числа справа от него.

../_images/arithmetics_3.gif

Note

Как и в C/C++ в python определены битовые операторы для целых чисел: “|”, “&”, “^”, “<<” и “>>”.

Переменные и оператор присваивания#

Оператор присваивания “=” позволяет объявлять переменные и менять значения уже существующих. Чтобы объявить переменную, необходимо просто оператором присвоения связать её с каким-то значением.

имя_переменной = значение

При этом нет необходимости указывать тип переменной: python — язык с динамической типизацией и пока можете считать, что тип переменной определяется автоматически по типу значения (более подробно особенности типизации в python будут обсуждаться на следующей лекции).

Note

Если справа от оператора “=” стоит не просто значение, а сразу выражение, то сначала это выражение вычисляется и только потом в переменную слева от оператора “=” записывается результат вычисления выражения.

Note

Нельзя объявить переменную и не проинициализировать её.

Так, например, выражение a = 14 объявляет целочисленную переменную a со значением 14.

../_images/variables_1.gif

Переменная a теперь может фигурировать в последующих командах, при этом на её место автоматически будет подставляться значение 14.

../_images/variables_2.gif

Логические операторы#

Числа в python можно сравнивать теми же операторами ==, !=, <, >, <=, >=, что и в C/C++. Результатом сравнения чисел является значение True или False типа bool. Это значение затем может быть использовано для условного ветвления (if).

../_images/logic.gif

Встроенные функции для работы с числами#

В любой момент в программе доступны следующие функции для работы с числовыми значениями. Как и в большинстве других языков программирования, чтобы вызвать функцию, необходимо после её имени указать пару круглых скобок “()”, внутри которых необходимо перечислить аргументы, разделяя их запятой, т.е. для вызова функции без аргументов используется синтаксис

имя_функции()

А для вызова функции с \(n\) аргументами:

имя_функции(аргумент_1, ..., аргумент_n)

Note

В большинстве случаев функции возвращают какое-то полезное значение, которое может быть непосредственно задействовано в дальнейших вычислениях или связано с переменной оператором присваивания “=”.

Функция

Описание

Тип аргумента

Пример

abs

абсолютное значение

number

abs(-1)

bin, oct, hex

возвращает строку, соответствующую двоичному/восьмеричному/шестнадцатеричному представлению числа

int

bin(2 ** 8 - 1)

bool

приведение к True или False

любой

bool(0), bool(1)

char

символ, код которого в таблице юникод совпадает с аргументом

int

char(169)

divmod

возвращает целую часть и остаток от деления

int, float

divmod(42, 13)

float

конструктор числа с плавающей точкой

int, float, string

float("69.420"), float("Nan"), float("-inf")

int

Конструктор целого числа. В качестве первого аргумента принимает число, строку и ряд других. Если это float, то число округляется в сторону нуля. Если строка, то в качестве второго аргумента принимает основание системы счисления.

int, float, str, …

int(-3), int("010", 8)

pow

возведение в степень

int, float

pow(2, 100)

round

округляет число (первый аргумент) до заданного количества цифр после запятой (второй аргумент)

round(1/3, 4)

../_images/functions.gif

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

Математические функции и константы в python#

Более широкий набор математических функций доступен в модуле стандартной библиотеки math. Чтобы получить доступ к его функциям, необходимо его импортировать следующей командой.

import math

После импорта math доступ к его функциям осуществляется следующим синтаксисом.

math.имя_функции

Т.е. имя функции указывается после имени модуля math с разделителем точкой. Например, выражение math.sqrt(2) вычисляет \(\sqrt{2}\).

../_images/math.gif

Кроме sqrt в math доступны почти все основные математические функции, такие как sin, cos, tan, log, exp и т.п. С полным списком можно ознакомиться в документации по модулю math.

Области применения интерактивной оболочки#

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

Тем не менее набранные в течение сессии инструкции никуда не сохраняются по завершении сессии и требуется в ручную подтверждать ввод каждой команды нажатием клавиши Enter, что довольно сильно ограничивает область применения интерактивной оболочки. Далее будет рассмотрено ещё 2 способа взаимодействия с python, один из которых (скрипты) полностью лишен только что озвученных недостатков ценой интерактивности, а второй (блокноты jupyter) представляет собой некоторый компромисс: интерактивность, возможность сохранять и переиспользовать набор инструкций между сессиями (исходный код) и частичная автоматизация запуска исходного кода.