文件里有词但是显示可以error是为什么呀 该怎么改正 在做Python《分配学号》😭

如图 p1p2是书上的内容

img

img


p3这个程序是参考一位博主的

img


p4已经转换成了csv格式 内容自己编的

img

img

img


是附件有问题还是程序问题
下面是按二楼的改了之后的结果

img

def readFile(filename): #读取文件返回列表
    file = open(filename,"r")
    ls = list(line.strip().split(',') for line in file)
    file.close()
    return ls
def studentID(lsStudent,lsSchool,lsMajor):#生成学生学号
    dicSchool = { x[0]:x[1] for x in lsSchool}
    dicMajor = {x[0]: x[1] for x in lsMajor} 
    detail = [] 
    for student in lsStudent: 
        id = '012' 
        id = id + student[5][2:] + dicSchool[student[2]] + dicMajor[student[3]] + student[4][-4:]
        id = id +  '{0:0>2}'.format([x[0] for x in lsStudent if student[4] == x[4]].index(student[0]) + 1) 
        detail.append([id] + student)
    return detail                                           
def info(stuName,lsStudent): #查找学生信息
    info = [info for info in lsStudent if info[1] == stuName][0]
    return info                                                  
def classmate(stuClass,lsStudent): #查找班级同学
    classmate = [info for info in lsStudent  if info[5] == stuClass]
    return classmate                                                
 
stuName = input()
stuClass = input()
studentList = 'studentList.csv' 
schoolCode = 'schoolCode.csv' 
MajorCode = 'MajorCode.csv' 
lsStudent = readFile(studentList)                            
lsSchool = readFile(schoolCode)         
lsMajor = readFile(MajorCode)    
studentDetail = studentID(lsStudent, lsSchool, lsMajor) 
print(*info(stuName,studentDetail))        
lsclassmate = classmate(stuClass,studentDetail)     
for classmate in lsclassmate:
    print(*classmate)
 

看你这个报错内容好像键的前面有个空格啊,检查一下student[2]的值是否正确

img

https://blog.csdn.net/Allure_LoveU/article/details/118927734
首先,keyerror是因为dict里面没有这个key,但是你去“取”这个没有的key导致的报错。
我推断是你第23行dicshool 和dicmajor的key出了问题,这个school【2】或者school【3】有可能并不在这两个里面,导致报错。
请把代码用代码块发出来,最好附上三个csv文件的内容,不然看不出来你这个具体出了什么问题