在我的单词查找代码中苦苦寻找错误?

时间:2015-03-12 22:52:06

标签: python

我正在尝试编写一个代码,用于检查输入的单词是否可以用另一个单词的字母组成。

到目前为止,我有:

def is_made_from(wordA,wordB):
for l in wordA:
    if wordA.count(l) <= wordB.count(l):
        return True
    else:
        return False

我不确定我的意思是否被翻译成代码。循环遍历wordA中的每个字母,以检查wordB是否至少具有与wordA中相同数量的字母。但是,当我运行免费试用时,代码似乎在它应该工作时起作用,但它也适用于它不应该工作的时候。例如,如果我将wordA =='whiter'和wordB =='white',它将返回True,尽管wordB没有'r'。

2 个答案:

答案 0 :(得分:1)

当你返回True时,即使只有第一个字母匹配,因为如果代码在第一次迭代时输入if,则返回True并退出循环。

您正在寻找类似的东西

def is_made_from(wordA,wordB):
    for l in wordA:
        if not wordA.count(l) <= wordB.count(l):
            return False
    return True

反之亦然。

答案 1 :(得分:0)

乖巧的版本:

from collections import Counter

def is_made_from(first, second):
   return len(Counter(first) - Counter(second)) == 0

(这实在是因为“太聪明”了;在循环中调用.count()可能更具可读性并且表现得很好,除非你的单词长达数万个字符)