Числа: типи 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
=15
8 / 2
=4.0
(результат ділення завжди має типfloat
)12 + 15 - 4.0
=23.0
(результатfloat
, тому що один з аргументів має типfloat
)(23.0) ** 2
=529.0
529.0 % 7
=4.0
(результат остачі від ділення завжди має типint
)4 // 3
=1
1 * 2
=2
4.0
+2
=6.0
(результатfloat
, тому що один з аргументів має типfloat
)
Очікуваний результат: 6.0
.