2017-03-16 119 views
1

我並沒有真正寫如何寫標題,但我有一個if語句和兩個變量ab。我希望它檢查變量a是否等於b,如果它變化0.1(表示它可以高於或低於0.1)。我試過的方法是什麼如下所示:if語句的變量略有不同

a = 1 
b = 0.9 


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

的問題是,這種方法似乎過於漫長,我想知道,如果他們是一個簡短的表達方式,我可以用它來做到這一點。

+0

試試你的意思的區別是** **正是0.1? –

回答

4

如果你想讓它變化,你應該不檢查平等,但小於或等於。像:

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 -ish。因此,某些配方產品的最輕微差異可能會有微小的差異,這將導致檢查結果爲False

3

您可以abs()功能

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