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

求大佬们帮看一下为啥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条回答 默认 最新

  • 芫尘梦 2021-03-22 17:06
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格