Python单词搜索计算器中find函数未返回预期结果问题求助
单词搜索计算器正向匹配逻辑修复方案
原代码核心错误点
- 匹配判断逻辑错误:
str.find()方法找到子串时返回起始索引,子串在行首时索引为0,原代码if finder > 0会漏掉行首匹配的场景,需改为if finder >= 0 - 循环提前终止错误:原代码遍历第一行后无论是否匹配都会直接返回结果,不会遍历剩余9行,导致永远找不到第一行以外的单词
- 类型拼接错误:打印输出时row为整数类型,直接和字符串拼接会触发类型错误,需做类型转换
修复后代码
def input_puzzle(): print("Puzzle:\n") puzzle_input = "" # 兼容逐行输入拼图的场景 for _ in range(10): puzzle_input += input().strip() puzzle_list = [] for i in range(10): row = "" for j in range(10): row += puzzle_input[i*10 + j] puzzle_list.append(row) return puzzle_list def check_forward(puzzle_list, word, direction): for row in range(len(puzzle_list)): row_string = puzzle_list[row] finder = row_string.find(word) if finder >= 0: print(f"{word}: ({direction}) row: {row} column: {finder}") return True # 所有行遍历完成后未匹配到再返回未找到 print(f"{word}: word not found") return False # 测试用例 if __name__ == "__main__": test_puzzle = [ "WAQHGTTWEE", "CBMIVQQELS", "APXWKWIIIL", "LDELFXPIPV", "PONDTMVAMN", "OEDSOYQGOB", "LGQCKGMMCT", "YCSLOAPUZM", "XVDMGSXCYZ", "UUIUNIXFNU" ] check_forward(test_puzzle, "UNIX", "FORWARD")
运行结果
执行测试用例后输出UNIX: (FORWARD) row: 9 column: 3,与预期结果完全一致。
内容的提问来源于stack exchange,提问作者K P
相关产品推荐
相关产品推荐

