1 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊
這應(yīng)該工作:
def substring_between_letters(word, start, end):
hasA = False # Checks if start has already been found
for index in range(len(word)):
if word[index] == start:
hasA = True
aIndex = index
if hasA and word[index] == end:
bIndex = index
return word[aIndex: bIndex + 1]
return word # If substring could not be found
例如:
>>> print(substring_between_letters("hello everyone!", "l", "e"))
lo e
您的代碼存在的問題包括:
可以定義
break
導(dǎo)致循環(huán)退出的語句。string
編寫此函數(shù)的更好方法實(shí)際上是放棄break
語句。返回 indA 和 indB 會(huì)導(dǎo)致函數(shù)的輸出只是一個(gè)整數(shù)。
for循環(huán)中不需要else語句。簡(jiǎn)單地
word
在函數(shù)末尾返回并string
在循環(huán)內(nèi)返回正確的值更清晰,計(jì)算速度更快。您編寫的代碼沒有捕獲以確保
end
出現(xiàn)在start
. 如果該end
字符出現(xiàn)在該start
字符之后,則 indA 將不會(huì)被定義,您將得到一個(gè)錯(cuò)誤。
此外,看起來這段代碼會(huì)為您提供第一個(gè)實(shí)例,其中 s 子字符串以字符“start”開頭并以字符“end”結(jié)尾。但是,在 中str.find(sub, start, end)
,“開始”和“結(jié)束”定義了要str
在其中搜索的子字符串sub
。如果您正在模擬str.find()
,則需要四個(gè)參數(shù):一個(gè)要從中搜索的字符串 (str)、一個(gè)要搜索的子字符串 (sub)、一個(gè)起始整數(shù) (start) 來定義在 str 中開始搜索的位置,以及一個(gè)結(jié)束整數(shù) (end ) 來定義在 str 中停止搜索的位置。
添加回答
舉報(bào)