python中的any()all()函数

时间:2015-07-28 18:36:47

标签: python python-2.7

编写一个函数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

我不明白在这一点上我应该怎么做我尝试了很多但却失败了。任何建议??

3 个答案:

答案 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的参数。