0

割り当てを行い、この問題にぶつかった

def board_contains_word(board, word):
    '''(list of list of str, str) -> bool

    Return True if and only if word appears in board.

    Precondition: board has at least one row and one column.

    >>> board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'ANT')
    True
    '''
 return word in board

しかし、私は得ています FALSE

前もって感謝します

4

2 に答える 2

0

Pythonin演算子は、使用方法とは少し異なります。ここではいくつかの例を示します。

>>> 'laughter' in 'slaughter'
True
>>> 1 in [1,6,5]
True
>>> 'eta' in ['e','t','a']
False
>>> 'asd' in ['asdf','jkl;']
False
>>> 

ご覧のとおり、2つの主な用途があります。文字列が別の文字列で見つかるかどうかを確認するテストと、要素が配列で見つかるかどうかを確認するテストです。また、2つの用途を組み合わせることはできないことに注意してください。

さて、あなたの問題を解決することについて。forすべての行を1つずつ通過するある種のループが必要になります。1つの行を選択したら、joinすべての配列要素をまとめる方法が必要になります。その後、その単語がinボードであるかどうかを判断できます。

注:これは、水平方向の検索の問題のみを解決します。それが全体の割り当てである場合は、Dunno。この関数を使用して、この方法を垂直方向の検索に適合させることができzipます。

于 2012-11-12T05:27:37.110 に答える
0

これがあなたを解き放つための何かです:

def board_contains_word(board, word):
    # check accross
    for row in board:
        return word in ''.join(row):

    # try with board's rows and columns transposed
    for row in zip(*board):
        return word in ''.join(row):

    return False

print board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'ANT')
print board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'TO')

ヒント:any()関数を使用すると、物事を単純化できます。

于 2012-11-12T05:47:19.703 に答える