Python 返回单字符串列表中的字符

Python 返回单字符串列表中的字符,python,python-3.x,Python,Python 3.x,我不太清楚这为什么不起作用,有人能帮我解决这个问题吗 def valid(user_guess, valid_characters, guess_size): '''(list, str, int) -> bool Given a list of single character strS and a str, return True if every character is in the given string. >>>

我不太清楚这为什么不起作用,有人能帮我解决这个问题吗

def valid(user_guess, valid_characters, guess_size):
    '''(list, str, int) -> bool
       Given a list of single character strS and a str, 
       return True if every character is in the given string.
     >>> (['A', 'C', 'B', 'E'], 'ACBE', 4)
     True
     >>> (['A', 'C', 'B', 'E'], 'ADFG', 4)
     False
    '''
    for char in user_guess:
        if char in valid_characters and len(user_guess) == guess_size:
            return True
        if char not in valid_characters and len(user_guess) != guess_size:
            return Fal
如果满足
len(user\u guess)==guess\u size
条件,则仅在检查第一个
字符后,就会触发
返回True
。为确保正确性,当此条件失败时,返回
False
,如果从未触发,则返回
True

此外,长度条件不需要在循环内进行计算。

如果
len(user\u guess)==guess\u size
条件满足,则仅在检查第一个
char
后,就会触发
return True
。为确保正确性,当此条件失败时,返回
False
,如果从未触发,则返回
True


此外,长度条件不需要在循环内进行计算。

这是验证猜测的许多可能方法之一

guesses = [(['A', 'C', 'B', 'E'], 'ACBE', 4),
           (['A', 'C', 'B', 'E'], 'ADFG', 4)]

def checkguess(g):
    chars = g[0]
    valid = g[1]
    guess_size = g[2]
    if chars == list(valid) and len(chars) == guess_size:
        return True
    else: 
        return False

if __name__ == '__main__':
    result = [checkguess(g) for g in guesses]
    assert result == [True, False]  

这是验证猜测的许多可能方法之一

guesses = [(['A', 'C', 'B', 'E'], 'ACBE', 4),
           (['A', 'C', 'B', 'E'], 'ADFG', 4)]

def checkguess(g):
    chars = g[0]
    valid = g[1]
    guess_size = g[2]
    if chars == list(valid) and len(chars) == guess_size:
        return True
    else: 
        return False

if __name__ == '__main__':
    result = [checkguess(g) for g in guesses]
    assert result == [True, False]  

这里有一个稍微好一点的方法


这里有一个稍微好一点的方法

我不确定您希望此代码如何工作。但是,根据您的评论:

给定单字符str和str的列表,返回True 如果每个字符都在给定字符串中

我假设您只是想知道
user\u guess
中的所有字符(“每个字符”)都在
有效字符中。我会这样做:

return len(set(user_guess).difference(valid_characters)) == 0
尚不清楚猜测大小应该做什么。

我不确定您希望该代码如何工作。但是,根据您的评论:

给定单字符str和str的列表,返回True 如果每个字符都在给定字符串中

我假设您只是想知道
user\u guess
中的所有字符(“每个字符”)都在
有效字符中。我会这样做:

return len(set(user_guess).difference(valid_characters)) == 0

现在还不清楚猜测大小应该做什么。

以什么方式不起作用?错误消息,错误答案,当我测试它时,etcIt没有给我任何东西。我没有布尔值。当我复制并粘贴我想要测试的代码时,它只输出相同的代码。您在哪里进行测试?复制代码后,请尝试
valid(['A','C','B','E'],'ACBE',4)
。我在wing 101中执行此操作,我复制了该代码,并在测试后得到了完全相同的代码。我从未使用wing。在实际操作中显示此代码。如果它让你困惑,也许值得问一个关于你机翼的问题。它在什么方面不起作用?错误消息,错误答案,当我测试它时,etcIt没有给我任何东西。我没有布尔值。当我复制并粘贴我想要测试的代码时,它只输出相同的代码。您在哪里进行测试?复制代码后,请尝试
valid(['A','C','B','E'],'ACBE',4)
。我在wing 101中执行此操作,我复制了该代码,并在测试后得到了完全相同的代码。我从未使用wing。在实际操作中显示此代码。如果它让你感到困惑,也许值得问一个关于wing问题的问题。当
char
“不在”
valid\u characters
len(user\u guess)==guess\u size
?为什么
len(user\u guess)==guess\u size
len(user\u guess)!=猜猜大小是否在循环内?这些变量不会改变!为了纯粹的乐趣,尝试
valid(['E','T','W','Q','ADFG',4)
char
不在
valid\u characters
len(user\u guess)==guess\u size
时,函数应该返回什么?为什么
len(user\u guess)==guess\u size
len猜猜大小是否在循环内?这些变量不会改变!为了纯粹的乐趣,请尝试
valid(['E','T','W','Q','ADFG',4)