所以这段代码应该打开csv文件,从第1-3列(不是0)中获取值。一旦它得到了每一行及其3列的值,它就应该把这些值相加,然后除以3。我认为这段代码可以工作,但是在每一行中添加3列似乎不起作用。如果有人能告诉我为什么以及如何解决这个问题,那就太好了,谢谢。我很确定问题出在for index, summedValue in enumerate (sums):
特别是“summedValue”值
if order ==("average score"):
askclass = str(input("what class?"))
if askclass == ('1'):
with open("Class1.csv") as f:
columns = f.readline().strip().split(" ")
sums = [1] * len(columns)
for line in f:
# Skip empty lines
if not line.strip():
continue
values = line.split(" ")
for i in range(1,len(values)):
sums[i] += int(values[i])
for index, summedValues in enumerate (sums):
print (columns[index], 1.0 * (summedValues) / 3)
除非你已经写了空行到你的csv文件将不会有任何,不知道如何头适合它,但你可以使用它,如果必要的
您还可以使用python3中的
*
语法进行解包,我认为这样更好:要排序,请使用reverse=True按平均值排序,然后从最高到最低排序:
传递
key=itemgetter(1)
意味着我们按第二个子元素排序,第二个子元素是每个元组的平均值使用
作为Class1.csv 以及
我得到了预期的结果:
[更新]观察:
sums = [1] * len(columns)
上的sum有长度列,但您忽略了操作中的第一列,因此sum[0]的值始终是1,似乎没有必要李>summedValues / 3.0
而不是1.0 * (summedValues) / 3
就足够了也许这就是你想要的
相关问题 更多 >
编程相关推荐