运算符中的Python不起作用

时间:2016-01-16 07:22:34

标签: python list boolean function

当我运行此代码时,没有任何显示。例如,我致电ind(1, [1, 2, 3]),但我没有得到整数13

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

2 个答案:

答案 0 :(得分: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])

这个输出:

13
12

因为e in L首先评估为True13 * True评估为13。没有查找布尔表达式的第二部分。

但是当用4调用函数时,会发生以下情况:

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

将此字符串和空字符串计算为False,因此返回or布尔表达式的第二部分。

答案 1 :(得分:0)

应该是

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

这里ind(1,[1,2,3])将打印13

这是我的证据,证明上述语法在我的机器中运行:

enter image description here