Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么python会忽略条件的第一部分?_Python_Logical Operators - Fatal编程技术网

为什么python会忽略条件的第一部分?

为什么python会忽略条件的第一部分?,python,logical-operators,Python,Logical Operators,假设我有以下代码: target = 'abc1234y' if ('x' and 'y') in target: print('x and y are in target') 为什么目标中的if('x'和'y')为真 为什么这段代码不产生错误 为什么牙套没有效果 这似乎不符合逻辑,因为如果('x'和'y')=true,那么('y'和'x')也应该为true,但事实并非如此 同时,如果目标中的表达式('y'和'x')为假,您似乎混淆了和运算符的工作原理 'x' and 'y' Out[

假设我有以下代码:

target = 'abc1234y'
if ('x' and 'y') in target:
    print('x and y are in target')
为什么目标中的
if('x'和'y')为真

为什么这段代码不产生错误

为什么牙套没有效果

这似乎不符合逻辑,因为如果
('x'和'y')=true
,那么
('y'和'x')
也应该为true,但事实并非如此


同时,如果目标
中的表达式('y'和'x')为假,您似乎混淆了
运算符的工作原理

'x' and 'y'
Out[1]: 'y'


因此,在第一种情况下,您需要检查是否存在
y
。相反,检查字符串中是否存在
x

您似乎混淆了
运算符的工作方式

'x' and 'y'
Out[1]: 'y'


因此,在第一种情况下,您需要检查是否存在
y
。反过来,您检查是否在字符串中存在“代码> x/CODE”。

这里有两件事要考虑:

如何处理字符串
'x'和'y'
不是
True

'x'和'y'
'y'
,这看起来可能会让人困惑,但从总体上看
的工作原理是有道理的:

  • a和b
    返回
    b
    如果a为
    True
    ,否则返回
    a
  • a或b
    返回
    a
    如果a为
    True
    ,否则返回
    b
因此:

  • 'x'和'y'是
    'y'
  • 'x'或'y'是
    'x'
括号的作用是什么 括号在if语句中确实有作用<
中的code>的优先级高于
意味着如果您编写

if 'x' and 'y' in target:
它的含蓄含义与

if 'x' and ('y' in target):
它将只检查y是否在目标字符串中。所以,使用

if ('x' and 'y') in target:
会有效果的。您可以在中看到整个运算符先例表

解决方案 为了实现您想要做的事情,@Prem和@Olga已经给出了两个很好的解决方案:

if 'y' in target and 'x' in target:


这里有两件事要考虑:

如何处理字符串
'x'和'y'
不是
True

'x'和'y'
'y'
,这看起来可能会让人困惑,但从总体上看
的工作原理是有道理的:

  • a和b
    返回
    b
    如果a为
    True
    ,否则返回
    a
  • a或b
    返回
    a
    如果a为
    True
    ,否则返回
    b
因此:

  • 'x'和'y'是
    'y'
  • 'x'或'y'是
    'x'
括号的作用是什么 括号在if语句中确实有作用<
中的code>的优先级高于
意味着如果您编写

if 'x' and 'y' in target:
它的含蓄含义与

if 'x' and ('y' in target):
它将只检查y是否在目标字符串中。所以,使用

if ('x' and 'y') in target:
会有效果的。您可以在中看到整个运算符先例表

解决方案 为了实现您想要做的事情,@Prem和@Olga已经给出了两个很好的解决方案:

if 'y' in target and 'x' in target:


因为它只检查目标中的“y”。 你需要这样的东西:

target = 'abc1234y'
if 'y' in target and 'x' in target:
    print('x and y are in target')

因为它只检查目标中的“y”。 你需要这样的东西:

target = 'abc1234y'
if 'y' in target and 'x' in target:
    print('x and y are in target')

您可能想改用
all

如果全部(目标中的c代表['x','y']):。。。

您可能希望改用
all

如果全部(目标中的c代表['x','y']):。。。


为什么它会忽略大括号呢?@0rt它不会忽略大括号,
('x'和'y')
'y'
所以你的语句所做的就是目标中的
'y'
大括号说,应该先评估条件。也许你想测试“如果目标中的'x'和目标中的'y'”.我想了解“x”和“y”的行为。它是一个已知的和被通缉的行为还是仅仅考虑了一些副作用?为什么它忽略了括号?@它不忽略括号,<代码>(‘x’和‘y’)< /> >是代码> y′/代码>,所以你的所有语句在目标
中都是<代码> 'y '。括号表示,条件应该首先被评估。也许你想测试一下。“如果目标中的“x”和目标中的“y”“。我想了解‘x’和‘y’的行为。这是一个已知的和被通缉的行为还是仅仅考虑一些副作用?我同意下层投票只是随机的。答案看起来是正确的。我不确定答案有什么问题。我对python中关于行为的精彩解释投了赞成票。因此,在python中,&?@0rt
以及
&
的行为与python中的行为完全不同<代码>和
是合乎逻辑的,
是一点一滴的。你能解释一下为什么大括号对表达没有影响吗?我同意反对票只是随机的。答案看起来是正确的。我不确定答案有什么问题。我对python中关于行为的精彩解释投了赞成票。因此,在python中,&?@0rt
以及
&
的行为与python中的行为完全不同<代码>和
是合乎逻辑的,
是一点一滴的。你能解释一下大括号为什么对表达式没有影响吗?大括号为什么没有影响是什么意思?。是的。区别在于目标中的
('x'和'y')和
目标中的'x'和('y')
。他们非常不同!你能用语言解释一下你想比较什么吗?因为它不是“x和y在目标字符串中”大括号没有效果意味着我期望('x'和'y')意味着“x”和'y'不是某处的x和'y'@0rt不幸的是编程不是这样工作的,你需要在目标中说
'x',在目标中说'y'
或类似的话effect@0rt不阅读我发布的第一条评论,彻底阅读运算符优先级,也可能是什么意思大括号为什么没有效果?。是的。差异在