Переменные и типы данных
Переменная — это имя для значения. Тип — это то, что за значение. От типа зависит, что с ним можно делать.
Правило курса: решайте сами, без AI. Сначала попробуйте, потом смотрите решение.
Переменные и основные типы
Заголовок раздела «Переменные и основные типы»Создайте файл basics.py. Запускайте его так: uv run basics.py (или python3 basics.py).
order_id = 1001user = "anna"amount = 49.90is_paid = Truecoupon = Noneprint(order_id, user, amount, is_paid, coupon)print(type(order_id), type(user), type(amount), type(is_paid), type(coupon))Ответ:
1001 anna 49.9 True None<class 'int'> <class 'str'> <class 'float'> <class 'bool'> <class 'NoneType'>| Тип | Что это | Пример в данных |
|---|---|---|
int | Целое число | order_id, количество |
float | Дробное число | amount, цена |
str | Строка | user, channel |
bool | True или False | is_paid |
None | «Значения нет» | пустой coupon |
Правила имён:
- Только латиница, цифры и
_. Не начинайте с цифры. - Стиль
snake_case:order_id, неOrderId. - Имя должно говорить, что внутри:
amount, неa. - Константы пишут большими буквами:
MAX_RETRIES = 3.
Если ошибиться в имени, Python скажет NameError и подскажет похожее имя:
NameError: name 'amout' is not defined. Did you mean: 'amount'?Комментарии
Заголовок раздела «Комментарии»Всё после # до конца строки Python не выполняет. Пишите в комментарии, зачем нужен код, а не что он делает.
# API отдаёт сумму в копейках, переводим в рублиamount_rub = 4990 / 100MAX_RETRIES = 3 # сколько раз повторять запрос к APIprint(7 / 2, 7 // 2, 7 % 2, 2 ** 10)print(0.1 + 0.2)print(round(0.1 + 0.2, 2))print(1_000_000)Ответ:
3.5 3 1 10240.300000000000000040.31000000/— обычное деление. Всегда даётfloat.//— целая часть.%— остаток.**— степень._в числе — для читаемости.
s = " Anna.Smith@Example.com "print(s.strip().lower())print(s.strip().lower().split("@"))print("a,b,c".replace(",", ";"))print(len("hello"), "hello"[0], "hello"[-1])print("anna smith".title(), "eur".upper())print("order_id\tamount\n1001\t49.9")Ответ:
anna.smith@example.com['anna.smith', 'example.com']a;b;c5 h oAnna Smith EURorder_id amount1001 49.9strip()убирает пробелы по краям.lower()делает буквы маленькими,upper()большими,title()делает первую букву слова большой.split(sep)режет строку на список.replace(a, b)заменяет.s[0]— первый символ.s[-1]— последний.\t— табуляция,\n— новая строка.- Строки нельзя менять на месте. Методы возвращают новую строку.
Преобразование типов
Заголовок раздела «Преобразование типов»Данные из CSV и API часто приходят строками. Приводите тип явно.
print(int("42") + 1, float("3.5"), str(10) + "%")Ответ:
43 3.5 10%Если значение не подходит, будет ошибка:
int("12.5") # ValueError: invalid literal for int() with base 10: '12.5'"a" + 1 # TypeError: can only concatenate str (not "int") to strf-string
Заголовок раздела «f-string»f-string вставляет значения в текст. Перед кавычкой ставьте f.
price = 1234.5678print(f"{user} paid {amount} USD")print(f"{price:.2f}")print(f"{price:,.1f}")print(f"{0.256:.1%}")print(f"{order_id:08d}")print(f"{user=}")Ответ:
anna paid 49.9 USD1234.571,234.625.6%00001001user='anna'| Формат | Что делает |
|---|---|
:.2f | 2 знака после точки |
:,.1f | разделитель тысяч и 1 знак |
:.1% | доля в процентах |
:08d | целое, ширина 8, нули слева |
{x=} | печатает имя и значение (удобно для отладки) |
bool и None
Заголовок раздела «bool и None»print(5 > 3, 5 == 3, bool(0), bool("x"))coupon = Noneprint(coupon is None)Ответ:
True False False TrueTrue- Сравнивайте с
Noneчерезis None, не через==. bool(0),bool(""),bool(None)даютFalse. Остальное чащеTrue. Подробнее в уроке про условия.
Где это в работе
Заголовок раздела «Где это в работе»- Типы колонок в CSV, Parquet и таблицах:
int,float,str,bool. - Чистка строк:
strip(),lower(),replace()перед загрузкой. None— этоNULLиз SQL.- f-string — для логов и сообщений:
f"loaded {n} rows".
Практика
Заголовок раздела «Практика»Задание 1
Заголовок раздела «Задание 1»Цена товара 20.0, количество 3. Посчитайте стоимость заказа и выведите её.
Проверка: 60.0
Решение
price = 20.0qty = 3print(price * qty)Задание 2
Заголовок раздела «Задание 2»Сумма заказа 100, скидка 15 процентов. Выведите итог в формате Итого: 85.00.
Проверка: Итого: 85.00
Решение
total = 100discount = 15print(f"Итого: {total * (1 - discount / 100):.2f}")Задание 3
Заголовок раздела «Задание 3»Email пришёл в виде " ANNA@Mail.RU ". Уберите пробелы и приведите к нижнему регистру.
Проверка: anna@mail.ru
Решение
raw = " ANNA@Mail.RU "print(raw.strip().lower())Задание 4
Заголовок раздела «Задание 4»Из CSV пришли две строки: "12" и "30". Сложите их как числа.
Проверка: 42 (а не 1230)
Решение
x = "12"y = "30"print(int(x) + int(y))Задание 5
Заголовок раздела «Задание 5»Оплачено 3 заказа из 8. Выведите долю оплаченных в процентах с одним знаком.
Проверка: 37.5%
Решение
paid = 3all_orders = 8print(f"{paid / all_orders:.1%}")Задание 6
Заголовок раздела «Задание 6»Выведите число 1234567.891 с разделителем тысяч и двумя знаками после точки.
Проверка: 1,234,567.89
Решение
print(f"{1234567.891:,.2f}")Что запомнить
Заголовок раздела «Что запомнить»- Основные типы:
int,float,str,bool,None. - Данные из файлов приходят строками. Приводите тип через
int()иfloat(). floatнеточный. Округляйте черезround()или формат:.2f.- f-string — основной способ собрать текст из значений.
Noneпроверяют черезis None.
Дальше: Python Crash Course, глава 2.
Следующий урок: Списки.