m0_53471479
阿朱、
2021-03-22 16:56
采纳率: 100%
浏览 25

求大佬们帮看一下为啥show_student那块老是报错,十分感谢

def insert():
    student_list=[]
    while True:
        id=int(input(' 请输入学生id :'))
        if not id:
            break
        name=input(' 请输入姓名   :')
        if not name:
            break

        try:
            English=int(input('请输入英语成绩:'))
            Mathe=int(input('请输入数学成绩:'))
            Physics=int(input('请输入物理成绩:'))
        except:
            print('输入无效,不是整数类型,请重新输入')
            continue
        #将录入的学信息保存在字典当中
        student={'id':id,'name':name,'English':English,"Mathe":Mathe,'Physics':Physics}
        #将学生信息添加到列表当中
        student_list.append(student)
        answer=input('是否继续添加?y/n\n')
        if answer=='y':
            continue
        else:
            break
    #调用save()函数以保存信息 
    save(student_list)
    print('学生信息录入完毕,即将返回菜单')#录入学生信息
def save(list):
    try:
        stu_txt=open(filename,'a',encoding='utf-8')
    except:
        stu_txt=open(filename,'w',encoding='utf-8')
    for item in list:
        stu_txt.write(str(item)+'\n')
    stu_txt.close()#(储存)

def search():
    student_query=[]
    while True:
        id=' '
        name=' '
        if os.path.exists(filename):
            mode=input('按ID查找请输入1,按1姓名查找请输入2:')
            if mode=='1':
                id=input('请输入学生ID:')
            elif mode=='2':
                name=input('请输入学生姓名:')
            else:
                print('您的输入有误,请重新输入!')
                search()
            with open(filename,'r',encoding='utf-8') as rfile:
                student=rfile.readlines()
                for item in student:
                    d=dict(eval(item))
                    if id!=' ':
                        if d['id']==id:
                            student_query.append(d)
                    elif name!=' ':
                        if d['name']==name:
                            student_query.append(d)
            #显示查询结果
            show_student(student_query)
            #清空列表
            student_query.clear()
            answer=input('是否继续查询? y/n\n')
            if answer=='y':
                continue
            else:
                print('操作成功,即将返回菜单')
                break
        else:
            print('暂未保存信息!')
            return#查询学生信息

def show_student(lst):
    if len(lst)==0:
        print('未查到学生信息,无数据显示!')
        return
    #定义标题的显示格式
    format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^8}\t'
    print(format_title.format('ID','姓名','英语成绩','数学成绩','物理成绩','总成绩'))
    #定义内容的显示格式
    format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^8}\t'
    for item in lst:
        print(format_data.format(item.get('id'),
                                 item.get('name'),
                                 item.get('English'),
                                 item.get('Mathe'),
                                 item.get('Physics'),
                                 int(item.get('id'))+
                                 int(item.get('name'))+
                                 int(item.get('English'))+
                                 int(item.get('Mathe'))+
                                 int(item.get('Physics'))
                                  ))#查询信息的显示

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qq_38084396
    芫尘梦 2021-03-22 17:06
    已采纳

    1.format后面的个数比前面多一个

    2.int(item.get('name'))  item.get('name')为字符串 非数字时 转换会报错

    点赞 1 评论

相关推荐