使用 Python 识别两个单词是不是包含相同的字母

Posted

技术标签:

【中文标题】使用 Python 识别两个单词是不是包含相同的字母【英文标题】:Using Python to identify if two words contain the same letter使用 Python 识别两个单词是否包含相同的字母 【发布时间】: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'])。这是一个示例测试,所以我认为它是一个只包含一个单词的列表 嗯,不,这不是一个列表。它只是一个字符串,而您的函数需要一个列表... 【参考方案1】:

您向函数传递了错误的参数。

Test.assert_equals(anagrams('abba', ['aabb', 'abcd', 'bbaa', 'dada']), ['aabb', 'bbaa'] 在这里,您将第一个参数作为字符串传递。而函数需要一个列表。 将您的代码更改为: Test.assert_equals(anagrams(['abba'], ['aabb', 'abcd', 'bbaa', 'dada']), ['aabb', 'bbaa']

请注意,我刚刚在列表中传递了 'abba',因为您的函数期望它是一个列表。

如果您想使用以前的代码,请从您的函数中将这一行 sorted_defaultword = sorted(word[0]) 更改为 sorted_defaultword = sorted(word)

这应该可以完成工作......

【讨论】:

以上是关于使用 Python 识别两个单词是不是包含相同的字母的主要内容,如果未能解决你的问题,请参考以下文章

我正在 UITextView 中实现标签识别器,但它从不突出显示具有相同开头的两个单词

VSCode特定的字颜色

[leetcode] 30. 与所有单词相关联的字串(cn第653位做出此题的人~)

如何快速检查 url 字符串是不是包含一个单词?

LeetCode第30题: 与所有单词相关联的字串

Leetcode——30.与所有单词相关联的字串##