字典的案例演示

案例:有10個學生,姓名自行添加。有三門考試語文,數學和英語,隨機爲這10個學生生成分數【50-100】,需求:打印一張成績排名表。數據存儲格式如下:

import random

# 初始化學生的基本信息

dic_student_info = {95001: "王一", 95002: "胡二", 95003: "張三", 95004: "李四", 95005: "趙五",

                    95006: "馬六", 95007: "楊七", 95008: "劉八", 95008: "孫九", 95010: "陳十"}

# 生成學生成績

student_result = []

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章