2017-01-30 6 views
0

私はゲーム用の関数を開発していますが、単語がボードに含まれていれば返さなければならない関数に苦しんでいます。 PythonのシェルはTrueであると仮定すると私に偽の状態を返します。 これは私の体の目的球である:この身体機能で何が間違っていますか?

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 
""" 
for word_index in range(len(board)): 
    if word in board: 
     return True 
    return False 
+1

'for_word_index'の範囲(len(board)):' 'for'ループ内で決して使用しないので、' word_index'のポイントは何ですか? – roganjosh

答えて

0

あなたはループを持っていますが、ループカウンタを無視しています。各反復で値をword_index変数に設定します。あなたはループ内でそれを使うべきです。

その他の問題は、最初の反復後に常に返されることです。 2番目のreturnの外側にあり、ループ全体が使い果たされている場合にのみ実行されるように、ループはループです。

for word_index in range(len(board)): 
    if word in board[word_index]: 
     return True 
return False 

しかし、これを言っていると、Pythonでは範囲(len(something))を決して繰り返す必要はありません。常に事自体を反復:あなたが持っているので、あなたがリストのリスト内の文字列を探している

for word_list in board: 
    if word in word_list: 
     return True 
return False 
0

、Pythonはリストに再帰しない、そしてそれがなかった場合でも、あなたはまだそれを見つけることができません文字列ではない文字列:

def board_contains_word(board, word): 
    for element in board: # First Iterate each list in the board. 
     if word in ''.join(element): # Then join the list of characters to make a word and look for your desired word in it 
      return True 
    return False 
関連する問題