Типы данных: числа, текст, булево
Не все значения одинаковы. Число 42 и текст "42", это разные вещи для Python. Чтобы работать с данными, нужно понимать их типы.
Зачем вообще нужны типы
Представь, что ты складываешь две вещи. "2 + 2", это 4. Но "2" + "2", это "22" (два текста склеились). Один и тот же символ "+" ведёт себя по-разному в зависимости от типа данных.
Python нужно знать тип, чтобы понимать что делать с данными.
Целые числа (int)
Любое целое число, положительное, отрицательное, ноль:
age = 25
temperature = -10
users_count = 1_000_000 # подчёркивание для читаемости
Над числами можно выполнять математику:
a = 10
b = 3
print(a + b) # 13, сложение
print(a - b) # 7, вычитание
print(a * b) # 30, умножение
print(a / b) # 3.333..., деление (всегда даёт дробное число!)
print(a // b) # 3, целочисленное деление (без остатка)
print(a % b) # 1, остаток от деления
print(a ** b) # 1000, возведение в степень
Дробные числа (float)
Числа с дробной частью:
height = 1.82
pi = 3.14159
price = 99.99
Важно знать: дробные числа в компьютере хранятся приблизительно. Это не баг Python, это особенность математики с плавающей точкой:
print(0.1 + 0.2) # 0.30000000000000004, не 0.3!
Для денежных расчётов используют специальный модуль decimal, а не обычный float.
Текст (str, строка)
Любой текст в кавычках, это строка:
name = "Алекс"
city = 'Москва' # одинарные или двойные, без разницы
message = "Привет!"
empty = "" # пустая строка, тоже строка
Строки можно складывать (конкатенировать):
first = "Привет"
second = "мир"
print(first + ", " + second + "!") # Привет, мир!
И умножать:
print("=" * 20) # ====================
Булево значение (bool)
Только два варианта, True (истина) или False (ложь):
is_active = True
is_deleted = False
has_subscription = True
Чаще всего появляются как результат сравнений:
print(5 > 3) # True
print(5 < 3) # False
print(5 == 5) # True (двойное == это проверка равенства)
print(5 != 3) # True (не равно)
Как узнать тип переменной
age = 25
name = "Алекс"
price = 99.99
active = True
print(type(age)) # <class 'int'>
print(type(name)) # <class 'str'>
print(type(price)) # <class 'float'>
print(type(active)) # <class 'bool'>
💡 Главная мысль: Каждое значение имеет тип. Тип определяет что с ним можно делать. Числа складываются математически, строки, конкатенируются. Это важно понимать, чтобы не удивляться неожиданному поведению.