Python:使用AND和OR和.FIND()方法

2024-04-19 08:05:27 发布

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

假设我在解释器中键入以下代码:

var1 = 'zuuzuu'

现在假设我键入:

var1.find('a')

解释器返回-1。我能理解,因为子串还没有找到。但请帮助我理解这一点:

var1.find('a' or 'z') #case 1

返回-1

但是

var1.find('a' and 'z') #case 2

返回0

根据我脑子里的逻辑,解释器应该为案例2返回-1,因为子字符串“a”和“z”不在字符串中。在案例1中,应返回0,因为“z”是一个子字符串。

谢谢


Tags: orand字符串代码键入逻辑find解释器
2条回答

表达式'a' or 'z'总是产生'a'。表达式'a' and 'z'总是产生'z'。它不是某种用于将查询放入容器的DSL,而是一个简单的布尔表达式(并且find是用它的结果调用的)。如果你想说“字符串中有‘a’或‘z’”,你需要这样做

var1.find('a') != -1 or var.find('z') != -1

对于第二个(字符串中的“a”和“z”):

var1.find('a') != -1 and var.find('z') != -1

这是因为find方法实际上不支持orand,它只支持查询字符串。

那么,到底发生了什么?好吧,结果是orand是可以在字符串上执行的运算符。

'a' and 'z' --> 'z'
'a' or 'z'  --> 'a'

所以你得到了它,你基本上只是像平常一样搜索'a''z'

相关问题 更多 >