2023-01-30 16:21:55 +00:00
|
|
|
import math
|
2022-11-10 19:54:11 +00:00
|
|
|
|
2023-05-16 20:00:37 +00:00
|
|
|
from extras.allMatches import * # importa a função allMatches criada na aula05
|
|
|
|
|
2022-11-10 19:54:11 +00:00
|
|
|
|
|
|
|
def main():
|
2023-05-16 20:00:37 +00:00
|
|
|
equipas = getTeams() # pede as equipas ao utilizador
|
|
|
|
partidas = allMatches(equipas) # cria a lista de partidas
|
|
|
|
resultados = getResults(partidas) # pede os resultados ao utilizador
|
2023-01-30 16:21:55 +00:00
|
|
|
tabela = getTable(equipas, resultados) # cria a tabela de classificação
|
2023-05-16 20:00:37 +00:00
|
|
|
printTable(tabela) # imprime a tabela de classificação
|
2022-11-10 19:54:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
def getTeams():
|
2023-05-16 20:00:37 +00:00
|
|
|
teams = [] # cria uma lista vazia para as equipas
|
|
|
|
while True: # Ciclo para obter as equipas
|
2022-11-10 19:54:11 +00:00
|
|
|
team = input("Nome da equipa: ")
|
2023-05-16 20:00:37 +00:00
|
|
|
if team in teams: # Garante não haver equipas repetidas
|
2022-11-10 19:54:11 +00:00
|
|
|
continue
|
2023-01-30 16:21:55 +00:00
|
|
|
if team == "":
|
|
|
|
if len(teams) < 2:
|
|
|
|
continue
|
|
|
|
else:
|
|
|
|
break
|
2022-11-10 19:54:11 +00:00
|
|
|
teams.append(team)
|
|
|
|
return teams
|
|
|
|
|
|
|
|
|
|
|
|
def getResults(matches):
|
2023-05-16 20:00:37 +00:00
|
|
|
results = dict() # cria um dicionário vazio para os resultados
|
2022-11-10 19:54:11 +00:00
|
|
|
for match in matches:
|
2023-05-16 20:00:37 +00:00
|
|
|
team1, team2 = match # desempacota a partida
|
2022-11-10 19:54:11 +00:00
|
|
|
print("Resultado do jogo entre", team1, "e", team2)
|
|
|
|
goals1 = int(input("Golos da equipa 1: "))
|
|
|
|
goals2 = int(input("Golos da equipa 2: "))
|
2023-05-16 20:00:37 +00:00
|
|
|
results[match] = (goals1, goals2) # adiciona o resultado ao dicionário
|
2022-11-10 19:54:11 +00:00
|
|
|
return results
|
|
|
|
|
|
|
|
|
|
|
|
def getTable(teams, results):
|
2023-05-16 20:00:37 +00:00
|
|
|
table = dict() # cria um dicionário vazio para a tabela
|
2023-01-30 16:21:55 +00:00
|
|
|
|
2022-11-10 19:54:11 +00:00
|
|
|
for team in teams:
|
2023-05-16 20:00:37 +00:00
|
|
|
table[team] = [0, 0, 0, 0, 0, 0] # inicializa a tabela com as equipas a zeros
|
2023-01-30 16:21:55 +00:00
|
|
|
|
2022-11-10 19:54:11 +00:00
|
|
|
for match in results:
|
2023-05-16 20:00:37 +00:00
|
|
|
team1, team2 = match # desempacota a partida
|
|
|
|
goals1, goals2 = results[match] # desempacota os resultados
|
2022-11-10 19:54:11 +00:00
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
# atualiza os resultados da equipa 1
|
|
|
|
updateStats(table, team1, goals1, goals2)
|
2022-11-10 19:54:11 +00:00
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
# atualiza os resultados da equipa 2
|
|
|
|
updateStats(table, team2, goals2, goals1)
|
2022-11-10 19:54:11 +00:00
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
# devolve a tabela ordenada por pontos, diferença de golos e por último por golos marcados.
|
|
|
|
return {team: table[team] for team in
|
2023-05-16 20:00:37 +00:00
|
|
|
sorted(table, key=lambda x: (table[x][5], table[x][3] - table[x][4], table[x][3]), reverse=True)}
|
2022-11-10 19:54:11 +00:00
|
|
|
|
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
def updateStats(table, team, gm, gs):
|
2023-05-16 20:00:37 +00:00
|
|
|
table[team][5] += (
|
|
|
|
points := 1 if gm == gs else (3 if gm > gs else 0)) # calcula os pontos a atribuir à equipa e adiciona à tabela
|
|
|
|
table[team][math.trunc(2 - points / 2)] += 1 # determina o index ao qual atribui o jogo (V/E/D)
|
|
|
|
table[team][3] += gm # adiciona os golos marcados
|
|
|
|
table[team][4] += gs # adiciona os golos marcados
|
2022-11-10 19:54:11 +00:00
|
|
|
|
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
def printTable(table):
|
|
|
|
print(f"\n{'Equipa':<15}\tV\tE\tD\tGM\tGS\tPts")
|
2022-11-10 19:54:11 +00:00
|
|
|
|
|
|
|
for team in table:
|
2023-01-30 16:21:55 +00:00
|
|
|
print(f"{team:<15}", end="\t")
|
2022-11-10 19:54:11 +00:00
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
for team_stat in table[team]:
|
|
|
|
print(team_stat, end="\t")
|
2022-11-10 19:54:11 +00:00
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
print('')
|
2022-11-10 19:54:11 +00:00
|
|
|
|
2023-01-30 16:21:55 +00:00
|
|
|
print(f"\nA equipa campeã é {list(table.keys())[0]}.")
|
2022-11-10 19:54:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|