如何在 Python 中比较精度的整数?

How to compare integers with accuracy in Python?

我有一个颜色元组。例如,(218、174、84)。任务是将每个红色、绿色和蓝色值增加一些增量,然后将其与精度 1 进行比较。我如何以 Python 方式执行此操作?你知道最佳实践吗?

颜色:(218、174、84) 增量:5

对于红色值 222、223、224 是合法的。绿色:178、179、180,蓝色:88、89、90。

def valid_color(orig_color, new_color, increment):
    return all(c1 + increment - 1 <= c2 <= c1 + increment + 1 for c1, c2 in zip(orig_color, new_color))

使用zip()将原始颜色的成分与您要比较的颜色配对。然后使用比较运算符测试每个组件是否有效。

如果您想使用 python 魔法并且只使用 ==,您可以这样做:

class Color(tuple):
    def __init__(self, *_, inc=0):
        self.inc = inc

    def __eq__(self, other):
        return all(c1 + self.inc - 1 <= c2 <= c1 + self.inc + 1 for (c1, c2) in zip(self, other))


c = Color((1, 2, 3), inc=5)
c2 = Color((5, 6, 8))
print(c == c2)