Possible Duplicate:
OR behaviour in python:
可能是非常基本的,但我在四处搜索后有点卡住了。对我来说,这行代码应该导致它打印“ELSE”,因为字符串不包含任何一个单词。很显然,事情并没有那么简单,似乎也不知道为什么。我一定要把字符串拆分成一个列表,以便更容易搜索。我做错什么了?
string = "Johnny Was Here Yesterday"
string = string.split()
if "Bob" or "Hello" in string:
print "IF"
else:
print "ELSE"
正确的方法是:
代码不起作用的原因是Python将其计算为:
因为
'Bob'
总是求值为True
,所以您的函数总是打印'IF'
顺便说一下,使用
str
或string
作为变量名是不好的,因为它覆盖了非常有用的内置方法str()
或库string
。按照它的编写方式,将有两个测试;第一个测试是
if "Bob"
,第二个测试是"Hello" in string
。if str
对于任何非空字符串始终为true,因此if "Bob"
的计算结果始终为true。您可以使用
if ("Bob" in string) or ("Hello" in string):
或使用if any((x in string for x in ["Hello", "Bob"]):
来解决此问题。在Python中,非空字符串的计算结果为True。
您的
if
语句解释如下:由于
"Bob"
是非空字符串,因此语句的计算结果始终为True
。你应该用一些像
或者
如其他答案中所述,您可能希望重新考虑使用变量名
string
,因为它与Python之一standard libraries冲突。相关问题 更多 >
编程相关推荐