我正在Python中工作。我有以下代碼:爲什麼兩個空字符串切片不能「相等」?
while not is_suffix(pattern[:k], pattern[:q]):
k -= 1
print k
def is_suffix(potential_suffix, text):
print "|" + potential_suffix + "|" + text + "|"
for i in range(len(text)):
if potential_suffix == text[i:]:
return True
return False
(while循環實際上是在一個函數中,但我省略了不相關的代碼)。結果是while循環將永遠存在。 is_suffix函數可以找到兩個相等的非空字符串。但是,如果遇到問題,它會到達for循環的結尾,並嘗試比較文本[i:](其爲空)和potential_suffix,在這種情況下爲空。代碼到達最後並返回False,這會導致while循環永遠持續。
我聲稱這兩個是空字符串,因爲is_suffix中的打印行打印出「|||」在相關情況下。
有什麼基礎我失蹤了?爲什麼兩個空串不會被視爲相等?
你熟悉的'.endswith'方法,什麼'text.endswith(potential_suffix)'和'text.endswith(tuple_of_suffixes)'做什麼? – DSM 2012-03-29 23:34:27
@DSM這應該是一個答案,而不是一個評論,因爲它是正確的答案。 :) – 2012-03-30 01:41:46
@DSM沒有先生,我不熟悉。我現在是!非常感謝。 – Paragon 2012-03-30 14:28:55