对于略有变化的变量的 if 语句



我真的不知道如何写标题,但我有一个if语句和两个变量ab。我希望它检查变量a是否等于b或者它是否变化了 0.1(这意味着它可以高于或低于 a 0.1)。我尝试的方式如下所示:

a = 1
b = 0.9

if (a == b) or (a == b + 0.1) or (a == b - 0.1):
print "it worked"

问题是这种方法似乎太长了,我想知道是否有更短的方法可以用来做到这一点。

如果您希望它发生变化,则不应检查相等性,而应检查小于或等于。喜欢:

if b-0.1 <= a <= b+0.1:
# ...
pass

或者:

if -0.1 <= a-b <= 0.1:
# ...
pass

后者会更有效一些,因为差值只计算一次。

第一个语句(a == b)是不必要的,因为它是由上面暗示的。

此外,请注意,无论如何检查浮点的相等性通常不是一个好主意0.1不能完全表示0.1所以它是0.0999....0.1000...1的东西。结果,最轻微的某个公式的乘积可能会有微小的差异,这将导致检查False

你可以尝试使用abs()函数

if abs(a-b) <= 0.1:
pass

最新更新