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)