编写一个函数isAllLettersUsed(word,required),它接受一个单词作为第一个参数,如果该单词包含在第二个参数中找到的所有字母,则返回True。
实施例
>>> isAllLettersUsed('apple', 'apple')
True
>>> isAllLettersUsed('apple', 'google')
False
>>> isAllLettersUsed('learning python', 'google')
True
>>> isAllLettersUsed('learning python', 'apple')
True
我正在做的是
def isAllLettersUsed(word, required):
if all(required in word for required in word):
return True
else:
return False
返回结果
True
True
True
True
应该返回的位置
True
False
True
True
我不明白在这一点上我应该怎么做我尝试了很多但却失败了。任何建议??
答案 0 :(得分:5)
只需查看所需的所有字母是否都在单词中:
def isAllLettersUsed(word, required):
return all(ch in word for ch in required)
您正在检查来自单词的每个字母是否在您的for循环中使用required是必需的,required是指每个字符不是传递的必需参数,因此它始终返回True,因为单词中的每个字母都必须在单词中。
答案 1 :(得分:1)
def isAllLettersUsed(word, required):
if all(req in word for req in required):
return True
else:
return False
发生了什么事情是您为for循环中的变量required
分配了值,但required
是一个参数。您希望遍历required
并将required
的每个元素保存到新变量中。然后,检查该元素是否在单词中。
此外,如果您使用if-else
,则all()
是多余的。只需说return all(...)
答案 2 :(得分:0)
更改生成器表达式中变量的名称。您使用循环变量required
隐藏了名为required
的参数。