获得游戏的第一和第二名

2024-09-29 03:39:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一个足球分区,在踢完各自的比赛后,同时获得第一名和第二名,我需要通过比较他们的总比分,在平局的情况下,通过总进球数的差异来做到这一点

这是团队的课程:

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

“Partido”类只是两个团队之间的游戏,以及目标和赢家的计算器

我要在小组课上决定胜利者


Tags: selfnonereturndefmediamatchesappenddif
1条回答
网友
1楼 · 发布于 2024-09-29 03:39:42

你的代码有很多问题。equipo类看起来不错,尽管我的西班牙语还不足以理解大多数字段和函数的功能

对于Division类,我建议创建一个字典,将团队作为键,将他们的划分点和总目标作为项目列表。一旦所有的游戏都玩了,你就可以把它转换成一个列表,然后对它进行排序。也可以去掉matches字段,只使用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(我认为这在西班牙语中是loser?)函数来返回失败的团队

相关问题 更多 >