当我运行这段代码时,没有任何显示。例如,我调用 ind(1, [1, 2, 3])
,但我没有得到整数 13
。
def ind(e, L):
if (e in L == True):
print('13')
else:
print('12')
最佳答案
运算符优先级。如果你将 (
and )
放在 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])
编辑:作为奖励,您甚至可以使用 True
和 False
来保留/取消事物。以你的例子:
def ind(e, L):
print('13' * (e in L) or '12')
ind(1, [1, 2, 3])
ind(4, [1, 2, 3])
这个输出:
13
12
因为 L 中的 e
首先被评估为 True
而 13 * True
是 13
。 boolean 表达式的第二部分未查找。
但是当使用 4
调用函数时,会发生以下情况:
`13` * (e in L) or '12` -> `13` * False or '12' -> '' or '12' -> 12
因为空字符串的计算结果也为 False
,因此返回 or
boolean 表达式的第二部分。
关于运算符中的 Python 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34824578/