布尔值

Booleans Values

提问人:Kondwani Paul Kufeyani 提问时间:11/14/2023 最后编辑:GuyKondwani Paul Kufeyani 更新时间:11/15/2023 访问量:46

问:

如果以下变量表示以下布尔值,则将全面评估以下哪项,第一个选项将被选中,包括第二个选项

a = True
b = False 

not a or b
a and b
a or b
not and b
b and a
b or a

我尝试应用布尔原则,或者,似乎我仍然无法正确对待它,失败了。我评估了以下选项

not a or b **short circuit** 

a and b **full evaluation** 

a or b **short circuit**

not a and b **full evaluation**

b and a **short circuit**

b or a **full evaluation**
python 逻辑 boolean-logic boolean-expression

评论

2赞 Scott Hunter 11/14/2023
了解您是如何得出这些结论的会有所帮助。
0赞 Guy 11/14/2023
你把答案换成了 和 。not a or bnot a and b
0赞 molbdnilo 11/14/2023
用 、 和 替换为左操作数,并考虑右操作数是否重要。(你会发现你对 和 以及 和 对得出了不同的结论。aTruenot aFalsebFalseFalse and bFalse and aFalse or bFalse or a
0赞 Barmar 11/15/2023
确认结果的最简单方法是将 和 替换为打印内容并返回 or 的函数。然后,您可以看到打印了哪些消息。abTrueFalse
1赞 Barmar 11/15/2023
我怀疑您的错误是由于对优先级的错误理解。它等价于 ,而不是因为具有比 和 更高的优先级。not a and b(not a) and bnot (a and b)notandor

答:

0赞 furas 11/15/2023 #1

您可以使用函数来查看执行了哪个函数,而不是变量。a = Trueb = Falseprint()

def a():
    print('a = True')
    return True
    
def b():
    print('b = False')
    return False

print('---')
print('not a or b')
print('result:', (not a()) or b())

print('---')
print('a and b')
print('result:', a() and b() )

print('---')
print('a or b')
print('result:', a() or b())

print('---')
print('not a and b')
print('result:', (not a()) and b())

print('---')
print('b and a')
print('result:', b() and a())

print('---')
print('b or a')
print('result:', b() or a())

结果:

--
not a or b
a = True
b = False
result: False
---
a and b
a = True
b = False
result: False
---
a or b
a = True
result: True
---
not a and b
a = True
result: False
---
b and a
b = False
result: False
---
b or a
b = False
a = True
result: True