Если я правильно понимаю ваш вопрос, вам просто необходимо знать, как лучше обрабатывать это сравнение, когда некоторые из сравнений могут быть недействительными. Образец, который я обычно вижу (и использую), должен проверять условия краев (если они могут быть довольно распространены) и обрабатывать их. Если никаких краевых условий не существует, вы можете перейти к стандартному процессу.
В данном конкретном случае у вас есть один краевой случай: когда один из ваших знаменателей равен нулю. Поэтому проверьте, равен ли любой из int1
, int2
, или int3
, и сделать что-то подходящее, если это так. Если их нет, вы можете продолжить сравнение своих отношений.
if not (int1 and int2 and int3):
do_something_with_zero_values()
elif (int4/int3) == (int3/int2) == (int2/int1): # This is now a safe operation
do_something()
Конечно, вы можете также использовать обработку исключений для борьбы с крайними случаями. Предположительно, вы обычно хотите использовать исключения только в «исключительных» обстоятельствах, поэтому, если нуль действительно является законным значением для этих переменных, я бы рекомендовал не осмысливать его как исключение. См. this question для получения дополнительной информации об этом обсуждении.
как насчет «если int2 = 0 и (int1!/int2) == (int3/int2): "... – Pascal
Не относится к вашему вопросу, но поскольку это Python, ваш отступ имеет значение. Устраните это. – Bucket
@PascalBeyeler. Отредактировал мой вопрос –