def meun():
print('''====================================
1)添加学生信息
2)查找学生信息
3)删除学生信息
4)显示所有学生的信息
5)单科排名(语文)
6)单科排名(数学)
7)总分排名
8)保存学生信息到文件(students.txt)
9)从文件中读取数据(students.txt)
退出:其他任意按键<回车>
=====================================''')
#M=[]
#添加函数
def add():
m={}
while True:
N1=input('请输入学生姓名:')
if not N1: # 名字为空 跳出循环
break
N2=input('请输入学生性别:')
N3=input('请输入学生年龄:')
N4=input('请输入学生语文成绩:')
N5=input('请输入学生数学成绩:')
m={'姓名':N1,'性别':N2,'年龄':N3,'语文成绩':N4,'数学成绩':N5}
M.append(m)
#显示函数
def show():
print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩')
for i in M:
print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'))
#删除函数
def del_():
d=input('请输入删除的学生名字:')
for i in M:
if d == i['姓名']:
M.remove(i)
#查找函数
def find_():
f=input('请输入要查找的学生姓名:')
for i in M:
if f == i['姓名']:
print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩')
print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'))
#单科排名函数(高—低)
def score():
print("按学生%s高-低显示"%X)
print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩')
s=sorted(M,key=lambda i:int(i[X]),reverse=True)
for i in s:
print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'))
#总分排名函数(高—低)
def add_score():
print("按学生总分高-低显示")
print('姓名','性别'.center(6),'年龄'.center(4),'语文成绩'.center(4),'数学成绩','总分')
s=sorted(M,key=lambda i:int(i['语文成绩'])+int(i['数学成绩']),reverse=True)
for i in s:
print(i.get('姓名'),i.get('性别').center(3),i.get('年龄').center(8),i.get('语文成绩').center(10),i.get('数学成绩'),str(int(i['语文成绩'])+int(i['数学成绩'])).center(10))
#保存文件函数
def save():
k=open("students.txt",'w')
for i in M:
k.write(str(i)+"\n")
k.close()
#主函数
def main():
M=[]
meun()
x=input('请输入操作数:')
while True:
if x == 1:
add()
elif x == 2:
find_()
elif x == 3:
del_()
elif x == 4:
show()
elif x == 5:
score(X='语文成绩')
elif x == 6:
score(X='数学成绩')
elif x == 7:
add_score()
elif x == 8:
save()
main()