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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/81587.html
標籤:其他
上一篇:如何在pyqt中通過OpenCV實作對視窗的透視變換
下一篇:(非常詳細適合超小白)Ubuntu16.04系統下搭載PyTorch深度學習環境-顯卡、cuda和torchvision包等安裝
