在尝试各自的比赛之后,我试图建立一个足球分区并获得球队的第一名和第二名,我需要通过比较他们的总胜利和比赛结果来做到这一点。总目标。
这是团队的课程:
class Equipo:
pais = None
media_gol = 0
penal = 0
nextGol = 0
puntos_divisionales = 0
dif_goles = 0
def __init__(self, pais, mg, pen):
self.pais = pais
self.media_gol = mg
self.penal = pen
def getPais(self):
return self.pais
def getMedia(self):
return self.media_gol
def getPenal(self):
return self.penal
def getGol(self):
return self.nextGol
def getPuntos(self):
return self.puntos_divisionales
def getDif(self):
return self.dif_goles
def setNextGol(self, gol):
self.nextGol += gol
def setGol(self, gol):
self.nextGol = gol
def setDif(self, dif):
self.dif_goles = dif
def incPuntos(self):
self.puntos_divisionales += 1
这是分类:
class Division:
primerLugar = None
segundoLugar = None
equipo1 = None
equipo2 = None
equipo3 = None
equipo4 = None
equipos = [equipo1, equipo2, equipo3, equipo4]
matches = []
def __init__(self, e1, e2, e3, e4):
self.equipo1 = e1
self.equipo2 = e2
self.equipo3 = e3
self.equipo4 = e4
def get1(self):
return self.primerLugar
def get2(self):
return self.segundoLugar
def match(self):
self.matches.append([self.equipo1, self.equipo2])
self.matches.append([self.equipo1, self.equipo3])
self.matches.append([self.equipo1, self.equipo4])
self.matches.append([self.equipo2, self.equipo3])
self.matches.append([self.equipo2, self.equipo4])
self.matches.append([self.equipo3, self.equipo4])
def winner(self):
for m in self.matches:
p = Partido(m[0], m[1])
p.tiempoPartido()
p.scoreGoles()
p.getGanador().incPuntos()
Class" Partido"只是两队之间的比赛以及目标和胜利者的计算器。
我需要在分类中决定胜利者
答案 0 :(得分:0)
您的代码遇到了很多问题。虽然我的西班牙语不足以弄清楚大多数领域和功能的作用,但是平等类看起来还不错。
对于Division类,我建议创建一个字典,其中团队作为键,他们的分割点和总目标作为项目列表。玩完所有游戏后,您将其转换为列表,然后对其进行排序。您还可以删除匹配字段,只需删除用户itertools.combinations。它使两个团队的每个独特组合。该课程看起来像这样:
class Division:
equipos = {equipo1: [0,0], equipo2: [0,0], equipo3: [0,0], equipo4: [0,0]}
def __init__(self, e1, e2, e3, e4):
self.equipo1 = e1
self.equipo2 = e2
self.equipo3 = e3
self.equipo4 = e4
def get1(self):
return self.places[0]
def get2(self):
return self.places[1]
def winner(self):
#itertools.combinations(self.equipos.keys(), 2) basically makes a list of every unique pair of equipos.
for m in itertools.combinations(self.equipos.keys(), 2):
p = Partido(m[0], m[1])
p.tiempoPartido()
p.scoreGoles()
#increase the winners score by 1
equipos[p.getGanador()][0]+=1
#increase the winners goal count by goals scored
equipos[p.getGanador()][1]+=p.getGoals(0)
#increase the losers goal count by goals scored
equipos[p.getVencido()][1]+=p.getGoals(1)
self.places = equipos.items()
#sorts by division points
self.places.sort(key = lambda x: -x[0][0])
#sorts by goals scored
self.places.sort(key = lambda x: -x[0][1])
您需要在Partido中实现getGoals函数才能获得目标数。我假设你会为获胜者的目标数量获得目标(0),并为失败者的目标数量获得目标(1)。你还需要一个getVencido(我认为那是西班牙语的失败者?)函数来回归失败的团队。