在文件python编程中排序高分

时间:2017-07-25 15:37:54

标签: python

我有一个我正在编程的游戏,最高分将被保存到一个文件中,它应该在最佳分数之后进行排序等。我已经编写了一个类和一种方法来节省分数,但不能弄清楚如何在彼此之后对它们进行排序,例如: 例如:

16

9

3

最后的分数过程!

# Display the final score.
drawBoard(mainBoard)
scores = getScoreOfBoard(mainBoard)

2 个答案:

答案 0 :(得分:0)

你需要将reverse = True传递给有序函数,如下所示:

return sorted(scores, reverse=True)

一个简单的解决方法是在将高分写入文件之前对其进行排序:

with open(self.HIGHSCORE_FILE, "w") as f:
    f.write("\n".join(str(score) for score in sorted(highscores, reverse=True)))

但是,每次添加高分时,这都会对文件进行完全重写和排序。更好的方法是将每个分数简单地插入文件中的正确行。

答案 1 :(得分:0)

更改

def save_highscore(self, highscore):
    highscores = set(self.get_highscores(False))  
    if highscore in highscores:  
        return  
    highscores.add(highscore)  
    with open(self.HIGHSCORE_FILE, "w") as f: 
       f.write(" ".join(str(score) for score in highscores)) 

def save_highscore(self, highscore):
    highscores = set(self.get_highscores(False))  
    if highscore in highscores:  
        return  
    highscores.add(highscore)  
    with open(self.HIGHSCORE_FILE, "w") as f: 
       f.write("\n".join(str(score) for score in sorted(highscores, reverse=True)))