【发布时间】:2021-02-11 13:36:56
【问题描述】:
要解决的问题:
编写一个函数,从一个列表中找出一个单词的所有字谜。您将获得两个输入一个单词和一个带有单词的数组。您应该返回一个包含所有字谜的数组,如果没有则返回一个空数组。
解决方案测试:
a = ['aabb', 'abcd', 'bbaa', 'dada']
b = ['abab']
listA = []
sorted_defaultword = sorted(b[0])
print (sorted_defaultword)
for i in range (len(a)):
#print(a[i])
sorted_word = sorted(a[i])
#print (sorted_word)
if (sorted_word == sorted_defaultword):
listA.append(a[i])
print (listA)
测试输出:
['a', 'a', 'b', 'b']
['aabb', 'bbaa']
使用测试,然后我尝试编写我的函数,但显然它不起作用。有人可以提出原因吗:
def anagrams(word, words):
sorted_defaultword = sorted(word[0])
anagram_List = []
for i in range (len(words)):
sorted_word = sorted(words[i])
if (sorted_word == sorted_defaultword):
anagram_List.append(words[i])
return anagram_List
为什么我把它放在一个函数中会失败?
【问题讨论】:
-
函数的第一个参数'word',你传递给它什么?只是一个单词还是一个包含一个单词的列表?你是通过b,
b = ['abab']还是b = 'abab' -
Test.assert_equals(anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']), ['aabb', 'bbaa'])。这是一个示例测试,所以我认为它是一个只包含一个单词的列表
-
嗯,不,这不是一个列表。它只是一个字符串,而您的函数需要一个列表...
标签: python-3.x loops anagram