2014-03-27 59 views
0

由於某種原因,此代碼不適用。它適用於'和'命令,但我不完全確定如何使用'或'。我當前的代碼:如何在python中正確使用'或'命令

if (response1 not in symbols or letters): 
    print("You did something wrong") 
+0

見http://stackoverflow.com/questions/20002503/why-does-ab-or-c-or-d-always-evaluate-to-true和http://stackoverflow.com/questions/15112125/if-x-or-y-or-z-blah –

+4

有時我想知道用'&&'和'||'代替''是否會更好? '和'或',只是爲了讓人們意識到經營者不會做英語連詞所做的十件事情。 – user2357112

回答

4

Python中的or(和大多數編程語言爲此事)不喜歡「或」從語言。 當你說

if (response1 not in symbols or letters) 

的Python實際上將其解釋爲

if ((response1 not in symbols) or (letters)) 

這是不是你想要的。所以你應該做的是:

if ((response1 not in symbols) and (response1 not in letters)) 
+1

@ user3468137:除了這個答案,您還可以閱讀[表達式摘要文檔](http://docs.python.org/2/reference/expressions.html#expressions)。特別是[布爾運算](http://docs.python.org/2/reference/expressions.html#boolean-operations),[表達式評估順序](http://docs.python.org/2/reference/expressions .html#evaluation-order)和[Operator Precedence](http://docs.python.org/2/reference/expressions.html#operator-precedence) – vaibhaw

1

or是一個邏輯運算符。如果or之前的部分爲真,則返回該部分,如果不是,則返回第二部分。

所以在這裏,要麼response1 not in symbols爲真,然後返回,否則返回letters。如果letters中有東西,那麼它本身就是真實的,並且if語句會認爲它是真的。

您正在尋找

if (response1 not in symbols) and (response1 not in letters): 
    print("You did something wrong") 
相關問題