python boolean_如何在Python中使用boolean’和’

本问题已经有最佳答案,请猛点这里访问。

在c中,我们可以使用&&(布尔和),如下所示:

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中执行布尔值&&?

试试这个:

i = 5

ii = 10

if i == 5 and ii == 10:

print"i is 5 and ii is 10"

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

如果我们想合并代码行,分号很有用。

不过,组合线条不是"Python式"的方式

正如罗德里戈所说,虽然你可以组合线条,但它不是"Python式的"。因为在这个特殊的例子中,分号根本没有作用,所以我对它的冗余性做了评论。我认为提问者对python来说是个新手,不想夸大我的答案,"pythonic"是什么,分号是什么。

如前所述,"&"在python中执行按位和操作,就像在c中一样。and是相当于&&运算符的适当值。

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

原因是运算符优先级。"and操作符比==绑定得更松散,因此表达式"i==5 and ii==10相当于"EDOCX1〔13]

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

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

这就是使用python的操作符chaining的意思:i i和5的值等于i和10吗?显然,这永远不会是真的。

如果你用括号来强制优先级,你会得到(表面上)正确的答案,所以:

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

会导致报表被打印。但是,这是错误的,因为"EDOCX1"(0)与"EDOCX1"(1)有许多不同的语义(优先级、简短的推理、带有整型参数的行为等),所以幸运的是,您在这里抓住了这个问题,而不是被愚弄,直到它产生不那么明显的错误为止。

要使用的正确运算符是关键字"或"和"and",在您的示例中,正确的表示方法是:

if i == 5 and ii == 10:

print"i is 5 and ii is 10"

您可以在语言引用的"布尔操作"部分中引用详细信息。

每当我看到and时,我都会问我的括号。

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

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

print"i is 5 and ii is 10"

我的书呆子想指出你应该说"tuple"而不是"couple",但我知道你的意思。:)

一对不是一对吗?

&用于位比较。用and代替。顺便说一句,在print语句的末尾不需要分号。

在python中,使用and而不是&&,如下所示:

#!/usr/bin/python

foo = True;

bar = True;

if foo and bar:

print"both are true";

印刷品:

both are true

更准确地说,我们将"&&"拼写为"and"。我们将"&"拼写为"&",在C和python中,它们执行的是位操作,而不是逻辑操作。

当然,你是对的。道歉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值