2016-01-16 61 views
1

當我運行這段代碼時,什麼也沒有顯示出來。例如,我打電話給ind(1, [1, 2, 3]),但我沒有得到整數13Python中的運算符不起作用

def ind(e, L): 
    if (e in L == True): 
     print('13') 
    else: 
     print('12') 
+0

實際上你應該會收到一個錯誤。在Python中,它是「真」,而不是「真」。 – thefourtheye

+0

'L'就足夠了 –

+0

'如果L:'中的e就夠了。 –

回答

4

運算符優先級。如果你把()周圍e in L它會工作:

def ind(e, L): 
    if ((e in L) == True): 
     print('13') 
    else: 
     print('12') 

ind(1, [1, 2, 3]) 

但測試的True可以做到的(並且是通常的成語),而不True

def ind(e, L): 
    if (e in L): 
     print('13') 
    else: 
     print('12') 

ind(1, [1, 2, 3]) 

編輯完成的:作爲獎勵你甚至可以使用TrueFalse來保持/取消操作。隨着你的榜樣:

def ind(e, L): 
    print('13' * (e in L) or '12') 

ind(1, [1, 2, 3]) 

ind(4, [1, 2, 3]) 

這。OUPUTS:

13 
12 

因爲e in L已首先評估,以True13 * True13。不查找布爾表達式的第二部分。

但隨着4調用函數時,則將發生以下情況:

`13` * (e in L) or '12` -> `13` * False or '12' -> '' or '12' -> 12 

becase的和空字符串的計算結果爲False太多,因此返回or布爾表達式的第二部分。

+0

儘管在這裏可以使用''13'*(e,L)或'12',但對於不支持「*」的操作數起作用的更一般的解決方案是'在L和'13'或'12'中。或者,使用一個條件表達式使其更具可讀性:「'13''如果在L'else'12'中。另一種選擇是'('12','13')[儘管L'],儘管這可能是選項中最不可讀的。 –

0

應該

def ind(e, L): 
    if (e in L): 
     print ('13') 
    else: 
     print ('12') 

這裏IND(1,[1,2,3])將打印13

這是我的證明,上面的語法在我的機器上運行:

enter image description here

+2

我建議你測試一下。 – TigerhawkT3

+0

1)您不能將Python關鍵字'in'用作函數名稱(或任何其他名稱)。 2)你不需要圍繞'if'條件的括號,並且忽略它們是正常的Python風格。 –

+0

@ TigerhawkT3我在回答問題之前運行了整個事情。 –