2016-12-22 114 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。我必须承认,我仍然对此感到困惑......

编辑:只看到了重复,现在我明白了。第一课:当你有疑问时,一定要用括号保护你的表情。