How to use boolean 'and' in Python
在c中,我们可以使用
1 2 3 4 5 6 | int i = 5; int ii = 10; if(i == 5 && ii == 10) { Console.WriteLine("i is 5, and ii is 10"); } Console.ReadKey(true); |
但是用python试试:
1 2 3 4 | i = 5 ii = 10 if i == 5 && ii == 10: print"i is 5 and ii is 10"; |
我得到一个错误:
如果我使用单个
试试这个:
1 2 3 4 | i = 5 ii = 10 if i == 5 and ii == 10: print"i is 5 and ii is 10" |
编辑:哦,你在最后一行不需要分号(编辑将其从我的代码中删除)。
如前所述,"&;"在python中执行按位和操作,就像在c中一样。
由于我们处理的是布尔型(
原因是运算符优先级。"
但是,按位
1 | if i == (5 & ii) == 10: |
这就是使用python的操作符chaining的意思:i i和5的值等于i和10吗?显然,这永远不会是真的。
如果你用括号来强制优先级,你会得到(表面上)正确的答案,所以:
1 | if (i==5) & (ii=10) |
会导致报表被打印。但是,这是错误的,因为"EDOCX1"(0)与"EDOCX1"(1)有许多不同的语义(优先级、简短的推理、带有整型参数的行为等),所以幸运的是,您在这里抓住了这个问题,而不是被愚弄,直到它产生不那么明显的错误为止。
要使用的正确运算符是关键字"或"和"and",在您的示例中,正确的表示方法是:
1 2 | if i == 5 and ii == 10: print"i is 5 and ii is 10" |
您可以在语言引用的"布尔操作"部分中引用详细信息。
您也可以将它们作为一对进行测试。
1 2 | if (i,ii)==(5,10): print"i is 5 and ii is 10" |
在python中,使用
1 2 3 4 5 | #!/usr/bin/python foo = True; bar = True; if foo and bar: print"both are true"; |
印刷品:
1 | both are true |