python—成績管理系統考試題目:小學五年級學生小明、小王、小麗、小花的語文、英語、數學成績如……
最近在做人工智能微專業時發現了一道特別有趣的題目,原諒作者才疏學淺,花費了將近一下午的時間才寫出正確的答案……想來慚愧
相信你們一定會喜歡的,代碼中並沒有用複雜的函數,只是採用簡單的結構堆積,對於初學者十分友好!
下面就詳細的爲大家解答這一題目。
感興趣的可以關注我……(只是可以,並不求關注,正在上學,不會有充足的時間定期發博客,謝謝大家理解)
第一題
利用字典內嵌列表形式記錄表1所示內容
這題就是簡單的調用字典結構 ,即字典中嵌套列表
我以前學習時的卡片如下:
卡片中題目的正解
通過卡片大家可以先了解一下字典嵌套列表的基本格式與具體的作用,這是關鍵!
本題大同小異
(代碼片不在以文本形式放置,本人用的平板不好操作,最後整體貼一完整代碼)
第二題
打印上述記錄內容
就是簡單的打印嘍,這題不要技術含量的
唯一要注意的是儘量使用文字說明,不要一股腦print() ,寫的代碼別人也弄不清
就像高數中,別什麼都洛必達……
可以公開的情報
\t : 轉義字符,作用是調整輸出的文本格式的
原文鏈接: link.
第三題
要求用一個for循環統計所有人的語文、英語、數學成績
用for循環將所有人的語文……成績統計出來
像這樣:
字典中如何用for循環遍歷??
不懂得建議多看下書本,基礎問題,當然,相信大家都掌握了這個知識點。
第四題
求每科的平均成績
這題 emmmmm,首先我們要理清的思路:
1.
for grade in Grade_fifth.values():
print(grade[2])
grade[2]
爲一個字符串,切不可當作整數計算,否則會報錯!
**2.**求語文總成績
sum_Language = 0
sum_English = 0
sum_Math = 0
sum_Language = sum_Language + float(grade[0])
sum_English = sum_English + int(grade[1])
sum_Math = sum_Math + int(grade[2])
注意字符串與整數,浮點型數的相互轉化關係
average_Language = sum_Language/4
average_English = sum_English/4
average_Math = sum_Math/4
print("語文、英語、數學平均成績分別是:")
print(average_Language)
print(average_English)
print(average_Math)
注意:代碼的位置並不是像我現在排版的,這樣只是爲了方便看,具體以最後整體代碼爲主!
第五題
求每科最高成績及對應姓名(Hardest)
判斷最高分數很簡單,可以用擂臺算法,也可以一個一個比較,全憑喜好……
代碼:確定最大值
Max_Language = 0
if(Max_English <= float(grade[0])):
Max_English = float(grade[0])
1.首先,明白一點,難點在於如何將人名和數據對應起來,這對於資深大佬來說不是難題,但對於像我們這樣的初學者就不簡單了。
2.其實我們大可再次創建一個列表list存儲人名
list = ['小明','小王','小麗','小花']
但是如何將list與最大值聯繫在一起呢,就是如何將Max_English與list中對應人名聯繫一起。
其實我們可以設想一下,保險公司如何聯繫你呢,當然是中介了,對!我們就需要一箇中介!
timer = 0
Max_English = 0
English_max_name = 0
for grade in Grade_fifth.values():
if(Max_English <= int(grade[1])):
Max_English = int(grade[1])
English_max_name = timer
timer = timer+1
print("英語最高成績及對應姓名")
print(list[English_max_name])
print(Max_English)
比如說,
到此結束!!!
完整代碼
sum_Language = 0
sum_English = 0
sum_Math = 0
Max_Language = 0
Max_English = 0
Max_Math = 0
list = ['小明','小王','小麗','小花']
Language_max_name = 0
English_max_name = 0
Math_max_name = 0
Grade_fifth = {
'小明':['95.5','98','97'],
'小王':['96','92','82'],
'小麗':['91','100','90'],
'小花':['88','93','99'],
}
for name,grade in Grade_fifth.items():
print("\n"+name+"語文、英語、數學成績是:")
for grade_specify in grade:
#打印上述記錄內容22222222222222222222
print("\t"+grade_specify)
#要求用一個for循環統計所有人的語文、英語、數學成績3333333333333333333
timer = 0
print("所有同學語文成績是:")
for grade in Grade_fifth.values():
print(grade[0])
sum_Language = sum_Language + float(grade[0])
if(Max_Language <= float(grade[0])):
Max_Language = float(grade[0])
Language_max_name = timer
timer = timer+1
timer = 0
print("所有同學英語成績是:")
for grade in Grade_fifth.values():
print(grade[1])
sum_English = sum_English + int(grade[1])
if(Max_English <= int(grade[1])):
Max_English = int(grade[1])
English_max_name = timer
timer = timer+1
timer = 0
print("所有同學數學成績是:")
for grade in Grade_fifth.values():
print(grade[2])
sum_Math = sum_Math + int(grade[2])
if(Max_Math <= int(grade[2])):
Max_Math = int(grade[2])
Math_max_name = timer
timer = timer+1
#求每科的平均成績4444444444444444444444444444444
average_Language = sum_Language/4
average_English = sum_English/4
average_Math = sum_Math/4
print("語文、英語、數學平均成績分別是:")
print(average_Language)
print(average_English)
print(average_Math)
#求每科最高成績及對應姓名5555555555555555555555555
print("語文最高成績及對應姓名")
print(list[Language_max_name])
print(Max_Language)
print("英語最高成績及對應姓名")
print(list[English_max_name])
print(Max_English)
print("數學最高成績及對應姓名")
print(list[Math_max_name])
print(Max_Math)
編譯結果(.exe)