簡體   English   中英

為什么會出現索引超出范圍錯誤? 錯誤如下,

[英]Why do I get index out of range error? The error is as follows,

這是錯誤:

在此處輸入圖像描述

我的代碼:

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)

怎么了?

你得到錯誤是因為在那一行代碼中,

linelist為空,因此您無法獲取列表的第一個(索引0元素。

它可以為空的原因是文件中的空行。

看起來您文件中的其中一行是空的,因此調用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM