比较列表与字符串

2024-10-02 02:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

LettersGuesed是一个字母列表

def isWordGuessed(secretWord, lettersGuessed):
  listA = {'a','b','c','p','o','e','p','l'}
  abc = "apple"

现在,如果列表(listA)中猜测的字母(部分或全部)包含在字符串中的所有字母(char)中,那么它应该返回一个真正的布尔值。。。在

但是每次我做这个问题,我总是得到一个错误的返回…即使上面的例子应该明确地返回“true”

有人能帮我吗?在

太多了!!!在


Tags: 字符串trueapple列表def错误字母例子
3条回答

你可以这样做:

abc = 'apple'
setA = {'a','b','c','p','o','e','p','l'}
sabc = set(abc) 
print len(sabc) == len(sabc & setA)

当然,这有点误导。在setA = { 'a','p','l','e' }的情况下,您希望发生什么?这仍将返回True,因为没有计算重复项。如果需要考虑重复项,我建议使用Collections.Counter

^{pr2}$

这是因为它确保word中字母的计数总是小于猜测中对应字母的计数。在

使用集:

>>> set('apple')<{'a','b','c','p','o','e','p','l'}
True
>>> set('abc')<{'a','b','c','p','o','e','p','l'}
True

<compares set 1 as being a complete subset of set 2

但是,正如@mgilson所指出的,对于具有重复项的字符串,这是不准确的。在

按他的建议用计数器。在

或者您可以使用any

>>> letters_guessed = 'abc'
>>> letters_in_word = 'abcdefghi'
>>> any(letter for letter in letters_guessed if letter in letters_in_word)
True
>>> letters_guessed = 'zzz'
>>> any(letter for letter in letters_guessed if letter in letters_in_word)
False

相关问题 更多 >

    热门问题