exam
从控制台输入输出
results.csv
results.csv和exam.py放在同一个文件夹里
#测试专用,不上交
A,85,60,77
B,68,30,91
C,48,65,38
exam.py
记得修改提示信息
class Student: # 定义一个学生类
def __init__(self, num, J, M, H):
self.num = num
self.J = int(J)
self.M = int(M)
self.H = int(H)
def IssearchByNum(stulist, num): # 按学号查找看是否学号已经存在
for item in stulist:
if item.num == num:
return True
def searchByNum(stulist, num): # 按学号查找看是否学号已经存在
for item in stulist:
if item.num == num:
print(item.num, "は ", "日本語:", str(item.J),
"数学:", str(item.M), "歴史:", str(item.H))
return True
def Addwhile(): # 添加一个学生信息
while True:
num = input("请输入学号番号,或者输入end结束")
if num == "end":
break
J = input("日本语成绩")
M = input("数学成绩")
H = input("历史成绩")
stu = Student(num, J, M, H)
if IssearchByNum(stulist, stu.num) == True:
print("学号已经存在!")
return False
stulist.append(stu)
def Del(stulist, num): # 删除一个学生信息
for item in stulist:
if item.num == num:
stulist.remove(item)
print("删除成功!")
break
def Save(stulist): # 保存到文本
with open("results.csv", "w", encoding="utf-8") as fOut:
for stu in stulist:
fOut.write(stu.num+","+str(stu.J)+"," +
str(stu.M)+","+str(stu.H)+"\n")
print("保存成功!")
def CsMax(stulist, course):
if course == "J":
stu = sorted(stulist, key=lambda stu: stu.J)[-1]
print("日本语的最高分",stu.num,"は", str(stu.J))
elif course == "M":
stu = sorted(stulist, key=lambda stu: stu.M)[-1]
print("数学的最高分",stu.num,"は", str(stu.M))
elif course == "H":
stu = sorted(stulist, key=lambda stu: stu.H)[-1]
print("历史的最高分",stu.num,"は", str(stu.H))
def CsMin(stulist, course):
if course == "J":
stu = sorted(stulist, key=lambda stu: stu.J)[0]
print("日本语的最低分",stu.num,"は", str(stu.J))
elif course == "M":
stu = sorted(stulist, key=lambda stu: stu.M)[0]
print("数学的最低分",stu.num,"は", str(stu.M))
elif course == "H":
stu = sorted(stulist, key=lambda stu: stu.H)[0]
print("历史的最低分",stu.num,"は", str(stu.H))
def CsAve(stulist, course):
sum = 0
if course == "J":
for stu in stulist:
sum += stu.J
print("日本語的平均分", str(sum/len(stulist)))
elif course == "M":
for stu in stulist:
sum += stu.M
print("数学的平均分", str(sum/len(stulist)))
elif course == "H":
for stu in stulist:
sum += stu.H
print("历史的平均分", str(sum/len(stulist)))
def CsName(): # 获取,检查课程名
while True:
name = input("科目名は,J(日本語),M(数学),H(歴史)のいずれか1つで入力")
if name in ["J", "M", "H"]:
return name
def Init(stulist):
with open("results.csv", "r", encoding="utf-8") as fIn:
for line in fIn:
line = line.rstrip().split(",")
student = Student(line[0], line[1], line[2], line[3])
stulist.append(student)
# 菜单
def menu(stulist):
while True:
print("********************")
print("--------菜单--------")
print("添加学生信息----1")
print("求科目的最高分----2")
print("求科目的最低分----3")
print("求科目的平均分----4")
print("查询学生的成绩----5")
print("保存学生的成绩----6")
print("退出程序----------7")
print("-------------------")
print("*******************")
nChoose = input("请输入你的选择:")
if nChoose == "1":
Addwhile()
elif nChoose == "2":
CsMax(stulist, CsName())
elif nChoose == "3":
CsMin(stulist, CsName())
elif nChoose == "4":
CsAve(stulist, CsName())
elif nChoose == "5":
if searchByNum(stulist, input("请输入学生番号")):
print("查找成功")
else:
print("学生番号不存在")
elif nChoose == "6":
Save(stulist)
elif nChoose == "7":
return
else:
print("输入有误,请重新输入!")
# 测试函数部分
if __name__ == '__main__':
# 定义一个列表用来存储所有学生的信息
stulist = []
# 初始化,从文件中读取信息
Init(stulist)
# 菜单函数
menu(stulist)