python - ValueError: max() arg is an empty sequence again -


my code follows presents me error message saying

valueerror: invalid literal int() base 10: '4\njohn'"  

on line

players.append(player(elems[e], list(map(int, elems[e+1:e+4]))))                 

code:

from __future__ import division 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) / 3  open('classfilea.txt') f: l in f:     l = l.strip(); # remove end of line char (\n) text = f.read() players = [] elems = text.split(',')          e in range(0,len(elems),4):         players.append(player(elems[e], list(map(int, elems[e+1:e+4]))))     byhighscore = sorted(players, key=attrgetter('highscore'), reverse=true)     byavg = sorted(players, key=attrgetter('avgscore'), reverse=true)      print('')     p in byhighscore:         print('{0} {1:g}'.format(p.name, p.highscore))      print('')     p in byavg:         print('{0} {1:g}'.format(p.name, p.avgscore)) 

my code supposed sort data sorted :

ahmed,1,6,4 john,5,3,5 kali,5,4,7 larry,4,7,6 

by highest score , average score

edited code :

from __future__ import division 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) / 3  open('classfilea.txt') f: l in f:     l = l.strip(); # remove end of line char (\n) text = f.read() players = [] elems = text.split(',')          e in range(0,len(elems),4):         players.append(player(elems[e], list(map(int, elems[e+1:e+4]))))     byhighscore = sorted(players, key=attrgetter('highscore'), reverse=true)     byavg = sorted(players, key=attrgetter('avgscore'), reverse=true)      print('')     p in byhighscore:         print('{0} {1:g}'.format(p.name, p.highscore))      print('')     p in byavg:         print('{0} {1:g}'.format(p.name, p.avgscore)) 

now code informing me score empty. printed score in separate page , prints "[]" have been informed due logic of code. "for l in f loop. after current file pointer @ end of file, following f.read() won't data. pm2ring said: "you need reorganize logic of code"

when add list strings score:

    players.append(player(elems[0], map(int, elems[1:]))) 

, , try obtain max:

    self.highscore = max(scores) 

you obtain error you've mentioned. @ point in code:

    line in f:          elems = line.split(',')          players.append(player(elems[0], map(int, elems[1:]))) 

you need make sure "elems[1:]" not carry strings. it's parsing problem file. if have 4 elements each person (name , 3 numbers) give instruction while building line:

    in range(len(elems)//4):          players.append(player(elems[4*i], map(int, elems[4*i+1:4*(i+1)]))) 

also advise remove "map" since not have "len", or replace replace:

    self.avgscore = sum(scores) / len(scores) 

by:

    self.avgscore = sum(scores) / 3 

if length of scores 3.


Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -