是否有更好的方法来比较值?



我正在创建一个不和机器人,根据过去的游戏自动创建用户的MMR。当运行10人(或更少)的自定义游戏时,我需要bot获取MMR值,并将其与所有其他选择加入游戏的玩家进行比较。我是这样做的……请告诉我是否有更好的方法。

## Evenly Seperate teams
p1_place=10
p2_place=10
p3_place=10
p4_place=10
p5_place=10
p6_place=10
p7_place=10
p8_place=10
p9_place=10
p10_place=10
try:
if Player1[1] > Player2[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

try:
if Player1[1] > Player3[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

try:
if Player1[1] > Player4[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

try:
if Player1[1] > Player4[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

try:
if Player1[1] > Player5[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

try:
if Player1[1] > Player6[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

try:
if Player1[1] > Player7[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

try:
if Player1[1] > Player8[1]:
p1_place=p1_place
else:
p1_place=p1_place-1
except NameError:
pass
else:

仍然不能100%确定你在这里想要什么,但如果它是按MMS排序球员列表,然后分成两支球队,这里有一个简单的想法:

players = [
["jim", 200],
["bob", 120],
["mike", 200],
["jane", 210],
["lacy", 90],
["stan", 250],
["luke", 150],
["bill", 100],
]
mms_sort = lambda p: -p[1]
players_by_mms = sorted(players, key=mms_sort)
# print(players_by_mms)
teams = [
players_by_mms[0 : len(players_by_mms) : 2],
players_by_mms[1 : len(players_by_mms) : 2],
]
print(teams)

结果:

  • 团队0:[[斯坦,250),"吉姆",200年,"路加福音",150年,["比尔",100]]
  • 团队1:[[‘简’,210],["迈克",200年],["鲍勃",120年],["花边",90]]

你可能想修改球员分配到球队的方式,使其更公平。这里的方法只是从最高的MMS向下交替。

最新更新