假设我们有以下代码来检测文档的星级。如果星级评定为50.0,它将使用星级"指标=真",我们希望在这种情况下"做点什么",如果星级评定为10.0,它将使用星级"指标=假",我们希望在这种情况下"做点别的"。
stars_indicator = sentiment_indicator = None
if document[stars] == 50.:
stars_indicator = True
elif document[stars] == 10.:
stars_indicator = False
我们如何检查我们是应该"做些什么"还是"做些别的"?
检查是不是真的很简单
if stars_indicator:
# do something
检查它是错误还是无错误的简单方法是
if not stars_indicator:
# do something else
但是这样的话,if条件就不能区分这两个选项,如果stars_指示错误或者没有,它就会"做其他的事情"。
在python中可能有重复的变量,如果变量为none、true或false,如何测试?
一个更好的方法是用is明确地检查错误或无:
if stars_indicator is None:
我不是想改变这段代码的逻辑(实际上是这样做的),而是要区分这三个选项——真、假或无
虽然其他人已经回答了如何检查您的变量是否为真、假或无,但我想指出,在您的代码片段中,如果您只是在没有星号标记的情况下工作,可能会更容易:
if document[stars] == 50.:
# Do what you would do if stars_indicator was True
elif document[stars] == 10.:
# Do what you would do if stars_indicator was False
else:
# Do what you would do if stars_indicator was None
通过这种方式,您不需要将结果编码为一个变量,只需再次解释变量即可。当然,这都是基于您提供的代码片段。
你能解释一下我在哪里修改了你的代码逻辑吗?基于您提供的示例,它仍然应该这样做,而不需要区分真、假或无。当然,如果您的真正代码更复杂,它可能不是首选的选项,但我仍然认为这个答案对那些查找它却不知道可能有更简单的选项的人很有用。所以我不太明白投反对票的原因。
我是想回复另一个意见,我的错。
这种问题的正确方法是使用isInstance()。
if isinstance(stars_indicator, bool) and not stars_indicator:
# do something else
isInstance(stars_indicator,bool)将首先确保变量不是none,并且只会确保它是false。
这是我曾经遇到的一个问题,我想分享它的解决方案。