如何在Python中使用boolean“and”

2024-04-24 05:29:55 发布

您现在位置:Python中文网/ 问答频道 /正文

在C中,我们可以使用&&(boolean and)如下:

int i = 5;
int ii = 10;
if(i == 5 && ii == 10) {
    Console.WriteLine("i is 5, and ii is 10");
}
Console.ReadKey(true);

但用python试试:

i = 5
ii = 10
if i == 5 && ii == 10:
    print "i is 5 and ii is 10";      

我得到一个错误:SyntaxError: invalid syntax

如果使用单个&,至少不会出现语法错误。如何在Python中执行布尔值&&


Tags: andtrueifis错误consoleintii
3条回答

试试这个:

i = 5
ii = 10
if i == 5 and ii == 10:
      print "i is 5 and ii is 10"

编辑:哦,最后一行不需要分号(编辑以将其从我的代码中删除)。

要使用的正确运算符是关键字“或”和“和”,在您的示例中,正确的表达方式是:

if i == 5 and ii == 10:
    print "i is 5 and ii is 10"

您可以参考"Boolean Operations" section in the language reference中的详细信息。

如前所述,“&;”在python中执行按位and操作,就像在C#中一样。and&&运算符的适当等价项。

因为我们处理的是布尔值(i == 5Trueii == 10也是True),所以您可能想知道为什么这两种方法都不起作用(将True作为整数处理仍然意味着True&True是真值),或者抛出异常(例如,禁止对布尔类型执行按位操作)

原因是运算符优先。“and”运算符的绑定比==更松散,因此表达式“i==5 and ii==10”相当于“(i==5) and (ii==10)

但是,按位&的优先级高于“==”(因为您不希望像“a & 0xff == ch”这样的表达式表示“a & (0xff == ch)”),因此该表达式实际上将被解释为:

if i == (5 & ii) == 10:

这是使用python的运算符链式来表示:i i的值和5的值是否等于i和10。显然这永远不会是真的。

如果你用括号来强制优先权,你会得到(看起来)正确的答案,所以:

if (i==5) & (ii=10)

会导致报表被打印。但是,这样做是错误的-“&”与“and”有许多不同的语义(优先级、短循环、带整数参数的行为等等),所以幸运的是,您在这里捕获到了这个,而不是被愚弄,直到它产生不太明显的错误。

相关问题 更多 >