0

lettersGuessed is a list of letters

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

now if (some or all of) the letters guessed in the list (listA) are INCLUDED in all the letters (Chars) in the string, then it is supposed to return a true boolean...

but everytime I do this question I keep on getting a false return...even though the above example should CLEARLY return "true"

so can any1 out there help me please?

Thnx a lot!!!

4

4 に答える 4

4

次のようなことができます:

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ます。

from collections import Counter

def compare(word,guesses):
    return Counter(word) <= Counter(guesses)

これは、文字の数wordが常に推測の対応する文字の数よりも少ないことを確認するために機能します。

于 2013-03-01T15:23:35.693 に答える
1

使用セット:

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

セット 1 をセット 2 の完全なサブセットとして比較します<

ただし、@mgilson が指摘したように、これは重複のある文字列に対しては正確ではありません。

彼が提案するようにカウンターを使用してください。

于 2013-03-01T15:23:45.917 に答える
1

または、次を使用できます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
于 2013-03-01T15:24:05.273 に答える
0

誰かが言ったように、投稿サンプルは何も返しません。これは私が思いついたものですが、他のものほどエレガントではありません.

actualWord = "apple"
guessList = ["a","b","c","e","l"]

def WordGuessed(secretWord, lettersGuessed):
    listSW = list(secretWord)
    answer = True
    for item in listSW:
        if item not in lettersGuessed:
            answer = False
            break
    return answer

print WordGuessed(actualWord,guessList)
于 2013-03-01T16:14:10.153 に答える