你需要使用语法
key=final_score
传递排序依据的函数时:
b.sort(key=final_score)
但sort方法需要
function
要传递的
不
通过
int
添加的值
name2 + name3 + name4
不起作用。
如果您只想对分数列表进行排序,只需调用
b.sort()
你应该做的是使用默认字典,并使用每个名称作为关键字,并将所有分数存储在列表中:
from collections import defaultdict
d = defaultdict(list)
for _ in range(students):
name = input("Enter your name: ")
scores = input("Enter your scores separated by a space: "
# add all scores for the user to the list
d[name].extend(map(int,scores.split()))
要显示平均值、总值和最大值,这是微不足道的:
# from statistics import mean will work for python 3.4
for k,v in d.items():
print("Scores total for {} is {}".format(k,sum(v)))
print("Scores average for {} is {}".format(k,sum(v)/len(v))) # mean(v) for python 3,4
print("Highest score for {} is {}".format(k, max(v)))
按最高用户总分排序的打印:
print("The top scoring students from highest to lowest are:")
for k,v in sorted(d.items(),key=lambda x:sum(x[1]),reverse=True):
print("{} : {}".format(k,sum(v)))
现在你有一个字典,其中学生的名字是关键,每个学生的分数都存储在一个列表中。
实际上,您应该添加一个try/except,接受用户输入并验证其格式是否正确。