我正在创建一个功能,以开发一个小字游戏。当我创作它时,当我试图写出身体时,我陷入困境。我一直在寻找有关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
答案 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