我的布尔有什么问题 - 和

时间:2016-09-24 10:37:28

标签: python boolean

我练习学习Python编程,但我无法运行代码:

bool_four = -(1**2) < 2**0 and 10 % 10 <= 20 - 10 * 2 is True

该值有什么问题?

说明是:

让我们练习和。将每个变量分配给适当的布尔值。

将bool_one设置为等于False和False的结果

设置bool_two等于 - ( - ( - ( - 2)))== -2和4&gt; = 16 ** 0.5

的结果

将bool_three设为等于19%4的结果!= 300/10/10且为假

将bool_four设置为等于 - (1 2)&lt; 2 0和10%10 <= 20 - 10 * 2

将bool_five设置为等于True和True的结果

我编码的是:

bool_one = 3 * 4 == 3和20%2!= 0为假

bool_two = - ( - ( - ( - 2)))== -2和4&gt; = 16 ** 0.5为真

bool_three = 19%4!= 300/10/10和2 * 4 == 9为假

bool_four = - (1 2)&lt; 2 0和10%10 <= 20 - 10 * 2为真

bool_five = 2 + 3 == 5和3 // 3&gt; = 1为真

但是我对bool_four做错了。

1 个答案:

答案 0 :(得分:1)

代码运行得很好,如果你期望得到不同的结果,那么这是一个优先问题:

>>> -(1**2) < 2**0 and 10 % 10 <= 20 - 10 * 2 is True
False
>>> (-(1**2) < 2**0 and 10 % 10 <= 20 - 10 * 2) is True
True

通常用括号明确表示可以帮助你避免错误。 在这种特殊情况下发生的事情是:

>>> 0 <= 0 * 2 is True
False

这可能不是您所期望的。如果您想知道为什么会这样:Why does the expression 0 < 0 == 0 return False in Python?

PEP8风格指南涵盖了这样的内容。通常,在设置布尔标志时,只需直接使用表达式:

为:

x = (1 == 2) is True

好:

x = 1 == 2

当你真的想要一个布尔值来评估表达式时,不要测试结果是否为True的实例,只是评估表达式。

为:

y = (3*4==3 and 20%2!=0) is False

好:

y = not (3*4==3 and 20%2!=0)

当你真的想要一个布尔来评估否定表达式时,不要测试结果是否为False的实例,只是否定表达式。

请注意,如果您这样做,我最初提到的问题就不会出现在第一位。