Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def inicTabelaClassif ():
- #abre o arquivo
- arqtimes = open ('times.txt', 'r')
- #define a tabela como lista
- ltabela = list()
- #não entendi o uso do strip, que eu saiba é para retirar algo
- #no caso ele estaria retirando espaços em branco?
- for linha in arqtimes:
- linha = linha.strip()
- #junta o conteúdo da linha + 0,0,0(PG,V,SG)
- ltabela.append ([linha,0,0,0])
- #fecha o arquivo
- arqtimes.close ()
- return ltabela
- def busca (ltabela, time):
- #corre até o final da tabela
- for i in range (len(ltabela)):
- #se a var time que foi passado como parâmetro foi == a var situada na posição [i][0]
- #sendo [i] a posição que o for se encontra e [0] o SG, ele retorna i, que é a posição
- #que o for se encontra(número de vezes que ele rodou)
- if time == ltabela[i][0]:
- return i
- return -1
- def processaPartidas (ltabela):
- arqjogos = open ('resultados.txt', 'r')
- PG = 1
- V = 2
- SG = 3
- cont=0
- #mesmo esquema do strip que eu posso n ter entendido por n ler a questão e ver só o código kk
- for linha in arqjogos:
- linha = (linha.strip()).split()
- #esse cont+=1 é pra fazer o if baseado em par e impar (impar=linha 1,3,5... e par= linha 2,4,6...)
- cont+=1
- #se cont=impar ele roda esse if, e atribui gols1
- if (cont%2==1):
- time1 = linha[0]
- gols1 = int (linha[1])
- #aqui ele está solicitando para a função busca selecionar o time correto para as comparações
- #jogando a ltabela e a lina[0](time1) que é o que está na var nesse momento do for
- #para receber a posição que esse time está na tabela e poder atribuir
- #corretamente o SG,V,PG
- pos1 = busca (ltabela, time1)
- else:
- time2 = linha[0]
- gols2 = int (linha[1])
- pos2 = busca (ltabela, time2)
- #aqui ele compara a var gols de cada time
- #se o 1 for maior, ele da +3 no pg, +1 no V e soma o SG baseaso nos gols da partida()
- if gols1 > gols2:
- ltabela[pos1][PG] += 3
- ltabela[pos1][V] += 1
- ltabela[pos1][SG] += (gols1 - gols2)
- ltabela[pos2][SG] -= (gols1 - gols2)
- #se o 2 for maior, ele faz o mesmo só q na posição do 2
- else:
- if gols1 < gols2:
- ltabela[pos2][PG] += 3
- ltabela[pos2][V] += 1
- ltabela[pos2][SG] += (gols2 - gols1)
- ltabela[pos1][SG] -= (gols2 - gols1)
- else:
- #se for igual ele soma 1PG
- ltabela[pos1][PG] += 1
- ltabela[pos2][PG] += 1
- arqjogos.close()
- return ltabela
- def defineCampeao (ltabela):
- PG = 1
- V = 2
- SG = 3
- #define a lista lindices
- lindices = list()
- maior = 0
- lindices = [0]
- #corre a var i de 1 até o o tamanho máximo da tabela
- for i in range (1, len(ltabela)):
- #compara o PG da posição atual na tabela vs a posição 0(var maior)
- if ltabela[i][PG] > ltabela[maior][PG]:
- #se satisfeito o if, maior recebe 1 para mostrar que o i é o com ponto mais alto até o momento
- maior = i
- #insere no índice a posição do maior até agora
- lindices = [i]
- else:
- #senão, testa se é igual
- if ltabela[i][PG] == ltabela[maior][PG]:
- #se for igual, ele testa se o V é maior(segunda forma de decisão, por vitória)
- if ltabela[i][V] > ltabela[maior][V]:
- #se for maior, faz a mesma coisa lá de cima no primeiro if, fala que essa posição é a maior no ranking
- maior = i
- #insere no índice a posição do maior até agora
- lindices = [i]
- else:
- #se for tudo igual, ele adiciona +=[i], colocando assim ambos os maiores pontuadores no lindices
- if ltabela[i][V] == ltabela[maior][V]:
- lindices += [i]
- #retorna o lindices, que deverá conter o que tem mais pontos segundo as comparações feitas acima
- return lindices
- #
- #INICIO DA EXECUÇÃO
- #
- ltabela = inicTabelaClassif ()
- ltabela = processaPartidas (ltabela)
- lindices = defineCampeao(ltabela)
- print ('Time(s) campeão(ões)')
- #esse for é só para se por acaso tiver mais de 1 campeão, ele imprimir tbm
- for ind in lindices:
- print ('%s com saldo de gols = %d'%(ltabela[ind][0],ltabela[ind][3]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement