想象一下,我有3个团队,并且我想在这3个团队之间进行随机比赛。我使用itertools排列来打印所有匹配项。问题是在游戏中产生分数。想象一下A队对B队(2-1)。如何在比赛中输入A队的2个进球和B队的1个进球?
我已经打印了所有可能的匹配项。请注意,我使用排列是因为A队与B队与B队与A队不同,因为一个团队在主场比赛,而另一场比赛则在另一支球队的主场比赛。
import itertools
import random
teams=['A','B','C']
def games():
permutations=itertools.permutations(teams,2)
for i in permutations:
print(i)
result=random.randint(0,5)
我的疑问是,何时必须在每次迭代中在游戏中生成结果。
答案 0 :(得分:2)
您正在生成一个整数,但是您需要两个整数来表示匹配分数:
import itertools
import random
teams = ['A','B','C']
def games():
permutations = itertools.permutations(teams, 2)
for match in permutations:
home_team_score, away_team_score = random.randint(0, 5), random.randint(0, 5)
print(match, home_team_score, away_team_score)
games()
样本输出
('A', 'B') 4 2
('A', 'C') 0 1
('B', 'A') 2 5
('B', 'C') 1 2
('C', 'A') 2 4
('C', 'B') 1 1
然后您就可以使用该格式,例如
for (home_team, away_team) in permutations:
home_team_score, away_team_score = random.randint(0, 5), random.randint(0, 5)
print('{} {} - {} {}'.format(home_team, home_team_score, away_team_score, away_team))
获得
A 4 - 4 B
A 0 - 4 C
B 3 - 4 A
B 1 - 0 C
C 2 - 1 A
C 3 - 5 B
答案 1 :(得分:0)
import itertools
import random
teams=['A','B','C']
def make_games():
games=[]
permutations=itertools.permutations(teams,2)
for team_tuple in permutations:
game={}
team_one, team_two = team_tuple[0],team_tuple[1]
team_one_score, team_two_score=random.randint(0,5),random.randint(0,5)
game[team_one]=team_one_score
game[team_two]=team_two_score
games.append(game)
return games
print(make_games())
出局:
[
{'A': 1, 'B': 4},
{'A': 1, 'C': 0},
{'B': 5, 'A': 1},
{'B': 1, 'C': 1},
{'C': 1, 'A': 5},
{'C': 2, 'B': 3}
]