Python 如何按要求显示输出?

Python 如何按要求显示输出?,python,dictionary,Python,Dictionary,在世界杯B组,伊朗、葡萄牙、西班牙和摩洛哥队参加了比赛。我写了一个程序,在收到比赛结果后,将分别在一行中打印球队名称、胜负数、球差和他们的分数。每队都按分数顺序打印在一行上。(如果分数相等,则考虑赢的次数。如果赢的次数和分数相等,则按字母顺序打印。) 我正确地编写了这个程序的代码 我的代码: from collections import OrderedDict teams = {'Iran':{'wins':0 , 'loses':0 , 'draws':0 , 'goal differe

在世界杯B组,伊朗、葡萄牙、西班牙和摩洛哥队参加了比赛。我写了一个程序,在收到比赛结果后,将分别在一行中打印球队名称、胜负数、球差和他们的分数。每队都按分数顺序打印在一行上。(如果分数相等,则考虑赢的次数。如果赢的次数和分数相等,则按字母顺序打印。)

我正确地编写了这个程序的代码

我的代码:

from collections import  OrderedDict

teams = {'Iran':{'wins':0 , 'loses':0 , 'draws':0 , 'goal difference':0 , 'points':0},'Spain':{'wins':0 , 'loses':0 , 'draws':0 , 'goal difference':0 , 'points':0},'Portugal':{'wins':0 , 'loses':0 , 'draws':0 , 'goal difference':0 , 'points':0},'Morocco':{'wins':0 , 'loses':0 , 'draws':0 , 'goal difference':0 , 'points':0}}
results = []

for k in range(6):
    n = input().split('-')
    results.append(n)


if results[0][0] > results[0][1]:
    teams['Iran']['wins'] +=1
    teams['Iran']['points'] +=3
    teams['Iran']['goal difference'] += abs(int(results[0][0])-int(results[0][1]))
    teams['Spain']['loses'] +=1
    teams['Spain']['goal difference'] -= abs(int(results[0][0])-int(results[0][1]))
elif results[0][0] == results[0][1]:
    teams['Iran']['draws'] +=1
    teams['Spain']['draws'] += 1
    teams['Iran']['points'] += 1
    teams['Spain']['points'] += 1
else:
    teams['Spain']['wins'] += 1
    teams['Spain']['points'] += 3
    teams['Spain']['goal difference'] += abs(int(results[0][0])-int(results[0][1]))
    teams['Iran']['loses'] += 1
    teams['Iran']['goal difference'] -= abs(int(results[0][0])-int(results[0][1]))

if results[1][0] > results[1][1]:
    teams['Iran']['wins'] +=1
    teams['Iran']['points'] +=3
    teams['Iran']['goal difference'] += abs(int(results[1][0])-int(results[1][1]))
    teams['Portugal']['loses'] += 1
    teams['Portugal']['goal difference'] -= abs(int(results[1][0])-int(results[1][1]))
elif results[1][0] == results[1][1]:
    teams['Iran']['draws'] +=1
    teams['Portugal']['draws'] += 1
    teams['Iran']['points'] += 1
    teams['Portugal']['points'] += 1
else:
    teams['Portugal']['wins'] += 1
    teams['Portugal']['points'] += 3
    teams['Portugal']['goal difference'] += abs(int(results[1][0])-int(results[1][1]))
    teams['Iran']['loses'] += 1
    teams['Iran']['goal difference'] -= abs(int(results[1][0])-int(results[1][1]))

if results[2][0] > results[2][1]:
    teams['Iran']['wins'] +=1
    teams['Iran']['points'] +=3
    teams['Iran']['goal difference'] += abs(int(results[2][0])-int(results[2][1]))
    teams['Morocco']['loses'] += 1
    teams['Morocco']['goal difference'] -= abs(int(results[2][0])-int(results[2][1]))
elif results[2][0] == results[2][1]:
    teams['Iran']['draws'] +=1
    teams['Morocco']['draws'] += 1
    teams['Iran']['points'] += 1
    teams['Morocco']['points'] += 1
else:
    teams['Morocco']['wins'] += 1
    teams['Morocco']['points'] += 3
    teams['Morocco']['goal difference'] += abs(int(results[2][0])-int(results[2][1]))
    teams['Iran']['loses'] += 1
    teams['Iran']['goal difference'] -= abs(int(results[2][0])-int(results[2][1]))

if results[3][0] > results[3][1]:
    teams['Spain']['wins'] +=1
    teams['Spain']['points'] +=3
    teams['Spain']['goal difference'] += abs(int(results[3][0])-int(results[3][1]))
    teams['Portugal']['loses'] += 1
    teams['Portugal']['goal difference'] -= abs(int(results[3][0])-int(results[3][1]))
elif results[3][0] == results[3][1]:
    teams['Spain']['draws'] +=1
    teams['Portugal']['draws'] += 1
    teams['Spain']['points'] += 1
    teams['Portugal']['points'] += 1
else:
    teams['Portugal']['wins'] += 1
    teams['Portugal']['points'] += 3
    teams['Portugal']['goal difference'] += abs(int(results[3][0])-int(results[3][1]))
    teams['Spain']['loses'] += 1
    teams['Spain']['goal difference'] -= abs(int(results[3][0])-int(results[3][1]))

if results[4][0] > results[4][1]:
    teams['Spain']['wins'] +=1
    teams['Spain']['points'] +=3
    teams['Spain']['goal difference'] += abs(int(results[4][0])-int(results[4][1]))
    teams['Morocco']['loses'] += 1
    teams['Morocco']['goal difference'] -= abs(int(results[4][0])-int(results[4][1]))
elif results[4][0] == results[4][1]:
    teams['Spain']['draws'] +=1
    teams['Morocco']['draws'] += 1
    teams['Spain']['points'] += 1
    teams['Morocco']['points'] += 1
else:
    teams['Morocco']['wins'] += 1
    teams['Morocco']['points'] += 3
    teams['Morocco']['goal difference'] += abs(int(results[4][0])-int(results[4][1]))
    teams['Spain']['loses'] += 1
    teams['Spain']['goal difference'] -= abs(int(results[4][0])-int(results[4][1]))



if results[5][0] > results[5][1]:
    teams['Portugal']['wins'] +=1
    teams['Portugal']['points'] +=3
    teams['Portugal']['goal difference'] += abs(int(results[5][0])-int(results[5][1]))
    teams['Morocco']['loses'] += 1
    teams['Morocco']['goal difference'] -= abs(int(results[5][0])-int(results[5][1]))
elif results[5][0] == results[5][1]:
    teams['Portugal']['draws'] +=1
    teams['Morocco']['draws'] += 1
    teams['Portugal']['points'] += 1
    teams['Morocco']['points'] += 1
else:
    teams['Morocco']['wins'] += 1
    teams['Morocco']['points'] += 3
    teams['Morocco']['goal difference'] += abs(int(results[5][0])-int(results[5][1]))
    teams['Portugal']['loses'] += 1
    teams['Portugal']['goal difference'] -= abs(int(results[5][0])-int(results[5][1]))

so = OrderedDict(sorted(teams.items(),key=lambda x:(-x[1]['points'])))

for k,v in so.items():
    b = str(v).replace('{',"").replace('}',"")
    print(k,v)


我给程序的输入是:

2-2
2-1
1-2
2-2
3-1
2-1
正确的输出格式如下所示:

Spain  wins:1 , loses:0 , draws:2 , goal difference:2 , points:5
Iran  wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Portugal  wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Morocco  wins:1 , loses:2 , draws:0 , goal difference:-2 , points:3
Spain 'wins': 1, 'loses': 0, 'draws': 2, 'goal difference': 2, 'points': 5
Iran 'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4
Portugal 'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4
Morocco 'wins': 1, 'loses': 2, 'draws': 0, 'goal difference': -2, 'points': 3
但我的代码的输出格式如下:

Spain  wins:1 , loses:0 , draws:2 , goal difference:2 , points:5
Iran  wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Portugal  wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Morocco  wins:1 , loses:2 , draws:0 , goal difference:-2 , points:3
Spain 'wins': 1, 'loses': 0, 'draws': 2, 'goal difference': 2, 'points': 5
Iran 'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4
Portugal 'wins': 1, 'loses': 1, 'draws': 1, 'goal difference': 0, 'points': 4
Morocco 'wins': 1, 'loses': 2, 'draws': 0, 'goal difference': -2, 'points': 3

请帮助我以正确的格式显示输出。

这对您有用吗

for k, v in so.items():
    row = [(sub_key, v[sub_key]) for sub_key in ('wins', 'loses', 'draws', 'goal difference', 'points')]
    row_s = " , ".join([f"{k}:{v}" for k, v in row])
    print(f"{k} {row_s}")
输出为

Spain wins:1 , loses:0 , draws:2 , goal difference:2 , points:5
Iran wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Portugal wins:1 , loses:1 , draws:1 , goal difference:0 , points:4
Morocco wins:1 , loses:2 , draws:0 , goal difference:-2 , points:3
<>但是,我强烈建议您阅读一些关于Python编程的入门教程。要特别注意循环。您的代码非常重复,这意味着它包含看起来几乎相同的大块。这通常表示程序中缺少抽象


我假设您大约120行的代码可以用大约50行来编写。

您不需要专门在键上使用replace方法吗?这些键周围有“”,因此您需要在其上使用replace方法。请将答案写在“答案”部分