如何将整个列表与字符串进行比较?

时间:2018-04-06 18:33:58

标签: python python-3.x python-2.7

def isWordGuessed(secretWord, lettersGuessed):    
    '''
    secretWord: string, the word the user is guessing
    lettersGuessed: list, what letters have been guessed so far
    returns: boolean, True if all the letters of secretWord are in lettersGuessed;
      False otherwise
    '''
    # FILL IN YOUR CODE HERE...
    for i in lettersGuessed:
        if i in secretWord:
            return True;
        else:
            return False;

print(isWordGuessed('banana', ['z', 'x', 'q', 'b', 'a', 'n', 'a', 'n', 'a']))    
print(isWordGuessed('apple', ['a', 'e', 'i', 'k', 'p', 'r', 's']))

3 个答案:

答案 0 :(得分:2)

return离开函数 - 您需要确保其中包含“所有”字母。 Ý你只检查一个字母,然后你离开你的功能是真还是假。

修正:

检查是否所有内容都在其中:

def isWordGuessed(secretWord, lettersGuessed):    
    '''
    secretWord: string, the word the user is guessing
    lettersGuessed: list, what letters have been guessed so far
    returns: boolean, True if all the letters of secretWord are in lettersGuessed;
      False otherwise
    '''
    return all(l in lettersGuessed for l in secretWord) 

如果all()(或any())为True,则Python内置一个很好的内置函数。

你颠倒了逻辑种类 - 如果你的secretWord的所有字母都在lettersGuessed列表中,你将返回True。

如果您将“Banana”作为秘密猜测["B","a","n"],这将返回true - 它不会检查“金额”是否合适。

Dokumentation:all()

答案 1 :(得分:1)

由于secretWord中的每个字母都应该在lettersGuessed中,假设重复不计(问题中未定义),您可以检查secretWord中的字母集是否包含在字母组中的字母集如下:

def isWordGuessed(secretWord, lettersGuessed):
    secretWordSet = set(secretWord)
    return secretWordSet & set(lettersGuessed) == secretWordSet

答案 2 :(得分:1)

你做的与方法描述所说的完全相反

你在做什么:检查猜测列表中的每个字符是否都在保密字中

你应该做什么:检查字符串中的每个字符是否都在列表中

cmd

应该是函数的内容