假设我有以下代码:
target = 'abc1234y'
if ('x' and 'y') in target:
print('x and y are in target')
为什么if ('x' and 'y') in target
是真的?你知道吗
为什么这个代码不产生错误?你知道吗
为什么牙套没有效果?你知道吗
这似乎不符合逻辑,因为如果('x' and 'y') = true
,那么('y' and 'x')
也应该是真的,然而,事实并非如此。你知道吗
同时表达if ('y' and 'x') in target
是false
Tags:
因为它只检查目标中的“y”。 你需要这样的东西:
您似乎混淆了
AND
操作符的工作原理。你知道吗以及
所以在第一个例子中,您需要检查
y
是否存在。反过来,检查字符串中是否存在x
。你知道吗这里要考虑两件事:
and
如何处理字符串'x' and 'y'
不是True
。你知道吗'x' and 'y'
是'y'
,这看起来可能很混乱,但在研究and
和or
的一般工作方式时,它是有意义的:a and b
返回b
如果a是True
,else返回a
。你知道吗a or b
返回a
如果a是True
,else返回b
。你知道吗因此:
'x' and 'y'
是'y'
'x' or 'y'
是'x'
括号的作用
括号在if语句中确实有作用。
in
的优先级高于and
,这意味着它隐含的意思与
它只检查y是否在目标字符串中。所以,使用
会有效果的。您可以在the Python docs about Expressions中看到整个运算符先例表。你知道吗
解决方案
为了实现你想要的目标,@Prem和@Olga已经给出了两个很好的解决方案:
或者
相关问题 更多 >
编程相关推荐