在这种情况下如何解决列表索引超出范围的错误?

时间:2019-07-14 18:13:30

标签: python-3.x indexoutofrangeexception crossword

填字游戏垂直求解功能, 该程序以'if crosswords[num]==None'的速率给出列表索引超出范围

提供该语句以消除此类错误

def find_word_vertical(crosswords,word):
    word_list=[i for i in word]
    l=len(word_list)
    index=[]
    for col in range(len(crosswords[0])):
        for row in range(len(crosswords)):
            if word_list[0]==crosswords[row][col]:
                num=row
                ok=True
                for ch in range(l):
                    if crosswords[num]==None:
                        break
                        ok=False
                    else:
                        if word_list[ch]==crosswords[num][col]:
                            num+=1
                        else:
                            ok=False
                if ok:
                    return [row,col]
    return None

我找不到错误,因为该程序针对某些示例测试用例运行,但是错误出现在未知的测试用例上。由于出现“索引不足”错误,因此确切的测试用例不会出现在屏幕上。 示例问题= find_word_vertical([['s','d','o','g'],['c','u','c','m'],['a','c','a','t'],['t','e','t','k']],'cat')

1 个答案:

答案 0 :(得分:0)

if crosswords[num]==None:
    break
    k=False

此陈述有误,正确的陈述是:

if num>=len(crosswords):
    k=False
    break

如果列表中不存在该元素,则它不会返回None而是一个错误。