python - 确定 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])
我确定我听起来很傻,但我只需要朝着正确的方向轻推。我已经为这个程序编写了大部分代码,但我似乎被困在这样的琐碎事情上。无论如何,我们将不胜感激任何朝着正确方向的推动。
解决方案
(self.score, -self.totaltime)
您可以使用作为键对玩家列表进行排序。
sorted_players = sorted(players, lambda player: (player.score, -player.totaltime), reverse=True)
推荐阅读
- c# - 调用返回值的数据库存储函数或存储过程
- javascript - Material UI 组件不返回 HTMLElement 引用
- java - 我如何使用 onUpgrade 方法?
- laravel - Laravel Storage SFTP 和上传文件权限
- c++ - 如何将对象添加到 Json 文件
- vhdl - 使用全加器纹波的 N 位加法器/减法器 - 进位问题
- javascript - 在没有jquery的情况下将g标签添加到svg标签中
- javascript - 当数据多于 a4 大小时打印空白数据
- python - 将 dask 列转换为日期并应用 lambda 函数
- node.js - 如何在 .BOT 文件中更改聊天机器人的 LUIS 应用程序?