-3

我总是收到此代码的此错误:

Traceback (most recent call last):
  File "E:/ankosh/trial13.py", line 14, in <module>
    if grades_mix[index_no]=="HM1":
IndexError: list index out of range)

我非常感谢您的帮助。

  `file_pointer=open("C:/python27/Doc/student_grades.txt", "r")

   read_grades=file_pointer.readline()

   my_list=[]

   while 0==0:

    grades_mix=read_grades.split()

    name_str=grades_mix[0]

    contained_list=[name_str,0,0,0,0,0.0]

    index_no=1

    count_num=0

sum_float=0.0

avg_float=0.0

while 0==0:

         if grades_mix[index_no]=="HM1":

           index_no+=1

           grade_num=int(grades_mix[index_no])
        count_num+=1
        sum_float+=grade_num
        contained_list[1]=grade_num
    elif grades_mix[index_no]=="HM2":
        index_no+=1
        grade_num=int(grades_mix[index_no])
        count_num+=1
        sum_float+=grade_num
        contained_list[2]=grade_num
    elif grades_mix[index_no]=="HM3":
        index_no+=1
        grade_num=int(grades_mix[index_no])
        count_num+=1
        sum_float+=grade_num
        contained_list[3]=grade_num
    elif grades_mix[index_no]=="HM4":
        index_no+=1
        grade_num=int(grades_mix[index_no])
        count_num+=1
        sum_float+=grade_num
        contained_list[4]=grade_num

    index_no+=1
if count_num>0:
    avg_float=sum_float/count_num
contained_list[5]=avg_float
index_num=0
while index_num<len(my_list):
    if my_list[0]>name_str:
        break
    index_no+=1
my_list.insert(index_num, contained_list)
read_grades=file_pointer.readline()
   file_pointer.close()

   print format ("Name","<10")+" | "+format("HM1"," >5")+" | "+format("HM2"," >5")+" | "+format("HM3"," >5")+" | "+format("HM4"," >5")+" | "+format("avg_float"," <10")+" | "

   for index_no in range(0, len(my_list)):

    print format(my_list[index_num][0], "<10") + " | " + \

       format(my_list[index_num][1], " >5") + " | " + \

       format(my_list[index_num][2], " >5") + " | " + \

       format(my_list[index_num][3], " >5") +  " | " + \

       format(my_list[index_num][4], " >5") + " | " + \

       format(my_list[index_num][5], " >10.2f") + " | "
4

2 回答 2

3

你有,缩写形式:

while 0==0:
   if grades_mix[index_no]=="HM1":
      index_no+=1

没有 break 语句可以退出循环(哪个,怎么样while True?)。迟早你会超出范围。

于 2013-10-10T14:32:42.410 回答
1

错误信息

IndexError: list index out of range

表示您正在使用数组中不存在的索引。尝试通过打印出数组的长度来检查数组的大小

打印“数组grades_mix的长度=”,len(grades_mix)

如果数组的长度小于等于1,那么在第一步调用的时候会报错

grades_mix[index_no]

index_no=1

可能是您的文件包含空行或带有单个单词的行,您需要在脚本中注意这一点。

于 2013-10-10T14:44:57.553 回答