2010-07-29 66 views

回答

8

不,他們是不相等的。在Python中,任何非零數字都被視爲True,所以如果表達式計算結果爲-1,則第二個語句將被視爲true;如果表達式的計算結果爲0(當它應該爲true),則返回false。

使用第一條語句。

2

號第一個將評估爲false只有find()回報-1

只有當find()返回0時,第二個纔會評估爲false
這甚至會給你錯誤的結果,因爲0意味着子串是在字符串的開頭找到的。因此,如果子字符串在開頭,則該語句將評估爲false,如果未找到該子句,則該值爲true

1

不,當然不是。

第一個檢查結果是否爲-1,另一個檢查結果是否是Python認爲是「false」的結果。 Python不被認爲是錯誤的-1

2

爲了解釋find()方法做什麼:

>>> "hello".find("l") 
2 
>>> "hello".find("he") 
0 
>>> "hello".find("x") 
-1 

-1是一個「神奇的價值」爲「找不到搜索字符串」。與index()進行對比:

>>> "hello".index("l") 
2 
>>> "hello".index("he") 
0 
>>> "hello".index("x") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: substring not found 

就個人而言,我更喜歡index(),因爲通常情況下,魔法值應在Python皺起了眉頭,而異常處理是Python的方式來做到這一點 - 「EAFP」(它更容易請求原諒比許可) 。

在你的情況下,它看起來像「LBYL」編程風格(看你跳躍之前),雖然你沒有顯示很多上下文,所以我不知道if聲明是什麼決定。

5

正如其他人所說,沒有那些陳述是不相同的。然而,當你只需要找到如果的子存在,而不是哪裏,我更喜歡in運營商,而不是.find(),如:

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

這相當於第一條語句,但更簡潔易於閱讀。

+0

非常感謝您的幫助! – 2010-07-29 17:45:17

1

最常見的答案是正確的。但我發現閱讀in比使用數字結果更容易。即,

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

儘管「Schlysol」品牌出現後,所有投注都關閉。嗯。

相關問題