2024-09-30 08:26:43 发布
网友
我有一个if语句,必须检查这两个字符串是否存在自降线()可以是ex:123abc567或blaxyzbla:
if 'abc' or 'xyz' in self.line.lower(): print ('Present') else: print ('Not Present')
为什么这个返回我曾经是真的(打印现在),如果自降线()在字符串中不包含abc或xyz?在
我必须用这个来工作:
非常感谢
你所拥有的相当于:
if 'abc' or ('xyz' in self.line.lower()):
优先顺序表可以在这个Python documentation中找到。在图表的底部,您将看到in比or(或and)具有更高的优先级,因此,'xyz'被检查在self.line.lower()中,然后结果是or与{}进行了or。由于'abc'的计算结果为非零值,因此整个表达式始终为true。在
in
or
and
'xyz'
self.line.lower()
'abc'
我能想到的一种方法是使用嵌套的for in,根据我们正在搜索的字符串查找目标列表中的项。在
for in
x in line.lower() for x in ['abc', 'xyz']生成将为每个元素返回true或false的生成器。使用any来判断生成的列表中是否有任何元素是true,这意味着至少找到了其中一个元素。如果您想检查字符串中是否找到了所有项,可以将any替换为all。在
x in line.lower() for x in ['abc', 'xyz']
any
true
all
if 'abc' or 'xyz' in self.line.lower():
被分成两个不同的条件句,然后用or一起计算。在
'xyz' in self.line.lower()
两个值中的第一个将始终求值为True,因为它不是空字符串。在
所以你有if True or 'xyz' in self.line.lower(),它的值总是为真。因此,您的代码将始终print ('Present'),而永远不会print ('Not Present')。在
if True or 'xyz' in self.line.lower()
print ('Present')
print ('Not Present')
我想你应该用
你所拥有的相当于:
优先顺序表可以在这个Python documentation中找到。在图表的底部,您将看到}进行了
in
比or
(或and
)具有更高的优先级,因此,'xyz'
被检查在self.line.lower()
中,然后结果是or
与{or
。由于'abc'
的计算结果为非零值,因此整个表达式始终为true。在我能想到的一种方法是使用嵌套的
^{pr2}$for in
,根据我们正在搜索的字符串查找目标列表中的项。在x in line.lower() for x in ['abc', 'xyz']
生成将为每个元素返回true或false的生成器。使用any
来判断生成的列表中是否有任何元素是true
,这意味着至少找到了其中一个元素。如果您想检查字符串中是否找到了所有项,可以将any
替换为all
。在被分成两个不同的条件句,然后用
or
一起计算。在'abc'
'xyz' in self.line.lower()
两个值中的第一个将始终求值为True,因为它不是空字符串。在
所以你有
if True or 'xyz' in self.line.lower()
,它的值总是为真。因此,您的代码将始终print ('Present')
,而永远不会print ('Not Present')
。在我想你应该用
^{pr2}$相关问题 更多 >
编程相关推荐