You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python网格单词查找函数返回None 输出不符合预期如何解决

问题分析与修复

你代码里存在3处问题:

  • 语法错误:rows、cols函数中调用join的写法错误,你写的是""join,正确写法是"".join,缺少了字符串和join方法之间的点号。
  • 逻辑错误1:所有辅助函数的返回值都是「两个列表组成的元组」,比如rows(grid)返回的是(正序行字符串列表, 逆序行字符串列表)。你直接遍历这个元组时,每次循环拿到的是一整个列表,此时if w in col判断的是w是否和列表中某一个完整字符串完全相等,而非w是某个字符串的子串。
  • 逻辑错误2:你没有把辅助函数返回的两个列表中的所有字符串展开遍历,漏掉了大量需要检查的内容。

修正后完整代码

def diagsDownRight(M):
    n = len(M)
    m = [[''] * (n - i - 1) + row + [''] * i for i, row in enumerate(M)]
    return ([''.join(col) for col in zip(*m)]), [''.join(col[::-1]) for col in zip(*m)]
def diagsUpRight(M):
    n = len(M)
    m = [['']*i + row + ['']*(n-i-1) for i, row in enumerate(M)]
    return [''.join(col) for col in zip(*m)], [''.join(col[::-1]) for col in zip(*m)]

def rows(M):
    return ["".join(row) for row in M], ["".join(reversed(row)) for row in M]
def cols(M):
    return ["".join(col) for col in zip(*M)], [''.join(col[::-1]) for col in zip(*M)]

def contains_word(grid: list[list[str]], w: str):
    # 遍历所有辅助函数返回的元组
    for group in [diagsUpRight(grid), diagsDownRight(grid), rows(grid), cols(grid)]:
        # 遍历元组里的两个列表(正序、逆序)
        for str_list in group:
            # 遍历列表里的每个字符串,检查子串
            for s in str_list:
                if w in s:
                    return w
    return None

print(contains_word(grid=[
["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
, w='raw'))

运行后将输出你预期的raw。


内容的提问来源于stack exchange,提问作者Bruffff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:54:04