我正在尝试编写一个代码,用于检查输入的单词是否可以用另一个单词的字母组成。
到目前为止,我有:
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'。
答案 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()
可能更具可读性并且表现得很好,除非你的单词长达数万个字符)