Recursos-LCC

Um arquivo de todo material que consegui reunir, pertinente ao curso de LCC da UM.

View on GitHub

LA2 | Treino 1 | Futebol


'''
Implemente uma função que calcula a tabela classificativa de um campeonato de
futebol. A função recebe uma lista de resultados de jogos (tuplo com os nomes das
equipas e os respectivos golos) e deve devolver a tabela classificativa (lista com 
as equipas e respectivos pontos), ordenada decrescentemente pelos pontos. Em
caso de empate neste critério, deve ser usada a diferença entre o número total
de golos marcados e sofridos para desempatar, e, se persistir o empate, o nome
da equipa.
'''

def tabela(jogos):
    ponts = {}
    for e1,g1,e2,g2 in jogos:
        if e1 not in ponts.keys():
            ponts[e1] = [0,0,0]
        if e2 not in ponts.keys():
            ponts[e2] = [0,0,0]
        if g1 == g2:
            ponts[e1][0] += 1
            ponts[e2][0] += 1
        elif g1>g2:
            ponts[e1][0] += 3
        else:
            ponts[e2][0] += 3
        ponts[e1][1] += g1
        ponts[e1][2] += g2
        ponts[e2][1] += g2
        ponts[e2][2] += g1
        
    result = [(x,y[0]) for x,y in sorted(ponts.items(), key = lambda x: (-x[1][0], -(x[1][1]-x[1][2]), x[0]))]
    return result


Testes

# 1
jogos = [("Benfica",3,"Porto",2),("Benfica",0,"Sporting",0),("Porto",4,"Benfica",1),("Sporting",2,"Porto",2)]
> Resultado = [('Porto', 4), ('Benfica', 4), ('Sporting', 2)]

# 2
jogos = [("Benfica",3,"Porto",2),("Benfica",0,"Sporting",0),("Porto",2,"Benfica",1),("Sporting",2,"Porto",2)]
> Resultado = [('Benfica', 4), ('Porto', 4), ('Sporting', 2)]

retroceder