Не нужно ли что-то вроде == 1?
Нет, это не так.
См. https://docs.python.org/3/reference/expressions.html#booleans - if
работает с результатом любое выражение ; он не должен быть строгим True и False, и при этом не должен быть задействован какой-либо оператор сравнения.
В контексте логических операций , а также когда выражения используются операторами потока управления [например, если], следующие значения интерпретируются как ложные: False, None, цифра c ноль (0) всех типов, а также пустые строки и контейнеры (включая строки, кортежи, списки, словари, наборы и frozensets). Все остальные значения интерпретируются как истина.
Соответствующие случаи: %
возвращает ноль или ненулевое значение.
Ноль считается выражением false-y, а ненулевое является выражением true-y.
if 0:
print("Not here!")
if 1:
print("Here!")
Таким образом, код эквивалентен использованию явного сравнения:
if ((x + y) % 3) != 0: # eg. if the remainder is 1 or 2 (but not 0),
m = m * x # as non-zero numeric is truth-y