我有一个文本文件,每个学生包含3个分数。
"Elizabeth, 2, 7, 3, Anna, 9, 6, 4, Jenny, 8, 1, 5, Victoria, 1, 4, 6"
我需要导入这些结果并用逗号分隔。我还需要按照以下方式对它们进行排序:
平均得分,从最高到最低
按字母顺序显示每位学生的高分
得分最高得分
任何人都可以帮助我吗?
这是我到目前为止所做的,但我不确定这是正确的方法:
Class1 = " Jenny, 8, 1, 5, Elizabeth, 2, 7, 3, Anna, 9, 6, 4 , Victoria, 1, 4, 6"
Listofresults = Class1.split(",")
print (Listofresults)
答案 0 :(得分:1)
我不会为你编写整个程序,但这应该让你开始。它显示了一种分割和存储输入数据的方法,它显示了一些对它进行排序的方法。我会让你弄清楚如何以所要求的确切格式打印数据。
class1 = " Jenny, 8, 1, 5, Elizabeth, 2, 7, 3, Anna, 9, 6, 4 , Victoria, 1, 4, 6"
#Split on commas and then remove leading and trail spaces
data = [word.strip() for word in class1.split(",")]
print('Input: ', data)
student_scores = []
for i in range(0, len(data), 4):
#Get next name & 3 scores
name, scores = data[i], data[i+1:i+4]
#Convert scores in list from string to int
scores = [int(s) for s in scores]
#Save the name and scores, with the scores sorted from high to low
student_scores.append((name, sorted(scores, reverse=True)))
print('Alpha: ', sorted(student_scores))
def mean_score(student):
scores = student[1]
return sum(scores) / len(scores)
print('Average:', sorted(student_scores, key=mean_score, reverse=True))
<强>输出强>
Input: ['Jenny', '8', '1', '5', 'Elizabeth', '2', '7', '3', 'Anna', '9', '6', '4', 'Victoria', '1', '4', '6']
Alpha: [('Anna', [9, 6, 4]), ('Elizabeth', [7, 3, 2]), ('Jenny', [8, 5, 1]), ('Victoria', [6, 4, 1])]
Average: [('Anna', [9, 6, 4]), ('Jenny', [8, 5, 1]), ('Elizabeth', [7, 3, 2]), ('Victoria', [6, 4, 1])]
我认为这个程序中最棘手的部分是最后的sorted()
调用,我使用mean_score
函数作为关键函数。如果您已阅读我链接的文档应该有意义,但如果您需要进一步说明,请告诉我。