Перейти к содержимому
TelegramGitHub

Переменные и типы данных

Переменная — это имя для значения. Тип — это то, что за значение. От типа зависит, что с ним можно делать.

Правило курса: решайте сами, без AI. Сначала попробуйте, потом смотрите решение.

Создайте файл basics.py. Запускайте его так: uv run basics.py (или python3 basics.py).

order_id = 1001
user = "anna"
amount = 49.90
is_paid = True
coupon = None
print(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
boolTrue или Falseis_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 / 100
MAX_RETRIES = 3 # сколько раз повторять запрос к API
print(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 1024
0.30000000000000004
0.3
1000000
  • / — обычное деление. Всегда даёт 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;c
5 h o
Anna Smith EUR
order_id amount
1001 49.9
  • strip() убирает пробелы по краям. 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 str

f-string вставляет значения в текст. Перед кавычкой ставьте f.

price = 1234.5678
print(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 USD
1234.57
1,234.6
25.6%
00001001
user='anna'
ФорматЧто делает
:.2f2 знака после точки
:,.1fразделитель тысяч и 1 знак
:.1%доля в процентах
:08dцелое, ширина 8, нули слева
{x=}печатает имя и значение (удобно для отладки)
print(5 > 3, 5 == 3, bool(0), bool("x"))
coupon = None
print(coupon is None)

Ответ:

True False False True
True
  • Сравнивайте с 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".

Цена товара 20.0, количество 3. Посчитайте стоимость заказа и выведите её.

Проверка: 60.0

Решение
price = 20.0
qty = 3
print(price * qty)

Сумма заказа 100, скидка 15 процентов. Выведите итог в формате Итого: 85.00.

Проверка: Итого: 85.00

Решение
total = 100
discount = 15
print(f"Итого: {total * (1 - discount / 100):.2f}")

Email пришёл в виде " ANNA@Mail.RU ". Уберите пробелы и приведите к нижнему регистру.

Проверка: anna@mail.ru

Решение
raw = " ANNA@Mail.RU "
print(raw.strip().lower())

Из CSV пришли две строки: "12" и "30". Сложите их как числа.

Проверка: 42 (а не 1230)

Решение
x = "12"
y = "30"
print(int(x) + int(y))

Оплачено 3 заказа из 8. Выведите долю оплаченных в процентах с одним знаком.

Проверка: 37.5%

Решение
paid = 3
all_orders = 8
print(f"{paid / all_orders:.1%}")

Выведите число 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.

Следующий урок: Списки.