如何使用布尔';和';用Python

如何使用布尔';和';用Python,python,boolean-logic,Python,Boolean Logic,在C#中,我们可以像这样使用&&(布尔and): int i = 5; int ii = 10; if(i == 5 && ii == 10) { Console.WriteLine("i is 5, and ii is 10"); } Console.ReadKey(true); #!/usr/bin/python foo = True; bar = True; if foo and bar: print "both are true"; 但请尝试使用pyt

在C#中,我们可以像这样使用
&&
(布尔and):

int i = 5;
int ii = 10;
if(i == 5 && ii == 10) {
    Console.WriteLine("i is 5, and ii is 10");
}
Console.ReadKey(true);
#!/usr/bin/python
foo = True;
bar = True;
if foo and bar:
    print "both are true";
但请尝试使用python:

i = 5
ii = 10
if i == 5 && ii == 10:
    print "i is 5 and ii is 10";      
我收到一个错误:
SyntaxError:invalid syntax

如果我使用一个
&
,至少我没有语法错误。如何在Python中执行布尔值
&&

尝试以下操作:

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

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

&
用于按位比较。改用
。顺便说一句,print语句末尾不需要分号。

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

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

您可以参考中的详细信息。

您也可以将它们作为一对进行测试

if (i,ii)==(5,10):
    print "i is 5 and ii is 10"

在python中,使用
而不是像这样使用
&&

int i = 5;
int ii = 10;
if(i == 5 && ii == 10) {
    Console.WriteLine("i is 5, and ii is 10");
}
Console.ReadKey(true);
#!/usr/bin/python
foo = True;
bar = True;
if foo and bar:
    print "both are true";
这张照片是:

both are true
正如前面指出的,python中的“&”执行按位and运算,就像在C#中一样
是与
&&
运算符相对应的等价项

由于我们处理的是布尔值(
i==5
True
,而
ii==10
也是
True
),您可能会想知道,为什么这样做根本不起作用(True被视为整数应该仍然意味着True&True是真值),或者抛出异常(例如,禁止对布尔类型进行逐位操作)

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

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

if i == (5 & ii) == 10:
它使用python的操作符链接来表示:ii和5的值是否等于i和10。显然,这永远不会是真的

如果包含括号以强制优先,您实际上(似乎)会得到正确的答案,因此:

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

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

我的书呆子想指出,你应该说“tuple”而不是“couple”,但我知道你的意思。:)couple不是tuple?如果我们想要组合代码行,分号很有用。组合行不是“pythonic”虽然你可以像罗德里戈说的那样把线条组合起来,但它不是“蟒蛇式的”。因为在这个特殊的例子中分号没有任何作用,所以我对它的冗余性做了评论。我假设提问者是python新手,不想对我关于什么是“pythonic”和分号的回答感到臃肿。更确切地说,我们拼写“&&”为“and”。我们在C#和python中都将“&”拼写为“&”,它们执行的是按位的and运算,而不是逻辑的and运算。当然,您是对的。抱歉。每当我看到
,我都会找我的括号