Python 布尔和逻辑运算符
Python Boolean and Logical Operators
给定两个输入布尔值,我想打印出以下结果:
True True -> False
True False -> False
False True -> False
False False -> True
我试过这样做:
if boolInput1 and boolInput2 == True:
print(False)
elif boolInput1 == True and boolInput2 == False:
print(False)
elif boolInput1 == False and boolInput2 == True:
print(False)
elif boolInput1 and boolInput2 == False:
print(True)
但它不起作用,因为这是输出:
Test Input Expected Actual
1 True True False False
2 True False False False
3 False True False False
4 False False True False
我试过在线搜索答案,但找不到任何答案。
这个怎么样?
print(not boolInput1 and not boolInput2)
您的代码存在问题:
elif boolInput1 and boolInput2 == False:
print(True)
如果这样写就可以了:
elif boolInput1 == False and boolInput2 == False:
print(True)
这条线尽管有同样的问题但工作正常,因为 if boolInput1
大致做了你想要的(检查真实值)。
if boolInput1 and boolInput2 == True:
这样写可能会更好,以便与您的其他检查更加一致:
if boolInput1 == True and boolInput2 == True:
boolInput1 and boolInput2 == False
并没有按照你的想法去做。 ==
比 and
绑定得更紧密,因此当您想要 "is boolInput1 False and boolInput2 False too?" 时,您正在测试 "is boolInput1 (truthy), and is boolInput2 equal to False",这将在 Python 中表达为 boolInput1 == False and boolInput2 == False
或更多, not boolInput1 and not boolInput2
.
真的,你让这件事变得比需要的更难了。您的所有代码都可以简化为:
print(not boolInput1 and not boolInput2)
或者提取 not
如果你愿意的话:
print(not (boolInput1 or boolInput2))
不需要 if
、elif
、else
或任何其他块。
一般来说,明确地比较 True
或 False
不是 Pythonic;只需使用隐式 "truthiness" 测试即可处理任何类型。由于无论如何你都需要 not
,最终结果将始终是 True
或 False
,即使输入根本不是布尔值,直接与 True
或 True
进行比较False
将使 2
、None
或 []
等输入的行为不同于它们在 "truthiness testing" 中的传统行为方式(它们是真值、假值和分别是假的)。
这可能会简单得多。
if bool1 or bool2:
print(False)
else:
print(True)
我相信你也可以
print(not(bool1 or bool2))
哪个更简单。
elif boolInput1 and boolInput2 == False:
并没有按照您的想法行事。
和 的每一侧都被评估为单独的布尔值。
浓缩计算机在该语句上所做的事情:
boolInput1 and boolInput2 == False
False and False == False
False and True
False #Does not enter if Statement
这应该向您表明您对所有 4 个逻辑实际上都是错误的,并且有办法将其搞砸。尽量避免 boolean == true
类的语句,只说 if boolean
工作版本:
if boolInput1 and boolInput2:
print(False)
elif boolInput1 and not boolInput2:
print(False)
elif not boolInput1 and boolInput2:
print(False)
elif not boolInput1 and not boolInput2:
print(True)
尽管根据您使用此代码的原因,还有更简单的方法来完成此操作。
给定两个输入布尔值,我想打印出以下结果:
True True -> False
True False -> False
False True -> False
False False -> True
我试过这样做:
if boolInput1 and boolInput2 == True:
print(False)
elif boolInput1 == True and boolInput2 == False:
print(False)
elif boolInput1 == False and boolInput2 == True:
print(False)
elif boolInput1 and boolInput2 == False:
print(True)
但它不起作用,因为这是输出:
Test Input Expected Actual
1 True True False False
2 True False False False
3 False True False False
4 False False True False
我试过在线搜索答案,但找不到任何答案。
这个怎么样?
print(not boolInput1 and not boolInput2)
您的代码存在问题:
elif boolInput1 and boolInput2 == False:
print(True)
如果这样写就可以了:
elif boolInput1 == False and boolInput2 == False:
print(True)
这条线尽管有同样的问题但工作正常,因为 if boolInput1
大致做了你想要的(检查真实值)。
if boolInput1 and boolInput2 == True:
这样写可能会更好,以便与您的其他检查更加一致:
if boolInput1 == True and boolInput2 == True:
boolInput1 and boolInput2 == False
并没有按照你的想法去做。 ==
比 and
绑定得更紧密,因此当您想要 "is boolInput1 False and boolInput2 False too?" 时,您正在测试 "is boolInput1 (truthy), and is boolInput2 equal to False",这将在 Python 中表达为 boolInput1 == False and boolInput2 == False
或更多, not boolInput1 and not boolInput2
.
真的,你让这件事变得比需要的更难了。您的所有代码都可以简化为:
print(not boolInput1 and not boolInput2)
或者提取 not
如果你愿意的话:
print(not (boolInput1 or boolInput2))
不需要 if
、elif
、else
或任何其他块。
一般来说,明确地比较 True
或 False
不是 Pythonic;只需使用隐式 "truthiness" 测试即可处理任何类型。由于无论如何你都需要 not
,最终结果将始终是 True
或 False
,即使输入根本不是布尔值,直接与 True
或 True
进行比较False
将使 2
、None
或 []
等输入的行为不同于它们在 "truthiness testing" 中的传统行为方式(它们是真值、假值和分别是假的)。
这可能会简单得多。
if bool1 or bool2:
print(False)
else:
print(True)
我相信你也可以
print(not(bool1 or bool2))
哪个更简单。
elif boolInput1 and boolInput2 == False:
并没有按照您的想法行事。
和 的每一侧都被评估为单独的布尔值。
浓缩计算机在该语句上所做的事情:
boolInput1 and boolInput2 == False
False and False == False
False and True
False #Does not enter if Statement
这应该向您表明您对所有 4 个逻辑实际上都是错误的,并且有办法将其搞砸。尽量避免 boolean == true
类的语句,只说 if boolean
工作版本:
if boolInput1 and boolInput2:
print(False)
elif boolInput1 and not boolInput2:
print(False)
elif not boolInput1 and boolInput2:
print(False)
elif not boolInput1 and not boolInput2:
print(True)
尽管根据您使用此代码的原因,还有更简单的方法来完成此操作。