在列表中查找最大值,即lis中对象的属性

2024-06-01 02:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python3编写一个程序,它可以模拟不同玩家之间的比赛,这些人正在投球。在

我有一个包含players对象的列表,这些对象有属性名称、抛出的平均长度、抛出的标准偏差,最后:一个列表的属性,其中每个索引都包含玩家在每次比赛中进行的多次投掷。(为了澄清,在索引0上,例如第一次比赛有6次投掷,在索引1中,第二次比赛有6次投掷,依此类推)。当然有很多玩家。我现在需要找到一种方法来确定哪一个玩家是每场比赛的赢家,并计算每个玩家的获胜次数。我一直在寻找赢家,但到目前为止,我的想法是:

def winner(self):
    for player in players:
        winner= max(players, key = attrgetter("self.results"))

播放器对象是通过这个类创建的:

^{pr2}$

我很肯定我上面写的东西不会给我带来任何好处,所以你们有什么建议吗?在


Tags: 对象方法self程序名称列表属性玩家
1条回答
网友
1楼 · 发布于 2024-06-01 02:25:21

这里有一个简化的Player类来帮助您入门。它处理的是一个以上的球员投球的最长距离与另一个相同。在

class Player:
    def __init__(self, name, results):
        self.name = name
        self.results = results

def find_winners(players, num_contests):
    winners = []  # one (or more) player entries per contest
    for icontest in range(num_contests):
        contest_winners = []  # may hold multiple players if there are ties
        contest_longest_throw = -1
        for player in players:
            player_longest_throw = max(player.results[icontest])
            if player_longest_throw > contest_longest_throw:
                contest_longest_throw = player_longest_throw
                contest_winners = [player]
            elif player_longest_throw == contest_longest_throw:
                contest_winners.append(player)
        winners.append(contest_winners)
    return winners

# test data
players = [Player('Name1', [(7, 8, 9), (2, 3, 4), (3, 4, 5)]),
           Player('Name2', [(4, 5, 6), (8, 9, 10), (6, 7, 8)]),
           Player('Name3', [(1, 2, 3), (5, 6, 7), (9, 10, 11)]),
           # add one that will tie with first player
           Player('Name4', [(7, 8, 9), (2, 3, 4), (3, 4, 5)])]

# assumes length of first player's results is number of contests
winners_found = find_winners(players, len(players[0].results))

print("Contest  Winner(s)")
for icontest, contest_winners in enumerate(winners_found, start=1):
    print('{:^7}  {}'.format(
        icontest, ', '.join(player.name for player in contest_winners)))

输出:

^{pr2}$

相关问题 更多 >