列表索引超出我的编码范围

2024-09-30 00:36:24 发布

您现在位置:Python中文网/ 问答频道 /正文

谁能帮我解决这个错误,我一直得到请。我试图寻找解决办法,但找不到。下面是错误信息,也是我编码的一部分

Please enter your class Y or X or Z: Y
Traceback (most recent call last):
File "/Volumes/LIAM'S USB/DEV6 FINAL.py", line 118, in <module>
score=int(items[1])
IndexError: list index out of range


results={
start=True
while (start):
    pupil_class=input("\nPlease enter your class Y or X or Z: ")
    if pupil_class == ("Y"):
            classfile="Class_Y_results.txt" 
    elif pupil_class == ("X"):
            classfile="Class_X_results.txt" 
    elif pupil_class == ("Z"):
            classfile="Class_Z_results.txt" 

    f=open(classfile,'r')

    for line in f:
            items=line.split(',')       
            name=items[0]
            score=int(items[1])                
            if name in results:
                    results[name].append(score)                        
            else:
                    results[name]=[]
                    results[name].append(score)

    f.close()

Tags: ornameintxtyourlineitemsresults
2条回答

您的一个文件中可能有一个空的like。这将不包含逗号,因此您将不会有item[1],这将生成您看到的错误消息

检查从拆分中返回的字段数以解决此问题

您的Class_Y_Results.txt中的某一行只有一个条目(没有用逗号分隔),因此items=line.split(',')返回的列表的长度只有1(或者可能是0),导致score=int(items[1])抛出一个IndexError

样本:

>>> a = "foo,bar"
>>> b = "foo"
>>> len(a.split(','))
2
>>> len(b.split(','))
1
>>> a.split(',')[1]
'bar'
>>> b.split(',')[1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

相关问题 更多 >

    热门问题