Python中的列表索引超出范围(IF语句)

时间:2020-05-12 14:49:04

标签: python arrays range

我正在四处乱逛,这是代码的“错误”部分,我认为您不必了解更多信息:

def parse(toks):
    i = 0
    while(i < len(toks)):
        if toks[i] + " " + toks[i+1][0:6] == "CMD_SHOW STRING" or toks[i] + " " + toks[i+1][0:3] == "CMD_SHOW NUM" or toks[i] + " " + toks[i+1][0:4] == "CMD_SHOW EXPR":
            if toks[i+1][0:6] == "STRING":
                doPRINT(toks[i+1])

            elif toks[i+1][0:3] == "NUM":
                doPRINT(toks[i+1])

            elif toks[i+1][0:4] == "EXPR":
                doPRINT(toks[i+1])

            i += 2

        if toks[i][0:3] + " " + toks[i+1] + " " + toks[i+2][0:6] == "VAR EQUALS STRING" or toks[i][0:3] + " " + toks[i+1] + " " + toks[i+2][0:3] == "VAR EQUALS NUM" or toks[i][0:3] + " " + toks[i+1] + " " + toks[i+2][0:4] == "VAR EQUALS EXPR":
            if toks[i+2][0:6] == "STRING":
                doASSIGN(toks[i], toks[i+2])

            elif toks[i+2][0:3] == "NUM":
                doASSIGN(toks[i], toks[i+2])

            elif toks[i+2][0:4] == "EXPR":
                doASSIGN(evalExpression(toks[i], toks[i+2]))

            i += 3

我收到此错误:

Traceback (most recent call last):
  File "C:\Users\Kuba\Desktop\Programowanie\Projekty\Amai\amailexparse.py", line
 135, in parse
    if toks[i][0:3] + " " + toks[i+1] + " " + toks[i+2][0:6] == "VAR EQUALS STRI
NG" or toks[i][0:3] + " " + toks[i+1] + " " + toks[i+2][0:3] == "VAR EQUALS NUM"
 or toks[i][0:3] + " " + toks[i+1] + " " + toks[i+2][0:4] == "VAR EQUALS EXPR":
IndexError: list index out of range

我尝试了很多事情,改变i的值,改变数组的大小,并减少语句。谁能帮我这个?这是我的在线学校项目,因此我需要快速的帮助。

1 个答案:

答案 0 :(得分:0)

要解决此问题,您可以将循环的while循环条件更改为以下内容:

while( (i+2) < len(toks) )