这个函数可以通过链接列表的元素来返回一个int值吗?

时间:2017-01-30 21:33:31

标签: python function

我正在创建一个功能,以开发一个小字游戏。当我创作它时,当我试图写出身体时,我陷入困境。我一直在寻找有关Python的信息,以及我是否可以写一个return语句。似乎有可能,但我没有发现任何明确的事情。这是我的身体功能:这是我目前的进步:我关闭了吗?或者我应该尝试其他方法吗?

def num_words_on_board(board, words):
    """ (list of list of str, list of str) -> int

    Return how many words appear on board.

    >>> num_words_on_board([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], ['ANT', 'BOX', 'SOB', 'TO'])
    3
    """
    count = 0
    for word_list in board:
        if words in ''.join(word_list):
            count = count + 1

        return count

2 个答案:

答案 0 :(得分:0)

你的问题缺乏解释,但我会回答我理解的最好的问题。

我认为你正在尝试做一些类似于wordsearch求解器的东西,混合了一个争夺拼图?

无论如何,我的建议是为你需要解决的一切提供多种功能。例如:

我看到它的方式,您需要知道board中的字母是否可以构成words变量中的每个字词。这可以通过一个功能来完成。如果你真的不需要单词的顺序,只需要长度,那么我们就可以这样做。

def same (word, letters):
    temp = []
    for every_letter in word:
        if every_letter in letters and every_letter not in temp:
            temp.append(every_letter)

    return len(temp) >= len(word)

这个功能只需要一个word和一堆letters" (例如来自board;)的列表)作为参数,然后该函数将word中的每个字母与" letters"中的每个字母进行比较。如果它找到匹配,则在迭代结束时将其添加到temp变量,如果临时变量至少具有与初始`word'相同的字母数。那么说这个词可以建立是安全的。

*此功能存在问题。如果原始word有重复的字母,例如单词" butter"然后这个功能不起作用,但由于这不是你的情况,我们很高兴继续。

对于第二部分,我们必须对word中的每个board使用该函数,因此我们将使用另一个函数:

def num_words_on_board(board, words):
    count = 0
    for word in words:
        for letters in board:
            if same(word, letters):
                count += 1

    print(count)  # This is not needed, just here for testing.
    return count

然后我们走了。此函数应返回count 3。我希望这会对你有所帮助。

(如果有人想要更正我的代码请自由,它无论如何都不是最优的。只是觉得这样很容易理解,而不是Stefan Pochmann提到的重复问题中的答案)< / p>

:)

答案 1 :(得分:0)

我有一个以前的功能,我可以使用它来创建这个新的吗? 我以前的功能是:

def board_contains_word(board,word):     “”(str,str列表清单) - &gt; 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
>>> board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'NNT')
False
>>> board_contains_word([['A', 'N', 'T', 'T'], ['X', 'S', 'O', 'B']], 'NTT')
True
"""
for word_list in board:
    if word in ''.join(word_list):
        return True
return False