Числа: типи 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 дотримується стандартних математичних правил, подібних до тих, які використовуються в алгебрі.
Пріоритет операцій визначає, які дії виконуються першими, якщо у виразі немає круглих дужок. Операції з вищим пріоритетом виконуються раніше. Якщо операції мають однаковий пріоритет, вони виконуються зліва направо (за винятком піднесення до степеня, яке виконується справа наліво).
Пріоритет операцій (від вищого до нижчого):
()— круглі дужки (вирази в дужках обчислюються першими);**— піднесення до степеня;+x,-x— унарні плюс і мінус (зміна знака числа);*,/,//,%— множення, ділення, цілочисельне ділення, остача від ділення;+,-— додавання і віднімання.
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)
Цей вираз виконує такі обчислення:
5 * 3=158 / 2=4.0(результат ділення завжди має типfloat)12 + 15 - 4.0=23.0(результатfloat, тому що один з аргументів має типfloat)(23.0) ** 2=529.0529.0 % 7=4.0(результат остачі від ділення завжди має типint)4 // 3=11 * 2=24.0+2=6.0(результатfloat, тому що один з аргументів має типfloat)
Очікуваний результат: 6.0.