Арифметические операции
Python поддерживает все распространенные арифметические операции:
- +Сложение двух чисел:1
print(6+2)# 8 - –Вычитание двух чисел:1
print(6-2)# 4 - *Умножение двух чисел:1
print(6*2)# 12 - /Деление двух чисел:1
print(6/2)# 3.0 - //Целочисленное деление двух чисел:12
print(7/2)# 3.5print(7//2)# 3Данная операция возвращает целочисленный результат деления, отбрасывая дробную часть - **Возведение в степень:1
print(6**2)# Возводим число 6 в степень 2. Результат - 36 - %Получение остатка от деления:1
print(7%2)# Получение остатка от деления числа 7 на 2. Результат - 1В данном случае ближайшее число к 7, которое делится на 2 без остатка, это 6. Поэтому остаток от деления равен 7 – 6 = 1
При последовательном использовании нескольких арифметических операций их выполнение производится в соответствии с их приоритетом. В начале выполняются операции с большим приоритетом. Приоритеты операций в порядке убывания приведены в следующей таблице.
| Операции | Направление |
| ** | Справо налево |
| * / // % | Слева направо |
| + – | Слева направо |
Пусть у нас выполняется следующее выражение:
| 1 2 | number = 3 + 4 * 5 ** 2 + 7print(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 = 10number += 5print(number) # 15 number -= 3print(number) # 12number *= 4print(number) # 48 |
Функции преобразования чисел
Ряд встроенных функций в Python позволяют работать с числами. В частности, функции int() и float() позволяют привести значение к типу int и float соответственно.
Например, пусть у нас будет следующий код:
| 1 2 3 | first_number = "2"second_number = 3third_number = first_number + second_number |
Мы ожидаем, что “2” + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И чтобы все заработало как надо, необходимо привести строку к числу с помощью функции int():
| 1 2 3 4 | first_number = "2"second_number = 3third_number = int(first_number) + second_numberprint(third_number) # 5 |
Аналогичным образом действует функция float(), которая преобразует в число с плавающей точкой. Но вообще с дробными числами надо учитывать, что результат операций с ними может быть не совсем точным. Например:
| 1 2 3 4 | first_number = 2.0001second_number = 5third_number = first_number / second_numberprint(third_number) # 0.40002000000000004 |
В данном случае мы ожидаем получить число 0.40002, однако в конце через ряд нулей появляется еще какая-то четверка. Или еще одно выражение:
| 1 | print(2.0001 + 0.1) # 2.1001000000000003 |
В этот случае для округления результата мы можем использовать функцию round():
| 1 2 3 4 | first_number = 2.0001second_number = 0.1third_number = first_number + second_numberprint(round(third_number, 4)) # 2.1001 |
Первый параметр функции – округляемое число, а второй – сколько знаков после запятой должно содержать получаемое число.
Представление числа
При обычном определении числовой переменной она получает значение в десятичной системе. Но кроме десятичной в Python мы можем использовать двоичную, восьмеричную и шестнадцатеричную системы.
Для определения числа в двоичной системе перед его значением ставится 0 и префикс b:
| 1 | x = 0b101 # 101 в двоичной системе равно 5 |
Для определения числа в восьмеричной системе перед его значением ставится 0 и префикс o:
| 1 | a = 0o11 # 11 в восьмеричной системе равно 9 |
Для определения числа в шестнадцатеричной системе перед его значением ставится 0 и префикс x:
| 1 | y = 0x0a # a в шестнадцатеричной системе равно 10 |
И с числами в других системах измерения также можно проводить арифметические операции:
| 1 2 3 4 | x = 0b101 # 5y = 0x0a # 10z = x + y # 15print("{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