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'))
))#查询信息的显示
求大佬们帮看一下为啥show_student那块老是报错,十分感谢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 芫尘梦 2021-03-22 17:06关注
1.format后面的个数比前面多一个
2.int(item.get('name')) item.get('name')为字符串 非数字时 转换会报错
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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语言代码为何输出了多余的空格