我正试图解决一个简单的用例,即我需要在终端中以表格样式显示数据——不需要花哨的表,但不知何故,它会发出类似的表。
这是我的密码。
score = {'rounds_0': {'jack': 9, 'joe': 8}, 'rounds_1': {'jack': 11, 'joe': 13}}
players_name = ["jack","joe"]
for each_rounds in range(0,2):
print(f""" ********Round {each_rounds + 1}****""", end='')
print()
for player, each_rounds in zip(players_name, range(0,2) ):
print(player,score.get(f'rounds_{each_rounds}').get(player))
目前我的输出如下
********Round 1**** ********Round 2****
jack 9
joe 13
我试图在Round 1
列下包含round_0
dict值,在round_1
中包含类似的Round 2
像这样,如果可能的话,每行的总和
********Round 1**** ********Round 2**** *****Total*****
jack 9 11 20
joe 8 13 21
我真的尝试了一些for循环的概念,但不知道我是如何做到的,因为我是python的初学者,任何帮助都会非常棒。
您正在一起迭代玩家和轮次,但您需要做的是迭代玩家,然后为每个玩家轮次。为每个玩家生成一个分数列表,然后打印出来可能更容易:
score = {'rounds_0': {'jack': 9, 'joe': 8}, 'rounds_1': {'jack': 11, 'joe': 13}}
players = list(score['rounds_0'].keys())
rounds = range(len(score.keys()))
print(f" {''.join(f' **** Round {rd} **** ' for rd in rounds)} **** Total ****")
for player in players:
scores = [score[f'rounds_{rd}'].get(player, 0) for rd in rounds]
print(f"{player:10s}{''.join(f'{s:^20d}' for s in scores)}{sum(scores):^15d}")
输出:
**** Round 0 **** **** Round 1 **** **** Total ****
jack 9 11 20
joe 8 13 21