Глава 9 · Выполняй мою команду!

Чем отличаются = и ==, и как сравнивать строки

Одна из самых частых ошибок новичков — и как строки из главы 8 участвуют в условиях.

= — это не то же самое, что ==

Этот раздел заслуживает отдельного внимания — путаница между одиночным и двойным «равно» встречается постоянно.

Два разных оператора: = и ==
= (один знак) — ПРИСВАИВАНИЕ
name = "Anna"

# смысл: связать имя name
# со значением "Anna".
# Ничего не сравнивается!
== (два знака) — СРАВНЕНИЕ
name == "Anna"

# смысл: равны ли значения?
# результат — True или False,
# сама переменная не меняется
Что использовать сегодня: Перепутать = и == — одна из самых частых ошибок у новичков в любом языке программирования. Если в условии if случайно написать одиночный =, Python сразу сообщит об ошибке синтаксиса — присваивание нельзя использовать как условие, так что эта конкретная ошибка, к счастью, не проходит незамеченной.

!= — «не равно»

!= — оператор, обратный ==:

ne_ravno.py
password = ""
print(password != "")   # False — пароль как раз пустой

password = "secret123"
print(password != "")   # True — пароль НЕ пустой
Почему != , а не ≠
В математике «не равно» пишут одним значком — . На клавиатуре такого значка нет, и Python (как и C, Java, JavaScript и почти все языки программирования) не понимает его как код — писать нужно ровно два обычных символа подряд: восклицательный знак и знак равенства, !=. Это два разных, но эквивалентных обозначения одной и той же идеи: ≠ — запись для человека на бумаге, != — запись для Python. Если в коде на этом сайте != выглядит как единый перечёркнутый значок — это лишь особенность шрифта редактора (лигатура), которая красиво отображает два символа рядом; печатать при этом всё равно нужно ! и = по отдельности — отдельного «значка ≠» на клавиатуре искать не нужно, его там нет.

Сравнение строк

Мы видели в главе 8: строки сравниваются по символам, и регистр важен:

sravnenie_strok.py
print("Python" == "python")   # False — регистр важен
print("cat" < "dog")          # True
«cat» < «dog» — не совсем «по алфавиту»
Python сравнивает строки по кодовым позициям символов, а не по «человеческому» алфавитному порядку словаря. Для обычных латинских букв в одном регистре результат обычно совпадает с интуицией, но при смешении регистров или разных алфавитов это уже не всегда «алфавитный порядок» в привычном смысле.
ЧУТЬ ГЛУБЖЕ — код символа
Каждому символу соответствует число — его код. Функция ord() показывает его: ord("A") → 65, ord("a") → 97. Именно эти числа Python на самом деле сравнивает. Для этой главы знать точные числа не обязательно — важно лишь понимать, что сравнение строк работает через них, а не через словарь.

Нормализация перед сравнением

Пользователь может ввести «Да», «ДА», « да» — с разным регистром и пробелами. Методы строк из главы 8 решают эту проблему одной строкой:

normalizaciya.py
answer = input("Продолжить? ").strip().lower()

if answer == "да":
    print("Продолжаем")

.strip() убирает случайные пробелы по краям, .lower() приводит к нижнему регистру — теперь неважно, как именно пользователь набрал ответ.

Практика: == против =, != и сравнение строк
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →