首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于列表输入的Python制作记分板

基于列表输入的Python制作记分板
EN

Stack Overflow用户
提问于 2022-07-30 14:07:00
回答 1查看 116关注 0票数 0

我试着根据一个输入来制作一个记分板,里面有一个所有回合的列表和结果。我已经把这个输入分开了,所以每一轮游戏都是一个列表;在其中,一个项目是一个游戏。每个游戏都被记为“白色黑ResultWhite结果黑”。

例如,有三轮和六名球员,如下所示。第一个名单是球员,然后是回合(2-4)。1=赢,0.5 =平局,0=输。

代码语言:javascript
复制
[['Erik', 'Daniel', 'Charlotte', 'Anna', 'Bob', 'Femke'], ['Anna Femke 1 0', 'Bob Erik 0 1', 'Charlotte Daniel 0.5 0.5'], ['Erik Anna 1 0', 'Femke Charlotte 0.5 0.5', 'Daniel Bob 1 0'], ['Daniel Erik 0.5 0.5', 'Charlotte Anna 1 0', 'Bob Femke 1 0']]

现在,我想:

player_result

  • Ignore
  • 将第一个列表标识为一个名为
  • 的类中的名称。从这一点起,
  • 将所有回合的列表拆分为单独的列表,
  • 将ResultWhite (索引2)添加到所述白色类中的点数(索引0)中,并将ResultBlack和黑色

的第一个列表拆分为反向

我已经用下面的代码达到了前三点,但我无法解决最后一个问题。我已经查过附件了,但我想不出来。如果有人能帮忙,那就太好了!

代码语言:javascript
复制
class player_result:
    def __init__(self, name: str):
        self.name = name

def determine_output(input):
    splits = input.split("\n\n")
    rounds = [i.split('\n') for i in splits]
    print(rounds)
    playernames = rounds[0]
    players = []
    for name in playernames:
        players.append(player_result(name))
    print('Player:', players[0].name)
    amount_rounds = len(rounds) - 1
    print('Rounds:', amount_rounds)
    for i in range(len(rounds) - 1):
        print('Round',i + 1,rounds[i + 1])

编辑:关于最终结果的一些更多的澄清。我的想法是,名单是注册为白色黑ResultWhite ResultBlack,下面的输出是由所有的白人和黑人球员,与他们的积分收到的总和。我所追求的输出/结果如下所示。这将通过名称作为类player_result的名称项,而得分是类player_result的一个新得分项来实现。

代码语言:javascript
复制
Erik: 2.5
Daniel: 2
Charlotte: 2
Anna: 1
Bob: 1
Femke: 0.5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-30 15:27:58

您遗漏的步骤是在球员名称上设置一个dict键。这将使您可以查找每个球员累积他们的分数。此外,我还向score添加了一个player_result属性。

还请注意,我保留了您发布的原始列表,而不是您的函数determine_output()当前期望的文本。

代码语言:javascript
复制
class player_result:
    def __init__(self, name):
        self.name = name
        self.score = 0

def determine_output(rounds):
    #splits = input.split("\n\n")
    #rounds = [i.split('\n') for i in splits]
    print(rounds)

    players = {}
    for name in rounds[0]:
        players[name] = player_result(name)

    amount_rounds = len(rounds) - 1
    print('Rounds:', amount_rounds)

    for one_round in rounds[1:]:
        for game in one_round:
            white,black,result_white, result_black = game.split()
            players[white].score += float(result_white)
            players[black].score += float(result_black)
    for player in players.values():
        print(f'{player.name}: {player.score}')

rounds = [['Erik', 'Daniel', 'Charlotte', 'Anna', 'Bob', 'Femke'], ['Anna Femke 1 0', 'Bob Erik 0 1', 'Charlotte Daniel 0.5 0.5'], ['Erik Anna 1 0', 'Femke Charlotte 0.5 0.5', 'Daniel Bob 1 0'], ['Daniel Erik 0.5 0.5', 'Charlotte Anna 1 0', 'Bob Femke 1 0']]

determine_output(rounds)

按要求输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73176290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档