if变量的语句稍有不同

时间:2017-03-16 10:27:32

标签: python variables if-statement

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

a = 1
b = 0.9


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

问题是这个方法看起来太长了我想知道它们是否是我用来做这个的更短的方法。

2 个答案:

答案 0 :(得分:4)

如果您希望变化,则不检查相等,但小于或等于。像:

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

或者:

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

后者将更有效率,因为差异仅计算一次。

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

此外请注意,通常检查与浮点的相等性通常不是一个好主意:0.1无法完全表示,因此0.10.0999....的内容或0.1000...1 - 是的。因此,最轻微的某些公式的乘积可能会有微小的差异,这将导致检查False

答案 1 :(得分:3)

您可以尝试使用abs()功能

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