首页 > 解决方案 > 为什么会出现索引超出范围错误?错误如下,

问题描述

这是错误:

在此处输入图像描述

我的代码:

def isVariable(line):
    modifier = ['private','protected','public']
    datatype = ['String','int','float','boolean']
    status = False
    linelist = list(line.split())

    if(linelist[0] in modifier):
        if(linelist[1] in datatype):
            if(';' in linelist[len(linelist)-1]):
                status = True
                return status
    else:
        return status

f = open('Student.java','r')
vList = []

for line in f:
    status = isVariable(line)
    if status == True:
        vList.append(line)
  

print(vList)

怎么了?

标签: pythonlistfor-loopindexoutofrangeexception

解决方案


看起来您文件中的其中一行是空的,因此调用list(line.split())返回一个空列表。因此,没有第零个元素,将IndexError. 您可以添加一些try ... except ...块来处理此错误。尝试:

def isVariable(line):
    modifier = ['private','protected','public']
    datatype = ['String','int','float','boolean']
    status = False
    linelist = list(line.split())
    
    try:
        has_modifier = linelist[0] in modifier
    except IndexError:
        return status

    try:
        has_datatype = linelist[1] in datatype
    except IndexError:
        return status

    try:
        has_semicolon = ';' in linelist[-1]
    except IndexError:
        return status

    if(has_modifier and has_datatype and has_semicolon):
        status = True
        return status
    else:
        return status


f =  open('Student.java','r')
vList = []

for line in f:
    status = isVariable(line)
    if status == True:
        vList.append(line)
    

print(vList)

推荐阅读