Операции с числами

Поділитись

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

Python поддерживает все распространенные арифметические операции:

  • +Сложение двух чисел:1print(6 + 2# 8
  • Вычитание двух чисел:1print(6 - 2# 4
  • *Умножение двух чисел:1print(6 * 2# 12
  • /Деление двух чисел:1print(6 / 2# 3.0
  • //Целочисленное деление двух чисел:12print(7 / 2# 3.5print(7 // 2# 3Данная операция возвращает целочисленный результат деления, отбрасывая дробную часть
  • **Возведение в степень:1print(6 ** 2# Возводим число 6 в степень 2. Результат - 36
  • %Получение остатка от деления:1print(7 % 2# Получение остатка от деления числа 7 на 2. Результат - 1В данном случае ближайшее число к 7, которое делится на 2 без остатка, это 6. Поэтому остаток от деления равен 7 – 6 = 1

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

ОперацииНаправление
**Справо налево
* / // %Слева направо
+ –Слева направо

Пусть у нас выполняется следующее выражение:

1
2
number = 3 + 4 * 5 ** 2 + 7
print(number)  # 110

Здесь начале выполняется возведение в степень (5 ** 2) как операция с большим приоритетом, далее результат умножается на 4 (25 * 4), затем происходит сложение (3 + 100) и далее опять идет сложение (103 + 7).

Чтобы переопределить порядок операций, можно использовать скобки:

1
2
number = (3 + 4) * (5 ** 2 + 7)
print(number)  # 224

Следует отметить, что в арифметических операциях могут принимать участие как целые, так и дробные числа. Если в одной операции участвует целое число (int) и число с плавающей точкой (float), то целое число приводится к типу float.

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

Ряд специальных операций позволяют использовать присвоить результат операции первому операнду:

  • +=Присвоение результата сложения
  • -=Присвоение результата вычитания
  • *=Присвоение результата умножения
  • /=Присвоение результата от деления
  • //=Присвоение результата целочисленного деления
  • **=Присвоение степени числа
  • %=Присвоение остатка от деления

Примеры операций:

1
2
3
4
5
6
7
8
9
number = 10
number += 5
print(number)  # 15 

number -= 3
print(number) # 12

 number *= 4
print(number) # 48

Функции преобразования чисел

Ряд встроенных функций в Python позволяют работать с числами. В частности, функции int() и float() позволяют привести значение к типу int и float соответственно.

Например, пусть у нас будет следующий код:

1
2
3
first_number = "2"
second_number = 3
third_number = first_number + second_number

Мы ожидаем, что “2” + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И чтобы все заработало как надо, необходимо привести строку к числу с помощью функции int():

1
2
3
4
first_number = "2"
second_number = 3
third_number = int(first_number) + second_number
print(third_number) # 5

Аналогичным образом действует функция float(), которая преобразует в число с плавающей точкой. Но вообще с дробными числами надо учитывать, что результат операций с ними может быть не совсем точным. Например:

1
2
3
4
first_number = 2.0001
second_number = 5
third_number = first_number / second_number
print(third_number) # 0.40002000000000004

В данном случае мы ожидаем получить число 0.40002, однако в конце через ряд нулей появляется еще какая-то четверка. Или еще одно выражение:

1print(2.0001 + 0.1# 2.1001000000000003

В этот случае для округления результата мы можем использовать функцию round():

1
2
3
4
first_number = 2.0001
second_number = 0.1
third_number = first_number + second_number
print(round(third_number, 4))  # 2.1001

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

Представление числа

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

Для определения числа в двоичной системе перед его значением ставится 0 и префикс b:

1x = 0b101   # 101 в двоичной системе равно 5

Для определения числа в восьмеричной системе перед его значением ставится 0 и префикс o:

1a = 0o11    # 11 в восьмеричной системе равно 9

Для определения числа в шестнадцатеричной системе перед его значением ставится 0 и префикс x:

1y = 0x0a        # a в шестнадцатеричной системе равно 10

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

1
2
3
4
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

Поділитись