3.1 Числові типи: int, float, complex
Python має декілька числових типів, кожен з яких підходить для різних задач і обробки даних. Ми вже згадували типи даних int, float, complex, а також булеві типи bool, які є підкласом цілих чисел. Тепер розглянемо кожен з цих типів детальніше.
int (Цілі числа):
Це, можливо, найчастіше використовуваний числовий тип у Python. Цілі числа можуть бути позитивні або негативні і не мають десяткових знаків. Python підтримує довільну точність, що означає, що практично немає обмежень на розмір чисел, які ви можете обробляти, окрім обмежень пам'яті вашої машини.
float (Числа з плаваючою комою):
Ці числа використовуються для представлення дійсних чисел і можуть містити десяткові точки. Python реалізує числа з плаваючою точкою відповідно до стандарту IEEE 754 double-precision, що дає точність приблизно 15 десяткових цифр після коми.
complex (Комплексні числа):
Комплексні числа мають дійсну та уявну частину. І та, і інша, представлені числами з плаваючою точкою. У Python для позначення уявної частини використовується суфікс j або J. Наприклад, комплексне число можна створити так:
complex_number = 3 + 5j
bool (Булеві значення):
В Python True і False є спеціалізованими версіями цілих чисел і функціонують як 1 і 0 відповідно. Це дозволяє їх використовувати в арифметичних операціях і інших математичних виразах.
Арифметичні операції:
Python підтримує всі основні арифметичні операції, включаючи додавання, віднімання, множення, ділення, ділення націло, взяття залишку від ділення і піднесення до степеня. Наприклад:
- Додавання: 3 + 2
- Віднімання: 5 - 2
- Множення: 2 * 3
- Ділення: 7 / 2
- Ділення націло: 7 // 2
- Залишок від ділення: 7 % 2
- Піднесення до степеня: 2 ** 3
Перетворення типів:
Ми вже говорили про перетворення (або приведення) типів. Одні числа в інші можна переводити за допомогою функцій приведення типів, таких як int(), float() і complex().
Деякі питання перетворення числових типів ми вже розглядали раніше, інші розглянемо детальніше в наступних лекціях.
3.2 Псевдовипадкові числа
Іноді програміст стикається з простими, здавалося б, задачами: «вибрати випадковий фільм для вечірнього перегляду з певного списку», «вибрати переможця лотереї», «перемішати список пісень при трясці смартфона», «вибрати випадкове число для шифрування повідомлення». При цьому щоразу виникає цілком закономірне питання: а як отримати це саме випадкове число?
Отримати «справжнє» випадкове число досить-таки важко. Вплоть до того, що в комп'ютер вбудовують спеціальні математичні сопроцесори, які вміють генерувати такі числа, з виконанням всіх вимог до «істинної випадковості».
Тому програмісти придумали своє рішення — псевдовипадкові числа. Псевдовипадкові числа – це певна послідовність, числа в якій на перший погляд здаються випадковими, але фахівець при детальному аналізі зможе знайти в ній певні закономірності. Для шифрування секретних документів такі числа не підійдуть, а для імітації кидання кубика в грі – цілком.
Є багато алгоритмів генерації послідовності псевдовипадкових чисел і майже всі з них генерують наступне випадкове число на основі попереднього і ще якихось допоміжних чисел.
Наприклад, дана програма виведе на екран 1000 неповторюваних чисел:
a = 41
c = 11119
m = 11113
seed = 1
def get_next_random():
global seed
seed = (a * seed + c) % m
return seed
for t in range(1000):
x = get_next_random()
print(x)
До речі, ми говоримо не про псевдовипадкові числа, а саме про послідовність таких чисел. Адже, дивлячись на одне число неможливо зрозуміти, випадкове воно чи ні.
Випадкове число можна отримати різними способами:
def get_random_number():
return 4 # це точно випадкове число (z викинув його за допомогою кубиків), див. "Жарт про кубики"
3.3 Бібліотека random
В Python є вбудована бібліотека random, з якою вам буде цікаво попрацювати. Як ви вже, можливо, здогадалися по її назві, з допомогою цієї бібліотеки можна генерувати [псевдо]випадкові числа.
Бібліотека random, хоч і вбудована, все-таки є окремою бібліотекою, тому перш ніж використовувати її, потрібно підключити до нашого коду. Робиться це за допомогою ключового слова import. Приклад:
import random
В бібліотеці random є багато цікавих методів, але сьогодні ми познайомимося тільки з двома з них: метод random() і метод randint(). Вони виконують схожі, але різні задачі:
Метод random.random():
Цей метод повертає випадкове число з плаваючою комою між 0.0 та 1.0. Числа генеруються рівномірно в цьому діапазоні. Це означає, що кожне число всередині інтервалу має однакову ймовірність вибору.
import random
probability = random.random()
print("Випадкова ймовірність:", probability)
Метод random.randint(a, b):
Ця функція повертає випадкове ціле число в діапазоні від a до b включно. На відміну від random.random(), яка повертає випадкове число з плаваючою комою в діапазоні від 0 до 1, randint() використовується, коли потрібно вибрати ціле число. Наприклад, random.randint(1, 10) може повернути будь-яке ціле число від 1 до 10, включаючи обидва кінцевих значення.
import random
dice_roll = random.randint(1, 6) # Імітація кидання гральної кістки
print("Випало число:", dice_roll)
Це дуже корисні і цікаві методи, тож користуйся на здоров'я.
3.4 Бібліотека math
Ну, раз пішла така гулька, дозволь познайомити тебе з ще однією цікавою бібліотекою. Це бібліотека math. В ній містяться основні математичні функції і константи, такі як числа π і e.
І так само, як і бібліотеку random, її потрібно імпортувати перед використанням:
import math
Ось таблиця з основними функціями і константами бібліотеки math в Python:
| Функція/Константа | Опис |
|---|---|
| math.pi | Константа π, приблизно дорівнює 3.14159 |
| math.e | Основа натурального логарифма, приблизно дорівнює 2.71828 |
| math.sqrt(x) | Повертає квадратний корінь з x |
| math.exp(x) | Повертає e в степені x |
| math.log(x[, base]) | Повертає логарифм x за основою base, якщо base вказаний; в іншому випадку повертає натуральний логарифм. |
| math.cos(x) | Повертає косинус x, де x вказано в радіанах |
| math.sin(x) | Повертає синус x, де x вказано в радіанах |
| math.tan(x) | Повертає тангенс x, де x вказано в радіанах |
| math.ceil(x) | Округлює число вгору до найближчого цілого |
| math.floor(x) | Округлює число вниз до найближчого цілого |
| math.factorial(x) | Повертає факторіал x |
Навіть якщо ти не дуже захоплюєшся математикою і не збираєшся використовувати ці функції в найближчі 10 років, тут є як мінімум три дуже корисні:
sqrt()— квадратний корінь з числаceil()— округлення вгору до найближчого цілогоfloor()— округлення вниз до найближчого цілого
Приклади:
import math
number = 9.7
rounded_up = math.ceil(number) # Округляє вгору, результат 10
rounded_down = math.floor(number) # Округляє вниз, результат 9
print("Округлене вгору число:", rounded_up)
print("Округлене вниз число:", rounded_down)
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ