为什么我的布尔值会在我预期True
时返回False
?
字符串a
是“7582 + group by 1,2; ERROR:File ACT2EST.SUMMARY_CFS.DATA不存在。”
我的代码表达式为"WARNING" and "ERROR" in a
;这评估为True
。
我将相同的代码"WARNING" and "ERROR" in b
应用于另一个字符串b = "if abc ; WARNING: message. ERROR Message."
,我的输出为True
,符合预期。
有人能让我知道我的代码出了什么问题吗?为什么用字符串运行它时我的输出是True而不是False?顺便说一句,我使用python 2.7
答案 0 :(得分:6)
是的,因为你不检查是否"警告"在字符串中;你检查的只是字符串的真值。你需要
"WARNING" in a and "ERROR" in a
逻辑运营商不以他们的英语方式分发他们的对象。
答案 1 :(得分:0)
如果你想获得幻想,你可以这样做:
a = "This is a demo text"
if any( x in a for x in ["This", "rocks", "scissors"] ):
print("Text contains any of This, rocks, scissors")
else:
print("Text has neither of This, rocks, scissors")
if all( x in a for x in ["This", "rocks", "scissors"] ):
print("Text contains all of This, rocks, scissors")
else:
print("Not all in!")
any
和all
是内置插件:
对iterables进行操作并检查iterable中的任何/所有是True
只有2个值,只需链接if "this" in a and "that" in a:
即可