Python. Математичні (арифметичні) оператори. Приклади

Математичні (арифметичні) оператори. Приклади


Зміст


1. Які оператори (операції) використовуються для проведення обчислень у Python?

Мова Python має набір математичних (арифметичних) операторів для проведення обчислень в арифметичних виразах. Перелік цих операторів в порядку спадання пріоритету наступний:

  • ** – піднесення до степеня;
  • –x – унарний мінус;
  • /, // – звичайне ділення, ділення з округленням вниз;
  • % – остача від ділення;
  • * – множення;
  • – віднімання;
  • + – додавання.

 

2. Для яких категорій числових типів можна застосовувати математичні оператори?

Математичні оператори можна застосовувати для будь-яких числових типів, а саме:

  • цілочисельних (типів);
  • дійсних;
  • комплексних.

 

3. Яким чином обчислюється тип результату операції у випадку якщо операція є бінарною і містить операнди різних типів?

Кожна операція повертає результат деякого типу. Якщо операція бінарна, то тип результату залежить від типу операндів.
Тут можливі два випадки:

  • операнди мають однаковий тип. У цьому випадку тип результату операції є цей самий тип. Виняток складає операція ділення / цілочисельних операндів. Якщо обидва операнди цілого типу, то результат операції ділення буде дійсний тип (число з плаваючою комою);
  • операнди мають різні типи. У цьому випадку тип результату операції буде визначається за наступною послідовністю: спочатку тип обидвох операндів приводиться до типу складнішого операнду; потім для операндів застосовується математика, специфічна для цього типу.

Інтерпретатор Python визначає складність типів у такій послідовності (від найпростішого до найбільш складного):

  • цілий тип;
  • дійсний тип;
  • комплексний тип.

У Python 2.6 при необхідності, звичайні цілі числа можуть перетворюються у довгі цілі числа. У Python 3.0 і вище цього ранжування вже немає і всі цілі числа представлені як довгі цілі числа.

Приклад. При використанні двох операндів різних типів можливі такі ситуації.
Якщо один операнд цілого типу, а інший дійсного типу, то тип результату буде дійсний тип (тому що дійсний тип вважається складнішим).
Якщо один операнд дійсного типу, а інший комплексного типу, то результат буде комплексного типу.



 

4. Операція піднесення до степеня **. Приклад

Операція піднесення до степеня позначається ** і використовується для операндів будь-яких числових типів (цілочисельних, дійсних, комплексних).

# Операція ** - піднесення до степеня
# 1. Для цілих чисел
a = 3
b = 2
c = a**b # c = 9
print("c = ", c)

# 2. Для дійсних чисел
a = 2.5
b = 3
c = a**b # c = 15.625
print('c = ', c)

# 3. Для комплексних чисел
x = 1 - 2j
y = -4j
z = x**y # z = (-0.011895629765035814+0.0009211666704635043j)
print('z = ', z)

# 4. У 16-й системі числення
a = 0xA1
b = 0x03
c = a**b # c = 4173281 - результат у 10-й системі числення
d = hex(c) # d = 0x3fade1 - результат у 16-й системі числення
print('c = ', c)
print('d = ', d)

# 5. У 8-й системі числення
a = 0o356
b = 0o2
c = a**b # c = 56644 - результат у 10-й системі числення
d = oct(c) # d = 0o156504 - результат у 8-й системі числення
print('c = ', c)
print('d = ', d)

# 6. У 2-й системі числення
a = 0b101
b = 0b110
c = a**b # c = 15625 - результат у 10-й системі числення
d = bin(c) # d = d = 0b11110100001001 - результат у 2-й системі числення
print('c = ', c)
print('d = ', d)

 

5. Операції додавання (+), віднімання (). Приклади

Операції додавання + та віднімання є бінарними і використовуються для будь-якого числового типу.

# Операції додавання +, віднімання -
# 1. Додавання, віднімання цілих чисел
a=3
b=5
c = a+b # c = 8
d = a-b # d = -2

# 2. Додавання, віднімання цілого та дійсного числа
a = 2.5
b = 7
c = a + b # c = 9.5 - результат - дійсне число
d = a - b # d = -4.5 - результат - дійсне число

# 3. Додавання, віднімання дійсних чисел
x = 8.99902
y = 9.112356
z = x+y # z = 18.111376
v = x-y # v = -0.11333600000000033

# 4. Додавання, віднімання комплексних чисел, результат - комплексне число
a = 7+8j
b = 3-2j
c = a + b # c = (10+6j)
d = a - b # d = (4+10j)

# 5. Додавання, віднімання чисел у шістнадцятковій системі числення
a = 0xFF5
b = 0xC9
c = a + b # c = 4286 - у десятковій системі числення
d = a - b # d = 3884

# 6. Додавання, віднімання чисел у вісімковій системі числення
a = 0o730
b = 0o50
c = a + b # c = 512
d = a - b # d = 432

# 7. Додавання, віднімання чисел у двійковій системі числення
a = 0b0110110
b = 0b0001010
c = a + b # c = 64 - результат у десятковій системі числення
d = a - b # d = 44

 

6. Операції множення (*) та звичайного ділення (/). Приклад

Операції множення * та ділення / є бінарними. Ці операції використовуються з операндами будь-якого числового типу (цілого, дійсного, комплексного).

# Операції множення * та звичайного ділення /
# 1. Для цілих чисел
a = 7
b = 4
c = a*b # c = 28 - цілий результат
d = a/b # d = 1.75 - дійсний результат

# 2. Для дійсних чисел
a = 7.5
b = 3.2
c = a*b # c = 24.0 - дійсний результат
d = a/b # d = 2.34375

# 3. Для комплексних чисел
x = 2 + 2j
y = 3 - 1j
z = x*y # z = (8+4j)
v = x/y # v = (0.4+0.7999999999999999j)

# 4. У 16-й системі числення
a = 0xaff
b = 0x5b
c = a*b # c = 256165 - результат у 10-й системі числення
d = a/b # d = 30.934065934065934 - дійсне число

# 5. У 8-й системі числення
a = 0o356
b = 0o2
c = a*b # c = 476
d = a/b # d = 119.0

# 6. У 2-й системі числення
a = 0b111 # a = 35
b = 0b101 # b = 5
c = a*b # c = 35 - результат у 10-й системі числення
d = a/b # d = 1.4 - результат у 2-й системі числення

 

7. Особливості операції ділення / для різних типів чисел. Приклад

Якщо в операції ділення / один з операндів є дійсного типу, то результат буде також дійсного типу (дробове число).

При використанні операції ділення для цілочисельних операндів у таких мовах як C/C++, C#, Java результат операції буде цілочисельним. У версіях Python 2.6 і нижче операція ділення цілочисельних операндів також дає цілочисельний результат, тобто після ділення

a = 9/6 # a = 1 - версії Python 2.6 і нижче

змінна a = 1.

У версії Python 3.0 і вище результат операції ділення / завжди буде дійсне число (незалежно від типів операндів), тобто після ділення

a = 9/6 # a = 1.5 - версії Python 3.0 і вище

змінна a є дійсного типу (a = 1.5). Якщо у версії Python 3.0 і вище при діленні цілочисельних операндів потрібно повернути ціле число, то для цього використовується операція ділення з округленням вниз // (див. п. 8).

Приклад.

# Для цілих чисел (цілочисельних операндів)
a = 7
b = 4
c = a/b # c = 1.75 - результат дійсний

a = 9
b = 3
c = a/3 # c = 3.0 - результат також дійсний

 

8. Операція ділення з округленням вниз (//). Приклад

У версіях Python 2.2 і вище введена операція ділення // з округленням вниз, яка у випадку цілочисельних операндів повертає результат цілого типу. У версіях Python 3.0 і вище ця операція замінює цілочисельне ділення з поверненням цілочисельного результату.

Приклад.

# Операція ділення // з округленням вниз, Python 3.7.0
# 1. Для цілих чисел
a = 8
b = 5
c = a // b # c = 1

a = 17
b = 3
c = a//b # c = 5 - цілий результат з округленням вниз

# 2. Для дійсного та цілого числа
x = 6.0
y = 2
z = x//y # z = 3.0 - дійсний результат

# 3. Для дійсних чисел
x = 5.5
y = 2.5
z = x//y # z = 2.0 - дійсний результат з округленням вниз

x = 13.7
y = 2.3333
z = x//y # z = 5.0 - дійсний результат з округленням вниз

 

9. Операція “унарний” мінус (–x). Приклад

Операція унарний мінус робить з додатного числа від’ємне, а з від’ємного числа додатнє. Операція застосовується до будь-якого числового типу.

# Унарний мінус -x
a = 15
b = -a # b = -15 - унарний мінус

a = -12.35
b = -a # b = 12.35

a = 0xFF
b = -a # b = -255 - десяткова система числення
c = hex(b) # c = -0xff

a = 0o775 # вісімкова система числення
b = -a
c = oct(b) # c = -0o775

a = 0b1111001
b = -a # b = -121 - десяткова система числення
c = bin(b) # c = -0b1111001 - двійкова система числення

# Комплексне число
z = 2 - 8j
z = -z # z = (-2+8j)

 

10. Операція взяття остачі від ділення (%). Приклад

 

# Операція взяття остачі від ділення
# 1. Для цілих чисел
a = 7
b = 4
c = a%b # c = 3

a = 5
b = 9
c = a % b # c = 5

# 2. Для дійсних чисел
a = 5.5
b = 2.1
c = a%b # c = 1.2999999999999998

a = -8.1
b = -1.01
c = a%b # c = -0.019999999999999574

# 3. Для шістнадцяткових чисел
a = 0xA8
b = 0x0F
c = a%b # c = 3 - результат у десятковій системі
d = hex(c) # d = 0x3 - результат у 16-й системі числення

# 4. Для вісімкових чисел
a = 0o15
b = 0o25
c = a % b # c = 13
d = oct(c) # d = 0o15

# 5. Для двійкових чисел
a = 0b10011
b = 0b101
c = a%b # c = 4
d = bin(c) # d = 0b100

 


Зв’язані теми