Python-正确使用或函数

2024-04-20 05:58:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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"

Tags: or字符串代码in列表string单词事情
3条回答

正确的方法是:

if 'Bob' in text or 'Hello' in text:
    print 'IF'
else:
    print 'ELSE'

代码不起作用的原因是Python将其计算为:

if ('Bob') or ('Hello' in text):

因为'Bob'总是求值为True,所以您的函数总是打印'IF'

顺便说一下,使用strstring作为变量名是不好的,因为它覆盖了非常有用的内置方法str()或库string

按照它的编写方式,将有两个测试;第一个测试是if "Bob",第二个测试是"Hello" in stringif 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语句解释如下:

if ("Bob") or ("Hello" in string"):

由于"Bob"是非空字符串,因此语句的计算结果始终为True

你应该用一些像

if "Bob" in string or "Hello" in string:

或者

if any(map(lambda x: x in string, ["Bob", "Hello"]))

如其他答案中所述,您可能希望重新考虑使用变量名string,因为它与Python之一standard libraries冲突。

相关问题 更多 >