我有這個功能:
def is_an_oak(name):
"""
Returns True is name starts with 'quercus'
>>> is_an_oak('Fagus sylvatica')
False
>>> is_an_oak('Quercuss petraea')
False
>>> is_an_oak('Quercus petraea')
True
>>> is_an_oak('quercus petraea')
True
"""
return name.lower().startswith('quercus')
但我需要它將“Quercuss”和任何其他類似的拼寫錯誤回傳為 False,目前它仍然注冊為 True。我知道這是因為 .startswith() 方法,但我不知道用什么來替換它以接受“Quercus”作為唯一正確的答案。
uj5u.com熱心網友回復:
實際上,您的代碼非常接近,但是在正確單詞之后的額外字符中遺漏了一個位置。例如:如果你比較'abc'和 ' abcd' - 你會期待什么?(使用startswith方法,會得到True!) 看更正和其他版本對比:
def is_an_oak(text):
return text.lower().startswith( 'quercus ') # add space after the word so it can detect the extra "s"
def is_an_oak(text):
words = text.split() # break text into words
return words[0].lower() == 'quercus' # first word
運行一些測驗:
words = ['Quercuss petrea', 'Quercus petrea']
for w in words:
print(is_an_oak(w))
# Outputs:
# False
# True
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/362722.html
