【发布时间】:2016-03-05 18:28:26
【问题描述】:
这是我的代码(对不起,我知道它很乱):
import csv
with open('test.csv', 'w', newline='') as fp:
a = csv.writer(fp, delimiter=',')
data = [['Bob', '4', '6', '3'],
['Dave', '7', '9', '10'],
['Barry', '5', '2', '3']]
a.writerows(data)
print("1 for for alphabetical orderwith each students highest score\n2 for highest score, highest to lowest\n3 for average score, highest to lowest")
cho_two=int(input())
class_a = open("test.csv")
csv_a = csv.reader(class_a)
a_list = []
for row in csv_a:
row[1] = int(row[1])
row[2] = int(row[2])
row[3] = int(row[3])
minimum = min(row[1:3])
row.append(minimum)
maximum = max(row[1:3])
row.append(maximum)
average = sum(row[1:3])//3
row.append(average)
a_list.append(row[0:9])
if cho_two == 1:
alphabetical = [[x[0],x[6]] for x in a_list]
print("\nCLASS A\nEach students highest by alphabetical order \n")
for alpha_order in sorted(alphabetical):
print(alpha_order)
class_a.close()
这是应该输出的内容:
['Barry', 5]
['Bob', 6]
['Dave', 10]
我希望它按字母顺序输出该人获得的最高分。
它实际上是这样输出的:
['Barry', 2]
['Bob', 3]
['Dave', 5]
谢谢。
【问题讨论】:
-
您可能应该在此处使用
class_a和初始fp的上下文管理器。 -
您正在使用
x[6]。那恰好是average,而不是maximum... -
@hlt 哦,对了!那我应该把它改成什么?
-
@hlt 我知道了,谢谢。
标签: python sorting csv python-3.x