在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中执行布尔值&&
?
试试这个:
编辑:哦,最后一行不需要分号(编辑以将其从我的代码中删除)。
要使用的正确运算符是关键字“或”和“和”,在您的示例中,正确的表达方式是:
您可以参考"Boolean Operations" section in the language reference中的详细信息。
如前所述,“&;”在python中执行按位and操作,就像在C#中一样。
and
是&&
运算符的适当等价项。因为我们处理的是布尔值(
i == 5
是True
,ii == 10
也是True
),所以您可能想知道为什么这两种方法都不起作用(将True作为整数处理仍然意味着True&True是真值),或者抛出异常(例如,禁止对布尔类型执行按位操作)原因是运算符优先。“
and
”运算符的绑定比==
更松散,因此表达式“i==5 and ii==10
”相当于“(i==5) and (ii==10)
”但是,按位
&
的优先级高于“==
”(因为您不希望像“a & 0xff == ch
”这样的表达式表示“a & (0xff == ch)
”),因此该表达式实际上将被解释为:这是使用python的运算符链式来表示:i i的值和5的值是否等于i和10。显然这永远不会是真的。
如果你用括号来强制优先权,你会得到(看起来)正确的答案,所以:
会导致报表被打印。但是,这样做是错误的-“
&
”与“and
”有许多不同的语义(优先级、短循环、带整数参数的行为等等),所以幸运的是,您在这里捕获到了这个,而不是被愚弄,直到它产生不太明显的错误。相关问题 更多 >
编程相关推荐