Лекция
Переменные и типы данных: числа, строки, булевы значения
Изучите переменные и типы данных в Python, включая числа, строки и булевы значения.
- переменные
- типы данных
- Python
- числа
- строки
- булевы значения
- типобезопасность
Для звонков по России
Личный кабинет
Лекция
Изучите переменные и типы данных в Python, включая числа, строки и булевы значения.
Подскажем по теме, разберём задание и поможем довести работу до результата.
В первой лекции данные были просто значениями — например, «300 грамм муки». В программировании им обязательно дают имена. Переменная — это именованный контейнер, связывающий имя с конкретным значением в памяти.
Вернёмся к кулинарной аналогии: запись «мука — 300 г» читается легче, чем голое число. В коде это превращается в flour = 300. Здесь flour — имя переменной, 300 — значение, а = — оператор присваивания, который сохраняет данные по соответствующему адресу.
Технически имя указывает на область памяти. Обращаясь к flour, вы получаете число, которое там хранится, а само имя остаётся неизменным, даже если значение обновится.
Диаграмма загружается…
Правила именования в Python:
| Правило | Пример | Ошибка |
|---|---|---|
| snake_case | user_name |
userName |
| Начало с буквы | count_2 |
2count |
| Регистрочувствительность | Name ≠ name |
— |
| Константы: UPPER_CASE | PI = 3.14 |
pi = 3.14 |
Константы — это переменные, которые не планируется изменять. По соглашению их именуют заглавными буквами.
flour = 300
water = 250
dough_weight = flour + water
PI = 3.14159
recipe_name = "Багет"
print(dough_weight)
print(recipe_name)
Почему компьютеру недостаточно просто «положить» данные в переменную? Представьте рецепт без указания единиц: «мука — 300», «время — 30». Процессор, как начинающий повар, не поймёт, что граммы нельзя прибавить к минутам — результат потеряет смысл.
Типы данных решают две задачи: оптимизацию памяти (не резервировать килобайт под счётчик яиц) и безопасность операций (не дают сложить текст с числом).
В Python четыре фундаментальных скалярных типа:
| Тип | Назначение | Пример | Особенность хранения |
|---|---|---|---|
int |
Целые числа | 42, -7 |
Точное значение любой длины |
float |
Дробные числа | 3.14 |
Приближённое (стандарт IEEE 754) |
str |
Текст | "текст", 'мир' |
Последовательность символов Unicode |
bool |
Логика | True, False |
Состояние включено/выключено |
Целые числа (int) хранятся без погрешностей. Компьютер выделяет ровно столько памяти, сколько нужно конкретному числу.
С дробными (float) иначе: из-за двоичной системы большинство десятичных дробей хранятся приближённо. Число 0.1 в памяти — это уже не ровно 0.1, а близкое значение. Это как измерение обычной линейкой: для бытовых расчётов достаточно, но не для точной инженерии.
Строки (str) — последовательности символов в кавычках. Одинарные и двойные равнозначны. Спецсимвол \n обозначает перевод строки (экранирование).
Логический тип (bool) хранит состояния: True (да/включено) или False (нет/выключено). Это флаги для будущих условий.
Узнать тип переменной помогает функция type():
flour = 500 # int
time = 45.5 # float
name = "Хлеб" # str
done = False # bool
print(type(flour)) # <class 'int'>
print(type(time)) # <class 'float'>
На уровне памяти: int хранит точное математическое значение, float — мантиссу и экспоненту по IEEE 754, str указывает на массив символов, а bool занимает минимум памяти.
Над данными разных типов работают разные операторы. С числами доступны привычные арифметические действия:
dough = (300 + 150) * 2 # сложение и умножение
per_portion = 450 / 4 # деление всегда даёт float: 112.5
packs = 17 // 6 # целочисленное деление: 2 (сколько целых пачек)
remainder = 17 % 6 # остаток: 5 (что осталось)
volume = 2 ** 3 # возведение в степень: 8
Скобки расставляйте явно, не полагаясь на приоритет операций — так код читается однозначно.
Со строками — свои инструменты. Плюс (+) соединяет строки — это и есть конкатенация. Звёздочка (*) повторяет строку заданное число раз:
dish = "Кекс" + " " + "шоколадный" # "Кекс шоколадный"
border = "=" * 20 # "===================="
Здесь кроется ловушка. Попытка сложить текст и число вызовет ошибку:
# Этот код сломается:
# label = "Цена: " + 150 # TypeError: нельзя складывать str и int
Python не выполнит операцию: неясно, нужно ли склеить значения как текст или сложить как математику. Так типы защищают от случайных ошибок.
Чтобы объединить разные типы, нужно явно преобразовать данные функциями str(), int() или float():
cost = 150
label = "Цена: " + str(cost) # "Цена: 150"
# Или строку в число:
count = int("12")
price = float("99.9")
Практический пример — расчёт покупки с формированием чека:
price_per_egg = 8
quantity = 12
total = price_per_egg * quantity
receipt = "Яиц: " + str(quantity) + ", сумма: " + str(total) + " руб."
print(receipt)
Тип переменной определяет доступные действия: числа складываем и делим, строки сцепляем, а смешивать разрешается только после явного преобразования. Как Python выбирает тип в сложных выражениях — разберём в следующей лекции.