Номер заказа, сумма, статус — программа всё время держит в руках мелкие куски данных, и каждому куску дают имя. Это и есть переменная. Второе, что выясняется сразу: текст и число похожи на вид, а ведут себя по-разному.
Переменная — имя для значения; значение можно заменить. Строка и число выглядят похоже, а ведут себя по-разному.
Переменная — это имя для значения
живой пример
номер = "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— с этого начинается любая проверка.
Что почитать дальше
- Сравнения и условия — как программа принимает решение.
- Списки и словари — как устроен JSON изнутри.
- Циклы — как пройти по всем записям и ничего не пропустить.