获得游戏的第一和第二位

时间:2018-02-16 00:55:00

标签: python class compare

在尝试各自的比赛之后,我试图建立一个足球分区并获得球队的第一名和第二名,我需要通过比较他们的总胜利和比赛结果来做到这一点。总目标。

这是团队的课程:

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"只是两队之间的比赛以及目标和胜利者的计算器。

我需要在分类中决定胜利者

1 个答案:

答案 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(我认为那是西班牙语的失败者?)函数来回归失败的团队。