Арифметические операции
Python поддерживает все распространенные арифметические операции:
- +
Сложение двух чисел:
print(6 + 2) # 8
- —
Вычитание двух чисел:
print(6 - 2) # 4
- *
Умножение двух чисел:
print(6 * 2) # 12
- /
Деление двух чисел:
print(6 / 2) # 3.0
- //
Целочисленное деление двух чисел:
print(7 / 2) # 3.5 print(7 // 2) # 3
Данная операция возвращает целочисленный результат деления, отбрасывая дробную часть
- **
Возведение в степень:
print(6 ** 2) # Возводим число 6 в степень 2. Результат - 36
- %
Получение остатка от деления:
print(7 % 2) # Получение остатка от деления числа 7 на 2. Результат - 1
В данном случае ближайшее число к 7, которое делится на 2 без остатка, это 6. Поэтому остаток от деления равен 7 — 6 = 1
При последовательном использовании нескольких арифметических операций их выполнение производится в соответствии с их приоритетом. В начале выполняются операции с большим приоритетом. Приоритеты операций в порядке убывания приведены в следующей таблице.
Операции | Направление |
** | Справо налево |
* / // % | Слева направо |
+ — | Слева направо |
Пусть у нас выполняется следующее выражение:
number = 3 + 4 * 5 ** 2 + 7 print(number) # 110
Здесь начале выполняется возведение в степень (5 ** 2) как операция с большим приоритетом, далее результат умножается на 4 (25 * 4), затем происходит сложение (3 + 100) и далее опять идет сложение (103 + 7).
Чтобы переопределить порядок операций, можно использовать скобки:
number = (3 + 4) * (5 ** 2 + 7) print(number) # 224
Следует отметить, что в арифметических операциях могут принимать участие как целые, так и дробные числа. Если в одной операции участвует целое число (int) и число с плавающей точкой (float), то целое число приводится к типу float.
Арифметические операции с присвоением
Ряд специальных операций позволяют использовать присвоить результат операции первому операнду:
- +=
Присвоение результата сложения
- -=
Присвоение результата вычитания
- *=
Присвоение результата умножения
- /=
Присвоение результата от деления
- //=
Присвоение результата целочисленного деления
- **=
Присвоение степени числа
- %=
Присвоение остатка от деления
Примеры операций:
number = 10 number += 5 print(number) # 15 number -= 3 print(number) # 12 number *= 4 print(number) # 48
Функции преобразования чисел
Ряд встроенных функций в Python позволяют работать с числами. В частности, функции int() и float() позволяют привести значение к типу int и float соответственно.
Например, пусть у нас будет следующий код:
first_number = "2" second_number = 3 third_number = first_number + second_number
Мы ожидаем, что «2» + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И чтобы все заработало как надо, необходимо привести строку к числу с помощью функции int():
first_number = "2" second_number = 3 third_number = int(first_number) + second_number print(third_number) # 5
Аналогичным образом действует функция float(), которая преобразует в число с плавающей точкой. Но вообще с дробными числами надо учитывать, что результат операций с ними может быть не совсем точным. Например:
first_number = 2.0001 second_number = 5 third_number = first_number / second_number print(third_number) # 0.40002000000000004
В данном случае мы ожидаем получить число 0.40002, однако в конце через ряд нулей появляется еще какая-то четверка. Или еще одно выражение:
print(2.0001 + 0.1) # 2.1001000000000003
В этот случае для округления результата мы можем использовать функцию round():
first_number = 2.0001 second_number = 0.1 third_number = first_number + second_number print(round(third_number, 4)) # 2.1001
Первый параметр функции — округляемое число, а второй — сколько знаков после запятой должно содержать получаемое число.
Представление числа
При обычном определении числовой переменной она получает значение в десятичной системе. Но кроме десятичной в Python мы можем использовать двоичную, восьмеричную и шестнадцатеричную системы.
Для определения числа в двоичной системе перед его значением ставится 0 и префикс b:
x = 0b101 # 101 в двоичной системе равно 5
Для определения числа в восьмеричной системе перед его значением ставится 0 и префикс o:
a = 0o11 # 11 в восьмеричной системе равно 9
Для определения числа в шестнадцатеричной системе перед его значением ставится 0 и префикс x:
y = 0x0a # a в шестнадцатеричной системе равно 10
И с числами в других системах измерения также можно проводить арифметические операции:
x = 0b101 # 5 y = 0x0a # 10 z = x + y # 15 print("{0} in binary {0:08b} in hex {0:02x} in octal {0:02o}".format(z))
Для вывода числа в различных системах исчисления используются функция format, которая вызывается у строки. В эту строку передаются различные форматы. Для двоичной системы «{0:08b}», где число 8 указывает, сколько знаков должно быть в записи числа. Если знаков указано больше, чем требуется для числа, то ненужные позиции заполняются нулями. Для шестнадцатеричной системы применяется формат «{0:02x}». И здесь все аналогично — запись числа состоит из двух знаков, если один знак не нужен, то вместо него вставляется ноль. А для записи в восьмеричной системе испольуется формат «{0:02o}».
Результат работы скрипта:
15 in binary 00001111 in hex 0f in octal 17