案例:有10個學生,姓名自行添加。有三門考試語文,數學和英語,隨機爲這10個學生生成分數【50-100】python
需求:打印一張成績排名表。app
數據存儲格式以下:dom
import randomspa
# 初始化學生的基本信息code
dic_student_info = {95001: "王一", 95002: "胡二", 95003: "張三", 95004: "李四", 95005: "趙五",數學
95006: "馬六", 95007: "楊七", 95008: "劉八", 95008: "孫九", 95010: "陳十"}it
# 生成學生成績import
student_result = []file
for i in range(len(dic_student_info)):遍歷
temp_result = []
for j in range(3):
temp_result.append(random.randint(50,100))
# 添加到student_result中
student_result.append(temp_result)
# 打印生成的成績
print(student_result)
# 生成總分的list
total_result = []
for i in student_result:
total_result.append(sum(i))
# 把總分倒敘排列
total_result.sort(reverse=True)
print(total_result)
# 組合存儲結構
total_student_result = {}
# 得到學生信息的key
student_sno = list(dic_student_info)
# 遍歷
index = 0
for i in student_sno:
temp_total = {}
temp_total["姓名"] = dic_student_info[i]
temp_total["明細"] = list(student_result)[index]
temp_total["總分"] = sum(list(student_result)[index])
temp_total["名次"] = total_result.index(sum((student_result)[index])) + 1
total_student_result[i] = temp_total
index += 1
for i in total_student_result:
print(i, ":", total_student_result[i])
# 打印一張成績倒敘排名表【名次,學號,姓名,語文,數學,英語,總分,均分】
print("\n \n ###########################成績統計表##############################")
print("名次 學號 姓名 語文 數學 英語 總分 均分")
print("=====================================================================")
for i in range(len(dic_student_info)):
for j in total_student_result:
if total_student_result[j]["名次"] == i + 1:
print(i+1, end="\t \t")
print(j, end="\t \t")
print(total_student_result[j]["姓名"], end="\t \t")
print(total_student_result[j]["明細"][0], end="\t \t")
print(total_student_result[j]["明細"][1], end="\t \t")
print(total_student_result[j]["明細"][2], end="\t \t")
print(total_student_result[j]["總分"], end="\t \t")
print("%.2f" % (total_student_result[j]["總分"]/3))
break
else:continue
print("=====================================================================")
執行結果:
C:\python\python.exe C:/python/demo/file3.py
[[77, 57, 61], [64, 77, 65], [88, 88, 83], [95, 75, 100], [57, 79, 88], [59, 90, 90], [88, 68, 80], [59, 79, 89], [58, 55, 73]]
[270, 259, 239, 236, 227, 224, 206, 195, 186]
95001 : {'姓名': '王一', '明細': [77, 57, 61], '總分': 195, '名次': 8}
95002 : {'姓名': '胡二', '明細': [64, 77, 65], '總分': 206, '名次': 7}
95003 : {'姓名': '張三', '明細': [88, 88, 83], '總分': 259, '名次': 2}
95004 : {'姓名': '李四', '明細': [95, 75, 100], '總分': 270, '名次': 1}
95005 : {'姓名': '趙五', '明細': [57, 79, 88], '總分': 224, '名次': 6}
95006 : {'姓名': '馬六', '明細': [59, 90, 90], '總分': 239, '名次': 3}
95007 : {'姓名': '楊七', '明細': [88, 68, 80], '總分': 236, '名次': 4}
95008 : {'姓名': '孫九', '明細': [59, 79, 89], '總分': 227, '名次': 5}
95010 : {'姓名': '陳十', '明細': [58, 55, 73], '總分': 186, '名次': 9}
###########################成績統計表##############################
名次 學號 姓名 語文 數學 英語 總分 均分
=====================================================================
1 95004 李四 95 75 100 270 90.00
2 95003 張三 88 88 83 259 86.33
3 95006 馬六 59 90 90 239 79.67
4 95007 楊七 88 68 80 236 78.67
5 95008 孫九 59 79 89 227 75.67
6 95005 趙五 57 79 88 224 74.67
7 95002 胡二 64 77 65 206 68.67
8 95001 王一 77 57 61 195 65.00
9 95010 陳十 58 55 73 186 62.00
Process finished with exit code 0