Числа: типи int, float

Стандартні типи в мові Python включають числа, які поділяються на:

  • тип int — цілі числа;
  • тип float — дійсні числа.

У цьому розділі:

Як обрати тип?

Вибір між int та float залежить від контексту завдання та вимог до точності обчислень. Тип int використовується тоді, коли значення є дискретним, тобто воно може бути лише цілим числом. Тип float застосовується для неперервних величин, які можуть містити дробову частину або вимагати підвищеної точності.

Завдання Тип Опис
Кількість студентів в групі: 10 int Кількість людин — завжди натуральне число. Не може бути 1,5 студента.
Кількість товарів у кошику: 5 int Кількість товарів — завжди натуральне число. Не может бути 1,5 товара.
7,5 кг цукру float Віс товару — дійсне число. При вимірюванні не завжди буде ціле число.
Вік людини: 25 int Вік завжди виражається цілим числом років.
Рік народження: 1938 int Рік завжди ціле.
Температура повітря: 21,5°C float Температура вимірюється з десятковими значеннями.
Відстань між містами: 145,3 км float Відстань може містити десяткові частини, наприклад 145,3 км.
Кількість лайків у соцмережі: 12000 int Лайки рахуються цілими числами.
Середній бал студента: 89,7 float Оцінка може бути дробовою, наприклад, 89,7 балів.
Кількість частинок в одному моль: 6.022e23 float Велике число записується у науковій нотації.
Вміст алкоголю в напої: 4,7% float Відсотки зазвичай мають десяткову частину.
Час реакції людини: 0,248 секунди float Час реакції вимірюється у секундах з високою точністю.

У Python тип числа визначається автоматично, залежно від його запису в коді. Якщо число записане без десяткової крапки, Python сприймає його як ціле (int). Якщо ж у числі є десяткова крапка або воно записане в експоненційному форматі (наприклад, 2.5 або 1e3), Python визначає його як дійсне (float).

a = 10       # int, оскільки немає десяткової крапки
b = 10.0     # float, через наявність десяткової крапки
c = 1e3      # float, оскільки це експоненційний запис (1 × 10³ = 1000.0)
print(a, b, c)

Python також може конвертувати числа з одного типу в інший:

x = int(3.8)    # 3 (відкидає дробову частину)
y = float(7)    # 7.0 (перетворює int у float)
print(x, y)

Чому крапка, а не кома?

В українській традиції запису чисел дробова частина відділяється комою, наприклад, 3,14. Однак у Python, як і в більшості мов програмування, використовується крапка: 3.14. Це пояснюється тим, що в комп’ютерній науці прийнято міжнародний стандарт IEEE 754, який визначає крапку як роздільник дробової частини. Крім того, багато мов програмування базуються на англійському синтаксисі, де крапка є стандартним десятковим роздільником. Наприклад, у Python вираз:

x = 3.14  # Правильно
print(x)

є коректним, тоді як:

x = 3,14  # Логічна помилка! Інтерпретується як кортеж (3, 14), а не як число 3,14
print(x)

у спробі використання коми Python сприйме число як кортеж із двох значень 3 та 14.

Якщо потрібно перетворити текстове представлення числа, що містить кому, у дійсний тип, слід використовувати метод replace():

s = "3,14"
x = float(s.replace(",", "."))  # 3.14
print(x)

Арифметичні дії

Python підтримує стандартні арифметичні операції для роботи з числами. До них належать додавання, віднімання, множення, ділення та інші математичні дії. Важливо розуміти, що операції з цілими (int) числами повертають int, якщо немає дробової частини, а дії з float завжди повертають float. Наприклад:

print(5 + 3)    # 8 (int)
print(5 / 2)    # 2.5 (float)
print(5 // 2)   # 2 (цілочисельне ділення)
print(2 ** 3)   # 8 (піднесення до степеня)

У таблиці нижче наведені основні арифметичні операції Python:

Операція Пояснення Приклад Результат
+ Додавання 5 + 3 8
- Віднімання 10 - 4 6
* Множення 6 * 2 12
/ Ділення (результат завжди буде float) 7 / 2 3.5
// Цілочисельне ділення (відкидає дробову частину) 7 // 2 3
% Остача від ділення 7 % 2 1
** Піднесення до степеня 2 ** 3 8
- (унарний мінус) Зміна знака числа -(-3) 3

Ці операції використовуються для обчислень у різних задачах: фінансових розрахунках, фізичних моделях, аналізі даних тощо.

Пріоритет арифметичних операцій

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

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

Пріоритет операцій (від вищого до нижчого):

  1. () — круглі дужки (вирази в дужках обчислюються першими);
  2. ** — піднесення до степеня;
  3. +x, -x — унарні плюс і мінус (зміна знака числа);
  4. *, /, //, % — множення, ділення, цілочисельне ділення, остача від ділення;
  5. +, - — додавання і віднімання.
print(2 + 3 * 4)   # 14 (множення має вищий пріоритет, ніж додавання)
print((2 + 3) * 4) # 20 (дужки змінюють порядок виконання)
print(-3 ** 2)     # -9 (піднесення до степеня виконується раніше, ніж унарний мінус)
print((-3) ** 2)   # 9 (дужки змінюють порядок, і число підноситься до степеня разом із мінусом)
print(10 / 2 * 5)  # 25.0 (ділення і множення мають однаковий пріоритет, виконуються зліва направо)

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

Арифметичні вирази можуть бути складними та записуватись в один рядок. Ось приклад, що містить додавання, віднімання, множення, ділення, остачу від ділення, піднесення до степеня та використання дужок для контролю порядку операцій:

result = (12 + 5 * 3 - 8 / 2) ** 2 % 7 + 4 // 3 * 2
print(result)

Цей вираз виконує такі обчислення:

  1. 5 * 3 = 15
  2. 8 / 2 = 4.0 (результат ділення завжди має тип float)
  3. 12 + 15 - 4.0 = 23.0 (результат float, тому що один з аргументів має тип float)
  4. (23.0) ** 2 = 529.0
  5. 529.0 % 7 = 4.0 (результат остачі від ділення завжди має тип int)
  6. 4 // 3 = 1
  7. 1 * 2 = 2
  8. 4.0 + 2 = 6.0 (результат float, тому що один з аргументів має тип float)

Очікуваний результат: 6.0.