
统计每个人的平均成绩,并根据平均成绩进行排序,要求按姓名检索平均成绩和排名
一个实现如下:
参考链接:
https://blog.csdn.net/Jarry_cm/article/details/99684387
https://blog.csdn.net/little_stick_i/article/details/120987540
https://blog.csdn.net/Itmastergo/article/details/128964676
https://blog.csdn.net/cxcxrs/article/details/82459800
https://blog.csdn.net/Strive_0902/article/details/119856186
https://blog.csdn.net/m0_37382341/article/details/102495328
https://blog.csdn.net/yyuggjggg/article/details/128671749
grade1={'刘达':89,'王尔':95,'李珊':67,'陈思':75}
grade2={'刘达':75,'王尔':79,'李珊':79}
grade3={'李珊':87,'陈思':91,'张悟':75}
grade4={'刘达':89,'王尔':86,'张悟':99}
ranks={} # 存储每个学生姓名和平均成绩的字典
# https://blog.csdn.net/Jarry_cm/article/details/99684387
# 先遍历4个成绩字典,计算出每个学生的总分
for name,grade in grade1.items():
# https://blog.csdn.net/little_stick_i/article/details/120987540
if name not in ranks: # 如果当前学生没有在字典ranks中,则将当前学生的姓名和成绩存入字典,下同
# https://blog.csdn.net/Itmastergo/article/details/128964676
ranks[name]=grade
else: # 如果当前学生已经存在字典ranks中,则将当前分数累积到当前学生的值中,下同
ranks[name]=ranks[name]+grade
for name,grade in grade2.items():
if name not in ranks:
ranks[name]=grade
else:
ranks[name]=ranks[name]+grade
for name,grade in grade3.items():
if name not in ranks:
ranks[name]=grade
else:
ranks[name]=ranks[name]+grade
for name,grade in grade4.items():
if name not in ranks:
ranks[name]=grade
else:
ranks[name]=ranks[name]+grade
# 遍历ranks字典,计算每个学生的平均成绩
for name,grade in ranks.items():
ranks[name] = grade/4
print(ranks) # 打印每个学生的平均成绩
print()
# https://blog.csdn.net/cxcxrs/article/details/82459800
# 按平均成绩排序字典ranks
sortRanks= sorted(ranks.items(),key=lambda x:x[1], reverse=True)
# https://blog.csdn.net/Strive_0902/article/details/119856186
sortRanks = dict(sortRanks) # 将排序后的列表转为字典
#print(sortRanks)
rank=1
# 打印排序后的结果
for name,avg in sortRanks.items():
print("姓名:"+name+", 平均成绩:"+str(sortRanks[name])+", 排名:"+str(rank))
rank+=1
print()
# 从输入获取学生姓名,打印平均成绩和排名
name=input("请输入姓名:")
# https://blog.csdn.net/m0_37382341/article/details/102495328
while name!='':
# https://blog.csdn.net/yyuggjggg/article/details/128671749
# 计算当前学生的排名
rank = {key:index for index,key in enumerate(sortRanks)}.get(name)+1
# 打印结果
print("姓名:"+name+", 平均成绩:"+str(sortRanks[name])+", 排名:"+str(rank))
name=input("请输入姓名:") # 获取下个学生的姓名
