Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:if行[1].upper().find(brand)=-1:_Python - Fatal编程技术网

python:if行[1].upper().find(brand)=-1:

python:if行[1].upper().find(brand)=-1:,python,Python,这两种说法相等吗 if row[1].upper().find(brand)!=-1: 及 不,他们不平等。在Python中,任何非零数字都被视为True,因此,如果表达式的计算结果为-1,则第二条语句将被视为True,如果表达式的计算结果为0(当它应该为True时),则第二条语句将被视为false 使用第一句话。否 只有当find()返回-1时,第一个值才会计算为false 只有当find()返回0时,第二个值才会计算为false 这甚至会给您错误的结果,因为0意味着子字符串位于字符串的开头

这两种说法相等吗

if row[1].upper().find(brand)!=-1:


不,他们不平等。在Python中,任何非零数字都被视为True,因此,如果表达式的计算结果为-1,则第二条语句将被视为True,如果表达式的计算结果为0(当它应该为True时),则第二条语句将被视为false

使用第一句话。

只有当
find()
返回
-1
时,第一个值才会计算为
false

只有当
find()
返回
0
时,第二个值才会计算为
false

这甚至会给您错误的结果,因为
0
意味着子字符串位于字符串的开头。因此,如果子字符串位于开头,则该语句的计算结果为
false
,如果未找到该子字符串,则该语句的计算结果为
true

否,当然不是


第一个检查结果是否为
-1
,另一个检查结果是否为Python认为“false”的任何内容<代码>-1不被Python视为false。

要解释
find()
方法的作用:

>>> "hello".find("l")
2
>>> "hello".find("he")
0
>>> "hello".find("x")
-1
-1
是“未找到搜索字符串”的“神奇值”。将此与
索引()进行对比:

“你好”。索引(“l”) 2. >>>“你好”,索引(“他”) 0 >>>“你好”,索引(“x”) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 ValueError:未找到子字符串
就我个人而言,我更喜欢
index()
,因为在Python中,通常不赞成使用神奇的值,而异常处理是一种类似Python的方式——“EAFP”(请求原谅比请求许可更容易)


在您的例子中,它看起来像“LBYL”编程风格(三思而后行),尽管您没有显示太多上下文,所以我不知道
if
语句决定了什么

正如其他人所说,不,这些说法并不等同。但是,当您只需要查找子字符串是否存在且不在何处时,我更喜欢使用中的
,而不是
.find()
,例如:

if brand in row[1].upper():

这相当于第一句话,但更简洁易读。

最上面的答案是正确的。但我发现在
中阅读
比使用数字结果更容易。即

>>> row
[[1, 'lysol']]
>>> brand
'Lysol'
>>> brand.upper() in row[0][1].upper()
True
>>> 
不过,一旦“Schlysol”品牌出现,所有的赌注都将落空。嗯

if brand in row[1].upper():
>>> row
[[1, 'lysol']]
>>> brand
'Lysol'
>>> brand.upper() in row[0][1].upper()
True
>>>