Посібник по Python

Операції з числами Python

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