繁体   English   中英

为什么这会继续给我一个列表索引超出范围的错误?

[英]Why does this keep on giving me a list index out of range error?

count = 0
badIndices = [59,64,68,72,74,77,79,103,104,108,109,118,119,123,124,130,133,139]
test1 = []
csvCourses = []
csvExamTime = []
examTime = []

with open("final_exam_schedule.csv") as file:
    reader = csv.reader(file, delimiter = ",")
    next(reader)
    for row in reader:
        csvCourses.append(row)

for i in range(len(csvCourses)):
    csvExamTime.append(csvCourses[i][5])
    examTime.append(findSchedule(csvCourses[i][4],csvCourses[i][1],csvCourses[i][3],csvCourses[i][2]))

for i in badIndices:
    test1.append(csvCourses[i][5])

for i in badIndices:
    if count >= len(test1):
        break
    else:
        count += 1
        examTime[i] = test1[count] #this is where I get my error

每次我尝试将testTime [i]分配给test1时,都会给我“超出范围”,但是我认为我的if语句确保它没有超出范围?

作为参考,examTime包含155个不同的索引,并且badIndices列表是不返回值的索引,因此,我将转到该确切的索引并为其分配一个值。 findSchedule()是我的函数,具有一堆ifs和else来分配examTime,我没有将其包括在内,因为它确实很长且对问题没有必要。 只有特定的不良索引不会返回值,其余的则不会。

编辑:好的,这是findSchedule函数

def findSchedule(days,time,cr,period):          
    if days == "TR":
        if time == "11:00":
            if period == "AM":
                return("Tuesday, December 13, 9:45 - 11:45 am")
            elif period == "PM":
                return("Class final not found, please try again")     
        elif time == "12:30" or time == "1:00":
            if period == "PM":
                return("Tuesday, December 13, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "3:30":
            if period == "PM":
                return("Tuesday, December 13, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "5:00":
            if period == "PM":
                return("Tuesday, December 13, 4:30 - 6:30 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "6:30":
            if period == "PM":
                return("Tuesday, December 13, 7:00 - 9:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "8:00":
            if period == "AM":
                return("Wednesday, December 14, 7:30 - 9:30 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "2:00":
            if period == "PM":
                return("Thursday, December 15, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "9:30":
            if period == "AM":
                return("Friday, December 16, 9:45 - 11:45 am")
        elif time == "9:00":
            if period == "AM":
                return("Friday, December 16, 7:30 - 9:30 am")
        elif time == "10:00":
            if period == "AM":
                return("Wednesday, December 14, 9:45 - 11:45 am")
        elif time == "12:00":
            if period == "PM":
                return("Wednesday, December 14, 12:00 - 2:00 pm")
        elif time == "5:00" and cr == "5":
            return("Wednesday, December 14, 4:30 - 6:30 pm")
    elif days == "MWF":
        if time == "10:00":
            if period == "AM":
                return("Wednesday, December 14, 9:45 - 11:45 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "12:00":
            if period == "PM":
                return("Wednesday, December 14, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "3:00":
            if period == "PM":
                return("Wednesday, December 14, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "5:00":
            if period == "PM":
                return("Wednesday, December 14, 4:30 - 6:30 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "6:30" or time == "8:00":
            if period == "PM":
                return("Wednesday, December 14, 7:00 - 9:00 pm")
            elif period == "AM" and time == "8:00":
                return("Thursday, December 15, 7:30 - 9:30 am")
        elif time == "11:00":
            if period == "AM":
                return("Thursday, December 15, 9:45 - 11:45 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "2:00":
            if period == "PM":
                return("Thursday, December 15, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "9:00":
            if period == "AM":
                return("Friday, December 16, 7:30 - 9:30 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "1:00":
            if period == "PM":
                return("Friday, December 16, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "4:00":
            if period == "PM":
                return("Friday, December 16, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "8:00":
            if period == "AM":
                return("Thursday, December 15, 7:30 - 9:30 am")
        elif time == "9:30":
            return("Friday, December 16, 9:45 - 11:45 am")
        elif time == "3:30":
            return("Tuesday, December 13, 2:15 - 4:15 pm")
        elif time == "3:00":
            return("Wednesday, December 14, 2:15 - 4:15 pm")
        elif time == "11:00" and cr == "5":
            if period == "AM":
                return("Thursday, December 15, 9:45 - 11:45 am")
    elif days == "MW":
        if time == "8:00":
            if period == "PM":
                return("Wednesday, December 14, 7:00 - 9:00 pm")
            elif period == "AM":
                return("Thursday, December 15, 7:30 - 9:30 am")
        elif time == "11:00":
            if period == "AM":
                return("Thursday, December 15, 9:45 - 11:45 am")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "2:00":
            if period == "PM":
                return("Thursday, December 15, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "1:00":
            if period == "PM":
                return("Friday, December 16, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "10:00":
            if period == "AM":
                return("Wednesday, December 14, 9:45 - 11:45 am")
        elif time == "9:00":
            return("Friday, December 16, 7:30 - 9:30 am")
        elif time == "9:30":
            return("Friday, December 16, 9:45 - 11:45 am")
        elif time == "9:30":
            return("Friday, December 16, 9:45 - 11:45 am")
        elif time == "3:30":
            return("Tuesday, December 13, 2:15 - 4:15 pm")
        elif time == "6:30" and cr == "1":
            return("Monday, December 12, 6:30 - 7:25 pm")
        elif time == "6:30" and cr == "2":
            return("Monday, December 12, 6:30 - 8:20 pm")
        elif time == "6:30" and cr == "3":
            return("Monday, December 12, 6:30 - 9:30 pm")
        elif time == "6:30" and cr == "4":
            return("Monday, December 12, 6:30 - 10:15 pm")
        elif time == "5:00" and cr == "5":
            if period == "PM":
                return("Wednesday, December 14, 4:30 - 6:30 pm")

    elif days == "R":
        if time == "6:30" and period == "PM":
            return("Thursday, December 15, 7:00 - 9:00 pm")
    elif days == "WF":
        if time == "8:00" and (cr == "2" or cr == "5"):
            if period == "AM":
                return("Thursday, December 15, 7:30 - 9:30 am")
            elif period == "PM":
                return("No class found")
        elif time == "8:00" and cr == "4":
            if period == "AM":
                return("Wednesday, December 14, 7:30 - 9:30 am")
            elif period == "PM":
                return("Class not found")
        elif time == "9:00":
            if period == "AM":
                return("Friday, December 16, 7:30 - 9:30 am")
            if period == "PM":
                return("Class not found")
        elif time == "9:30":
            if period == "AM":
                return("Friday, December 16, 9:45 - 11:45 am")
            elif period == "PM":
                return("Class not found")
        elif time == "10:00":
            if period == "AM":
                return("Wednesday, December 14, 9:45 - 11:45 am")
            elif period == "PM":
                return("Class not found")
        elif time == "11:00":
            if period == "AM":
                return("Thursday, December 15, 9:45 - 11:45 am")
            elif period == "PM":
                return("Class not found")
        elif time == "12:00":
            if period == "PM":
                return("Wednesday, December 14, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "12:30":
            if period == "PM":
                return("Tuesday, December 13, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Classs not found")
        elif time == "1:00":
            if period == "PM":
                return("Friday, December 16, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "2:00":
            if period == "PM":
                return("Thursday, December 15, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "3:00":
            if period == "PM":
                return("Wednesday, December 14, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "3:30":
            if period == "PM":
                return("Tuesday, December 13, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "4:00":
            if period == "PM":
                return("Friday, December 16, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "5:00" and cr == "2":
            if period == "PM":
                return("Tuesday, December 13, 4:30 - 6:30 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "5:00" and cr == "4":
            if period == "PM":
                return("Wednesday, December 14, 4:30 - 6:30 pm")
            elif period == "AM":
                return("Class not found")
        elif time == "9:30":
            return("Friday, December 16, 9:45 - 11:45 am")
        elif time == "3:30":
            return("Tuesday, December 13, 2:15 - 4:15 pm")
    elif days == "M":
        if time == "6:30":
            return("Monday, December 12, 6:30 - 7:25 pm")
    elif days == "T":
        if time == "6:30":
            return("Tuesday, December 13, 7:00 - 9:00 pm")
    else:
        if (cr == "4" or cr == "2") and time == "12:30":
            if period == "PM":
                return("Tuesday, December 13, 1:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif cr == "4" and time == "3:30":
            if period == "PM":
                return("Tuesday, December 13, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif cr == "4" and time == "5:00":
            if period == "PM":
                return("Tuesday, December 13, 4:30 - 6:30 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif cr == "4" and time == "8:00":
            if period == "AM":
                return("Wednesday, December 14, 7:30 - 9:30 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "10:00":
            if period == "AM":
                return("Wednesday, December 14, 9:45 - 10:45 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "12:00":
            if period == "PM":
                return("Wednesday, December 14, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "3:00":
            if period == "PM":
                return("Wednesday, December 14, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "5:00":
            if period == "PM":
                return("Wednesday, December 14, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif cr == "5" and time == "8:00":
            if period == "AM":
                return("Thursday, December 15, 7:30 - 9:30 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "11:00":
            if period == "AM":
                return("Thursday, December 15, 9:45 - 11:45 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif cr == "4" and time == "2:00":
            if period == "PM":
                return("Thursday, December 15, 12:00 - 2:00 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif cr == "5" and time == "2:00":
            if period == "PM":
                return("Thursday, December 15, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")
        elif time == "9:00":
            if period == "AM":
                return("Friday, December 16, 7:30 - 9:30 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "9:30":
            if period == "AM":
                return("Friday, December 16, 9:45 - 10:45 am")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "1:00":
            if period == "PM":
                return("Friday, December 16, 12:00 - 2:00 pm")
            elif period == "PM":
                return("Class final not found, please try again")
        elif time == "4:00":
            if period == "PM":
                return("Friday, December 16, 2:15 - 4:15 pm")
            elif period == "AM":
                return("Class final not found, please try again")   
        else:
            return("Class final not found, please try again")

不知道您的数据看起来很难说,但这就是我的想法,

您的count变量增加得太早。 在python中,列表索引从0开始,并转到len(list)-1作为最后一个索引。 您有点从count=1开始,所以有可能在最后一次迭代时count=len(list)给出了错误。 尝试将此作为对代码后半部分的更正:

for i in badIndices:
    if count >= len(test1):
        break
    else:
        examTime[i] = test1[count]
        #We increment count after it is used
        #to avoid an error
        count+=1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM