【发布时间】:2020-06-08 17:37:22
【问题描述】:
我应该:
“编写一个函数search(words, start_chs),它返回列表中所有单词的列表,其首字母在列表start_chs中。
如果单词或start_chs 为空,则返回一个空列表。
由于返回的列表中可以有很多单词,所以单词应该按照它们最初出现的顺序排列。”
例如
words = ['green', 'grasses', 'frolicking', 'cats', '', 'kittens', 'playful']
start_chs = ['a', 'c', 'g']
new_words = search(words, start_chs) # ['green', 'grasses', 'cats']
到目前为止,我的代码如下,但是,它没有返回所有正确的输出,只返回其中的一些。
def search(words, start_chs):
k=0
p=[]
if (len(words)== 0) or (len(start_chs)== 0):
return ([])
while k < len(start_chs):
if start_chs[k][0] == words[k][0]:
p.append(words[k])
k+=1
return(p)
【问题讨论】:
-
看起来您每个字母只检查一个单词。
-
您对起始字符和单词使用相同的索引
k。这意味着您将第一个起始字符a仅与第一个单词green进行比较,c仅与grasses进行比较,g仅与frolicking进行比较。 -
你需要分别遍历
words和start_chs。目前,k用于两者。请注意,您可以使用for循环进行迭代,例如for word in words: for ch in starts_chs:.
标签: python python-3.x function while-loop