Сравнение чисел на неравенство в Python

Раздел: Основы Python -> Проверки и сравнения

Операция сравнения «не равно» для чисел в Python

Основным и наиболее эффективным способом проверки неравенства двух чисел в Python является оператор !=. Этот оператор возвращает True, если значения левой и правой части различны, и False, если они равны. Он работает для всех числовых типов: целых (int), чисел с плавающей точкой (float), комплексных (complex).

a = 5
b = 7
result = a != b  # True

Python число не равно (операция сравнения «не равно» для чисел в python)

True

Оператор != часто применяется в условных конструкциях:

number = 10
if number != 0:
    print("Число не равно нулю")
Число не равно нулю

Типичная ошибка: путаница между оператором присваивания = и оператором сравнения !=. Если написать if a = 5:, возникнет синтаксическая ошибка. Для сравнения всегда применяют два символа.

Как проверить неравенство через отрицание равенства?

Вместо != можно использовать отрицание оператора ==: not (a == b). Этот подход эквивалентен, но менее нагляден и требует дополнительных скобок.

a = 3.14
b = 2.71
if not (a == b):
    print("Числа различны")
Числа различны

Проблема: для сложных условий скобки легко пропустить, что приводит к ошибке. Например, if not a == b равносильно if (not a) == b, если a - логическое значение. Рекомендуется всегда использовать != для простоты чтения.

Как учесть погрешность при сравнении чисел с плавающей точкой?

Из-за особенностей представления вещественных чисел прямое сравнение 0.1 + 0.2 != 0.3 может дать неожиданный результат. Для проверки неравенства с учётом машинного эпсилон применяют not math.isclose(a, b) или abs(a - b) > epsilon.

import math
x = 0.1 + 0.2
y = 0.3
if not math.isclose(x, y):
    print("Числа не равны в пределах точности")
else:
    print("Числа равны с учётом погрешности")
Числа равны с учётом погрешности

Альтернативный способ - задать допустимую разницу вручную:

epsilon = 1e-9
if abs(x - y) > epsilon:
    print("Не равны")

Ошибка: использование != для float без учёта погрешности может привести к ложным срабатываниям. Рекомендуется применять math.isclose при работе с дробными числами.

Как в Python 2 выполнялась проверка неравенства?

В Python 2 существовал альтернативный оператор <>, который также означал «не равно». В Python 3 он удалён, поэтому код с <> вызовет синтаксическую ошибку.

# Только для Python 2:
# if a <> b:
#     print("Не равно")

Современная разработка ведётся на Python 3, поэтому следует использовать только !=.

Можно ли использовать is not для сравнения чисел?

Оператор is not проверяет, являются ли два объекта разными экземплярами в памяти, а не равенство значений. Для малых целых чисел (обычно от -5 до 256) Python кэширует объекты, поэтому a is not b может случайно работать. Но для больших чисел или чисел с плавающей точкой результат непредсказуем.

a = 1000
b = 1000
print(a is not b)  # True (разные объекты)
print(a != b)      # False (значения равны)
True
False

Ошибка: использование is not для проверки неравенства значений - распространённая логическая ошибка. Если требуется сравнить числовые значения, применяйте !=.

Как сравнивать число с результатом вычисления?

Оператор != можно применять в цепочках с другими операциями, например, для проверки, что переменная не равна результату функции.

import random
number = random.randint(1, 10)
if number != 5:
    print(f"Случайное число {number} не равно 5")
Случайное число 8 не равно 5

Также допустимы составные условия: if a != b and b != c:

Частая проблема: сравнение чисел разных типов, например, 5 != "5". В Python 3 такое сравнение всегда даёт True, так как типы различны. Если ожидается, что строка может быть преобразована в число, необходимо явно привести тип.

print(5 != "5")         # True (разные типы)
print(5 != int("5"))    # False после преобразования
True
False

Расширенные примеры сравнения чисел на неравенство

Пример 1. Использование != в списковом включении для фильтрации чисел, не равных заданному.

Пример
numbers = [1, 2, 3, 4, 5, 3, 6]
filtered = [x for x in numbers if x != 3]
print(filtered)
[1, 2, 4, 5, 6]

Пример 2. Проверка, что все элементы коллекции отличны от нуля с помощью all.

Пример
values = (0.5, -1, 3.14, 0)
all_nonzero = all(v != 0 for v in values)
print(all_nonzero)  # False, так как последний элемент равен 0
False

Пример 3. Сравнение комплексных чисел.

Пример
a = 2 + 3j
b = 2 + 3j
c = 4 - 1j
print(a != b)  # False (равны)
print(a != c)  # True
False
True

Пример 4. Применение функции filter для отбора чисел, не равных определённому значению.

Пример
nums = [10, 20, 30, 40]
result = list(filter(lambda x: x != 20, nums))
print(result)
[10, 30, 40]

Пример 5. Обработка ошибки деления на ноль с проверкой делителя.

Пример
divisor = 0
try:
    if divisor != 0:
        print(10 / divisor)
    else:
        print("Деление на ноль невозможно")
except ZeroDivisionError:
    print("Исключение не возникло, так как проверка выполнена")
Деление на ноль невозможно

Пример 6. Демонстрация разницы между is not и != для больших целых чисел.

Пример
a = 9999
b = 9999
print(a is b)      # False (разные объекты)
print(a is not b)  # True
print(a != b)      # False (значения равны)

# Для кэшированных чисел:
c = 100
d = 100
print(c is d)      # True (интернирование)
False
True
False
True

Пример 7. Проверка неравенства с учётом погрешности через math.isclose (обратный результат).

Пример
import math
a = 0.1 * 3
b = 0.3
if not math.isclose(a, b, rel_tol=1e-9, abs_tol=0.0):
    print("Числа не равны")
else:
    print("Числа равны в пределах допуска")
Числа равны в пределах допуска

Пример 8. Сравнение с результатом математической операции.

Пример
import math
x = math.sqrt(2)
y = 2.0
if x != y:
    print(f"Корень из 2 ({x:.5f}) не равен 2")
Корень из 2 (1.41421) не равен 2

Пример 9. Использование != в условном выражении (тернарный оператор).

Пример
a = 7
result = "не ноль" if a != 0 else "ноль"
print(result)
не ноль

Пример 10. Сравнение чисел, полученных из разных источников (ввод пользователя).

Пример
user_input = input("Введите число: ")
try:
    value = float(user_input)
    if value != 42.0:
        print("Число не равно 42")
    else:
        print("Угадано!")
except ValueError:
    print("Ошибка: введено не число")
(при вводе '100')
Число не равно 42

Операция сравнения «не равно» для чисел в Python - comments

En
Python число не равно (python)