python中的any()all()函数



编写一个函数isAllLettersUsed(word,必需(,该函数将一个单词作为第一个参数,如果该单词包含第二个参数中的所有字母,则返回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

我不明白在这一点上我该怎么办。我尝试了很多事情,但都失败了。有什么建议吗??

看看所需的所有字母是否都在单词中:

def  isAllLettersUsed(word, required):
    return all(ch in word for ch in required)

通过在for循环中使用required来检查单词中的每个字母是否在单词中,required指的是每个字符,而不是传递的必需参数,因此它总是返回True,因为单词中的每一个字母都必须在单词中。

def isAllLettersUsed(word, required):
    if all(req in word for req in required):
        return True
    else: 
        return False

发生的情况是,您在for循环中为变量required赋值,但required是一个参数。您希望循环使用required,并将required的每个元素保存到一个新变量中。然后,检查该元素是否在word中。

此外,如果使用all(),则if-else是多余的。只需说return all(...)

更改生成器表达式中变量的名称。您使用循环变量required遮蔽了名为required的参数。

最新更新