我练习学习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做错了。
答案 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
的实例,只是否定表达式。
请注意,如果您这样做,我最初提到的问题就不会出现在第一位。