我试着根据一个输入来制作一个记分板,里面有一个所有回合的列表和结果。我已经把这个输入分开了,所以每一轮游戏都是一个列表;在其中,一个项目是一个游戏。每个游戏都被记为“白色黑ResultWhite结果黑”。
例如,有三轮和六名球员,如下所示。第一个名单是球员,然后是回合(2-4)。1=赢,0.5 =平局,0=输。
[['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
的第一个列表拆分为反向
我已经用下面的代码达到了前三点,但我无法解决最后一个问题。我已经查过附件了,但我想不出来。如果有人能帮忙,那就太好了!
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的一个新得分项来实现。
Erik: 2.5
Daniel: 2
Charlotte: 2
Anna: 1
Bob: 1
Femke: 0.5发布于 2022-07-30 15:27:58
您遗漏的步骤是在球员名称上设置一个dict键。这将使您可以查找每个球员累积他们的分数。此外,我还向score添加了一个player_result属性。
还请注意,我保留了您发布的原始列表,而不是您的函数determine_output()当前期望的文本。
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)按要求输出。
https://stackoverflow.com/questions/73176290
复制相似问题