← назад к разделу

Номер заказа, сумма, статус — программа всё время держит в руках мелкие куски данных, и каждому куску дают имя. Это и есть переменная. Второе, что выясняется сразу: текст и число похожи на вид, а ведут себя по-разному.

имя = значение status 200 404имя то же кавычки решают всё "200" + "1" = "2001" 200 + 1 = 201 пришло текстом, а считать надо — переводим int()

Переменная — имя для значения; значение можно заменить. Строка и число выглядят похоже, а ведут себя по-разному.

Переменная — это имя для значения

живой пример

номер = "ord-042"
статус = 200
print(номер, статус)
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Слева имя, справа значение, между ними знак равенства. Это не «равно» из математики, а «положи справа в то, что слева».

Значение можно заменить, переменная на то и переменная:

живой пример

статус = 200
статус = 404
print(статус)     # 404
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

В учебных примерах русские имена помогают не путать своё с чужим. В рабочем коде пишут латиницей: order_id, а не номер.

Отработать здесь: Напечатать строку · Завести переменную

Числа и строки — разные вещиспросят на собеседовании

Кавычки решают всё. "200" — строка, то есть текст из трёх символов. 200 — число, с ним можно считать:

живой пример

код = "200"
print(код + "1")    # 2001 — строки склеились
код = 200
print(код + 1)      # 201 — числа сложились
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Из файла, из формы, из ответа сервиса значение почти всегда приходит текстом, а считать надо числами. Перевод делают int() и float():

живой пример

сумма = int("4990")        # 4990, теперь это число
цена = float("99.90")      # 99.9, дробное число
print(сумма + 10, цена)    # 5000 99.9
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Обратно, из числа в текст, — str():

живой пример

текст = str(4990)
print(текст + " ₽")        # 4990 ₽ — склеилось как текст
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

int("четыре") упадёт с ошибкой — и правильно сделает: превращать там нечего.

Отработать здесь: Число из строки

Строки: то, с чем работают каждый деньспросят на собеседовании

Кавычки у строки одинарные или двойные — берут те, которых нет внутри самого текста. Длину считает len():

живой пример

print(len("ord-042"))     # 7
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Сообщение из кусков собирают f-строкой: перед кавычками ставят букву f, а внутри в фигурных скобках пишут выражение. Сложением тоже можно, но складываются только строки — число туда не подставить.

живой пример

# ошибка: так не надо — число не склеить со строкой
номер = "ord-042"
сумма = 4990
print("Заказ " + номер + " на сумму " + сумма)
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Программа остановится: TypeError: can only concatenate str (not "int") to str, то есть «строку можно склеить только со строкой».

живой пример

# так надо
номер = "ord-042"
сумма = 4990
print(f"Заказ {номер} на сумму {сумма} ₽")
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Внутри фигурных скобок можно считать: f"итого {сумма * 2}".

Поиск внутри строки — оператором in:

живой пример

ответ = "Заказ не найден"
print("не найден" in ответ)    # True
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Ответ — True или False. Эти два значения называют логическими, на них держится любая проверка.

Пять действий, которые нужны постоянно:

живой пример

print("  ord-042  ".strip())          # ord-042 — убрать пробелы по краям
print("ORD-042".lower())              # ord-042 — в нижний регистр
print("ord-042".startswith("ord"))    # True — начинается с
print("ord-042".split("-"))           # ['ord', '042'] — разрезать по символу
print("ord-042".replace("ord", "x"))  # x-042 — заменить
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

strip() и lower() спасают при сравнении данных из разных мест: в одном файле «Анна », в другом «анна», глазами одно и то же, а для программы — нет.

Отработать здесь: Подставить значение в строку · Длина строки · Строка внутри строки

Комментарии

Всё после знака # — заметка для человека, программа её пропускает:

живой пример

цена = 4990        # цена без скидки
print(цена)
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Писать их стоит там, где код не объясняет почему: что делает строка, и так видно.

Частые ошибки

Кавычки не закрыты — print("привет). Ошибка SyntaxError, в сообщении указана строка; проверьте пары кавычек и скобок.

Имя с опечаткой — завели номер, обратились к намер. Ошибка NameError: name 'намер' is not defined, то есть «такого имени я не знаю».

Сравнили число со строкой. Программа не падает, просто молча отвечает «не сошлось»:

живой пример

# так не надо
код = "200"
print(код == 200)        # False — сравнили текст с числом
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

живой пример

# так надо
код = "200"
print(int(код) == 200)   # True — сначала привели к одному типу
Запустить

Запуск примеров доступен в платном доступе. Там этот же код выполняется прямо в статье: редактор, запуск и проверка рядом с абзацем. Три дня бесплатно →

Коротко

  • Переменная — имя для значения; знак = кладёт значение в имя, а не сравнивает.
  • "200" и 200 — разные вещи: строка и число. Текст переводят в число int() и float(), число в текст — str().
  • f-строка (f"Заказ {номер}") — обычный способ собрать сообщение из кусков; сложением число к строке не приклеить.
  • strip() и lower() приводят данные из разных мест к сравнимому виду.
  • in отвечает True или False — с этого начинается любая проверка.

Что почитать дальше