I’m a beginner programmer currently learning Python and I’m programming a game for the first time.
The name and result of the winner is written to an external file and can be read from and displayed in the form of a table.
However, I am getting an error here:
sort = sorted(results, key = itemgetter(0), reverse = True) IndexError: list index out of range
This is the whole function for reference:
def leadTable(): results = [] with open('winnerScores.txt', 'r') as file: r = csv.reader(file, delimiter = ',') for row in r: results.append(row) sort = sorted(results, key = itemgetter(0), reverse = True) print(" nnn==================== Leaderboard Table ====================") print(" Scoret Namet") print("____________________________________________________________n") for row in sort: print ("|",row[0]," t " ,row[1]," "*(9-len(row[1]))," ","|") print("____________________________________________________________nnn")
How could I fix this?
Advertisement
Answer
Your file has empty lines, which csv.reader
is returning as empty lists. You should skip them when filling in `results.
for row in r: if len(row) >= 2: results.append(row)
I used >= 2
because the code that prints the leaderboard requires row[0]
and row[1]
to be filled in.