Python中带多个字符串的if语句

2024-09-30 08:26:43 发布

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

我有一个if语句,必须检查这两个字符串是否存在自降线()可以是ex:123abc567或blaxyzbla:

        if 'abc' or 'xyz' in self.line.lower():
            print ('Present')
        else:
            print ('Not Present')

为什么这个返回我曾经是真的(打印现在),如果自降线()在字符串中不包含abc或xyz?在

我必须用这个来工作:

^{pr2}$

非常感谢


Tags: or字符串inselfifline语句lower
2条回答

你所拥有的相当于:

if 'abc' or ('xyz' in self.line.lower()):

优先顺序表可以在这个Python documentation中找到。在图表的底部,您将看到inor(或and)具有更高的优先级,因此,'xyz'被检查在self.line.lower()中,然后结果是or与{}进行了or。由于'abc'的计算结果为非零值,因此整个表达式始终为true。在

我能想到的一种方法是使用嵌套的for in,根据我们正在搜索的字符串查找目标列表中的项。在

^{pr2}$

x in line.lower() for x in ['abc', 'xyz']生成将为每个元素返回true或false的生成器。使用any来判断生成的列表中是否有任何元素是true,这意味着至少找到了其中一个元素。如果您想检查字符串中是否找到了所有项,可以将any替换为all。在

if 'abc' or 'xyz' in self.line.lower():

被分成两个不同的条件句,然后用or一起计算。在

  • 'abc'
  • 'xyz' in self.line.lower()

两个值中的第一个将始终求值为True,因为它不是空字符串。在

所以你有if True or 'xyz' in self.line.lower(),它的值总是为真。因此,您的代码将始终print ('Present'),而永远不会print ('Not Present')。在

我想你应该用

^{pr2}$

相关问题 更多 >

    热门问题