首页 > 解决方案 > 确定 2 名最高得分者并处理平局的可能性

问题描述

我有 5 个Player该类的实例,以及模拟每个玩家之间游戏的代码。每场比赛结束后,每个玩家在比赛中所用的时间,以及他们的得分(2 为胜利,1 为平局)存储在self.totaltime和中self.score。在所有比赛结束后,我试图从球员中选出两名得分最高的球员,这样他们就可以在 3 场比赛中发挥最佳来决定获胜者。很可能有超过 1 名玩家拥有相同的分数。如果是这种情况,将选择花费较少时间的人。

我的问题是我无法对这些结果进行排序/比较,而且我真的不确定哪种方法最适合选择得分最高的 2 名球员。我尝试了一个 for 循环(如下所示),但我并没有真正正确地思考,当然这不起作用。

def findPlayers():
    scorers = []
    for player in players:
        for player2 in players:
            if player.score > player2.score:
                scorers.append([player.name, player.score, player.totaltime])

我确定我听起来很傻,但我只需要朝着正确的方向轻推。我已经为这个程序编写了大部分代码,但我似乎被困在这样的琐碎事情上。无论如何,我们将不胜感激任何朝着正确方向的推动。

标签: pythonoop

解决方案


(self.score, -self.totaltime)您可以使用作为键对玩家列表进行排序。

sorted_players = sorted(players, lambda player: (player.score, -player.totaltime), reverse=True)

推荐阅读