2011-11-07 127 views
2

我正在做一個Q & Python中的腳本。它獲取raw_input,並將其設置爲問題。我試過if 'var1' and 'var2' in theQuestion:,但它尋找的是字符串,而不是兩者。有沒有一種方法可以在一個「if」語句中完成這項工作? (不是'如果x:如果y:那麼z)。如果'z'中'x'和'y':

+0

可能的重複[python運算符優先級的in和比較](http://stackoverflow.com/questions/7479808/python-operator-precedence-of-in-and-comparision) –

回答

12

and是一個邏輯與,而不是一個自然語言。因此,您的代碼被解釋爲:

'var1' and 'var2' in theQuestion 
True and 'var2' in theQuestion # Since bool('var1') == True 
      'var2' in theQuestion 

你想在兩個測試的邏輯連接AND:

if 'var1' in theQuestion and 'var2' in theQuestion: 

另外,對於大量的測試:

if all(k in theQuestion for k in ('var1', 'var2')): 
+6

或者更一般地說,'如果所有(var中的問題爲var in vars)'在這種情況下,'vars'是'(var1,var2)'。 – agf

+1

@agf補充一點,儘管它更像是一個如何在Python中編寫混淆代碼的例子。 – phihag

+1

如果你不知道有多少變數,你會怎麼寫?或者如果有十個變量?我認爲它是完全可讀的。 「如果以下所有內容都是真的:變量在變量列表中的每個變量的問題中都存在」 – agf

2

如何約:

if 'x' in z and 'y' in z: 
    ... do something ... 
相關問題