我正在制作一个程序,该程序打开并读取一个csv文件,并按以下方式进行排序:
我的代码已经按最高分数排序,但它会打印出每个学生获得的所有分数,而不是打印出他们最近3次成绩中的最高分数。
- 按每个学生的最高分进行字母顺序排序。
- 按最高分从高到低排序。
- 按平均分从高到低排序。
我的代码已经按最高分数排序,但它会打印出每个学生获得的所有分数,而不是打印出他们最近3次成绩中的最高分数。
Andrew 1
Andrew 2
Andrew 3
Andrew 4
Andrew 5
最后我需要帮助计算每个学生的平均分。我猜应该通过将安德鲁的最后3个分数(即5、4和3)相加,然后除以3来完成。
这是我的代码:
import csv, operator
selected_class = input("Pick a class file, (5, 6 or 7)? ")
print("1. Alphabetical order.")
print("2. Highest to lowest.")
print("3. Average score.")
selected_sorting = input("Pick an option 1, 2, or 3: ")
class_file = "Class " + selected_class + ".csv"
open_file = open(class_file)
csv_file = csv.reader(open_file)
if selected_sorting == "1":
sorted_name = sorted(csv_file, key=operator.itemgetter(0))
for i in sorted_name:
print(i)
elif selected_sorting == "2":
sorted_results = sorted(csv_file, key=lambda row: int(row[1]), reverse=True)
for i in sorted_results:
print(i)
elif selected_sorting == "3":
collections.deque
和maxlen=3
,对于后者,您需要使用heapq.nlargest
。 - ShadowRanger