我很难理解这个逻辑:
>>> text = 'ay_118724981.jpg'
>>> 'jpg' in text
True
>>> 'png' in text
False
>>> if 'png' not in text or 'jpg' not in text or 'jpeg' not in text:
... print('True')
... else:
... print('False')
...
True
>>>
我很困惑'因为if声明会导致错误,因为' jpg' 在文中。当文本中没有任何内容时,它应该给我True only 。正确吗?
答案 0 :(得分:3)
它解析为('png' not in text) or ('jpg' not in text) or ('jpeg' not in text)
。
其中一个条件为真('png'不在text
中),因此它的计算结果为true。您可以使用and
答案 1 :(得分:0)
我很困惑[因为] if语句应该导致False,因为'jpg'在文本中。它只有在文本中没有一个时才能给我真实。正确吗?
不,如果操作数中的一个或两个为or
,则True
运算符为True
。所以从现在起,'jpg'
不在文本中,或'png'
不在文本中,或者jpeg
不在文本中,测试成功
您想要的是and
运算符。 x and y
为True,仅当两个操作数(x
和y
)不在文本中时。所以我们可以使用:
if 'png' not in text and 'jpg' not in text and 'jpeg' not in text:
print('True')
else:
print('False')
由于它可能令人困惑,因为这是一个长表达式,我们也可以在这里使用all(..)
内置函数:
if all(part not in s for part in ['png', 'jpg', 'jpeg']):
print('True')
else:
print('False')
因此,只有当所有这些part
不在s
中时,条件才会成功。