2016-12-22 153 views
1

我在做一些基本的字符串操作和我遇到一些非常有趣和混亂傳來:「在」檢查不工作的if語句

str= "HELLO WORLD" 
x="LL" 

t = x in str 
print t 

if x in str == True: 
    print "TRUE" 

當它運行時,它目前只有一次打印誠然,上第一份印刷聲明。人們會認爲,兩者都會按照邏輯和幾乎在語法上打印出來,但它們卻是一樣的,但卻沒有。我不明白這背後的推理,尤其是考慮到Python應該如何直觀。

+2

FWIW,'== True'完全是多餘的,可以/應該省略。 – deceze

+0

use without == == True' - 'if in x in str:' - now it is as'if if in(str == True):' – furas

+3

@furas:不,如果這樣解析,是一個'TypeError'。 'in'和'=='實際上應用比較鏈接,就像'1 user2357112

回答

1

保護你的病情到括號:

if (x in str) == True: 
    print("TRUE") 

更妙的是:它是多餘的,以比較True

if x in str: 
    print("TRUE") 

這就是說,它是怎麼一回事,因爲運算符優先級:

x in (str == True) 

無效(ca沒有迭代布爾值)

x in str == True 

是有效的,但返回False。我必須承認,我仍然對此感到困惑......

編輯:只看到了重複,現在我明白了。第一課:當你有疑問時,一定要用括號保護你的表情。