【问题标题】:get first and second place of a game获得比赛的第一名和第二名
【发布时间】:2018-02-16 00:55:00
【问题描述】:

我正在尝试建立一个足球部门并在参加各自的比赛后获得球队的第一名和第二名,我需要通过比较他们的总胜利和如果平局,通过总进球数的差异来做到这一点.

这是团队的课程:

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

这是 Division 类:

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()

“Partido”课程只是两支球队之间的游戏,也是进球和获胜者的计算器。

我需要决定分区组的获胜者

【问题讨论】:

    标签: python class compare


    【解决方案1】:

    您的代码存在很多问题。 equipo 类似乎不错,虽然我的西班牙语还不够好,无法弄清楚大多数字段和函数的作用。

    对于 Division 类,我建议创建一个字典,其中以团队为键,将其划分点和总目标作为项目列表。玩完所有游戏后,您会将其转换为列表,然后对其进行排序。您还可以摆脱您的匹配字段,只使用用户 itertools.combinations。它使 2 个团队的每一个独特组合。这个类看起来像这样:

    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 函数来获取目标数量。我假设你会为获胜者的进球数执行 getGoals(0),为失败者的进球数执行 getGoals(1)。您还需要一个 getVencido(我认为这是西班牙语的失败者?)函数来返回失败的团队。

    【讨论】:

      猜你喜欢
      • 2015-03-11
      • 2022-01-08
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      相关资源
      最近更新 更多