到目前为止我的代码,但是当我尝试运行它时。它向我显示错误代码ValueError: max() arg is an empty sequence
。
文本文件中的数据按如下顺序排序:
Kevin 2 3 6
Mary 8 6 6
Ollie 9 7 3
我的代码似乎按字母顺序排列此组,或者将其排序为最高分数。
from __future__ import division
from operator import attrgetter
class Player(object):
def __init__(self, name, scores):
self.name = name
self.scores = scores
self.highscore = max(scores)
self.avgscore = sum(scores) / len(scores)
with open('classFilea.txt') as f:
players = []
for line in f:
elems = line.split(',')
players.append(Player(elems[0], map(int, elems[1:])))
byhighscore = sorted(players, key=attrgetter('highscore'), reverse=True)
byavg = sorted(players, key=attrgetter('avgscore'), reverse=True)
print('')
for p in byhighscore:
print('{0} {1:g}'.format(p.name, p.highscore))
print('')
for p in byavg:
print('{0} {1:g}'.format(p.name, p.avgscore))
答案 0 :(得分:2)
似乎构造函数中的“得分”参数为空。所以,你的文件中有一行没有','。
我会猜测并说文件末尾有一个空行。
答案 1 :(得分:1)
这一行必定出错/意外的数据格式:
players.append(Player(elems[0], map(int, elems[1:])))
导致此行出错:
self.highscore = max(scores)
无论map(int, elems[1:])
返回的是一个空序列。尝试在那之前添加print
语句,或在print(name, scores)
课程中添加Player
,以帮助诊断问题所在。