Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.57 KB | None | 0 0
  1. def inicTabelaClassif ():
  2.     #abre o arquivo
  3.     arqtimes = open ('times.txt', 'r')
  4.     #define a tabela como lista
  5.     ltabela = list()
  6.     #não entendi o uso do strip, que eu saiba é para retirar algo
  7.     #no caso ele estaria retirando espaços em branco?
  8.     for linha in arqtimes:
  9.  
  10.         linha = linha.strip()
  11.     #junta o conteúdo da linha + 0,0,0(PG,V,SG)
  12.         ltabela.append ([linha,0,0,0])
  13.  
  14.            
  15.     #fecha o arquivo
  16.     arqtimes.close ()
  17.  
  18.     return ltabela
  19.  
  20.  
  21.  
  22. def busca (ltabela, time):
  23.     #corre até o final da tabela
  24.     for i in range (len(ltabela)):
  25.     #se a var time que foi passado como parâmetro foi == a var situada na posição [i][0]
  26.     #sendo [i] a posição que o for se encontra e [0] o SG, ele retorna i, que é a posição
  27.     #que o for se encontra(número de vezes que ele rodou)
  28.         if time == ltabela[i][0]:
  29.  
  30.             return i
  31.  
  32.     return -1
  33.  
  34.  
  35.  
  36. def processaPartidas (ltabela):
  37.  
  38.     arqjogos = open ('resultados.txt', 'r')
  39.  
  40.     PG = 1
  41.  
  42.     V  = 2
  43.  
  44.     SG = 3
  45.  
  46.     cont=0
  47.     #mesmo esquema do strip que eu posso n ter entendido por n ler a questão e ver só o código kk
  48.     for linha in arqjogos:
  49.  
  50.         linha = (linha.strip()).split()
  51.     #esse cont+=1 é pra fazer o if baseado em par e impar (impar=linha 1,3,5... e par= linha 2,4,6...)
  52.         cont+=1
  53.     #se cont=impar ele roda esse if, e atribui gols1
  54.         if (cont%2==1):
  55.  
  56.             time1 = linha[0]
  57.  
  58.             gols1 = int (linha[1])
  59.     #aqui ele está solicitando para a função busca selecionar o time correto para as comparações
  60.     #jogando a ltabela e a lina[0](time1) que é o que está na var nesse momento do for
  61.     #para receber a posição que esse time está na tabela e poder atribuir
  62.     #corretamente o SG,V,PG
  63.             pos1 = busca (ltabela, time1)
  64.  
  65.         else:
  66.  
  67.             time2 = linha[0]
  68.  
  69.             gols2 = int (linha[1])
  70.  
  71.             pos2 = busca (ltabela, time2)
  72.     #aqui ele compara a var gols de cada time
  73.     #se o 1 for maior, ele da +3 no pg, +1 no V e soma o SG baseaso nos gols da partida()
  74.             if gols1 > gols2:
  75.  
  76.                 ltabela[pos1][PG] += 3
  77.  
  78.                 ltabela[pos1][V] += 1
  79.  
  80.                 ltabela[pos1][SG] += (gols1 - gols2)
  81.  
  82.                 ltabela[pos2][SG] -= (gols1 - gols2)
  83.     #se o 2 for maior, ele faz o mesmo só q na posição do 2
  84.             else:
  85.  
  86.                 if gols1 < gols2:
  87.  
  88.                     ltabela[pos2][PG] += 3
  89.  
  90.                     ltabela[pos2][V] += 1
  91.  
  92.                     ltabela[pos2][SG] += (gols2 - gols1)
  93.  
  94.                     ltabela[pos1][SG] -= (gols2 - gols1)    
  95.  
  96.                 else:
  97.     #se for igual ele soma 1PG
  98.                     ltabela[pos1][PG] += 1
  99.  
  100.                     ltabela[pos2][PG] += 1
  101.  
  102.  
  103.  
  104.     arqjogos.close()
  105.  
  106.     return ltabela  
  107.  
  108.  
  109.  
  110. def defineCampeao (ltabela):
  111.  
  112.     PG = 1
  113.  
  114.     V  = 2
  115.  
  116.     SG = 3
  117.  #define a lista lindices
  118.     lindices = list()
  119.  
  120.     maior = 0
  121.  
  122.     lindices = [0]
  123.  #corre a var i de 1 até o o tamanho máximo da tabela
  124.     for i in range (1, len(ltabela)):
  125.     #compara  o PG da posição atual na tabela vs a posição 0(var maior)
  126.         if ltabela[i][PG] > ltabela[maior][PG]:
  127.     #se satisfeito o if, maior recebe 1 para mostrar que o i é o com ponto mais alto até o momento
  128.             maior = i
  129.     #insere no índice a posição do maior até agora
  130.             lindices = [i]
  131.  
  132.         else:
  133.     #senão, testa se é igual
  134.             if ltabela[i][PG] == ltabela[maior][PG]:
  135.     #se for igual, ele testa se o V é maior(segunda forma de decisão, por vitória)
  136.                 if ltabela[i][V] > ltabela[maior][V]:
  137.     #se for maior, faz a mesma coisa lá de cima no primeiro if, fala que essa posição é a maior no ranking
  138.                     maior = i
  139.     #insere no índice a posição do maior até agora
  140.                     lindices = [i]
  141.  
  142.                 else:
  143.     #se for tudo igual, ele adiciona +=[i], colocando assim ambos os maiores pontuadores no lindices
  144.                     if ltabela[i][V] == ltabela[maior][V]:
  145.  
  146.                         lindices += [i]
  147.  #retorna o lindices, que deverá conter o que tem mais pontos segundo as comparações feitas acima
  148.     return lindices
  149.  
  150.  
  151.  
  152. #
  153.  
  154. #INICIO DA EXECUÇÃO
  155.  
  156. #
  157.  
  158. ltabela = inicTabelaClassif ()
  159.  
  160. ltabela = processaPartidas (ltabela)
  161.  
  162. lindices = defineCampeao(ltabela)
  163.  
  164. print ('Time(s) campeão(ões)')
  165.  #esse for é só para se por acaso tiver mais de 1 campeão, ele imprimir tbm
  166. for ind in lindices:
  167.  
  168.     print ('%s com saldo de gols = %d'%(ltabela[ind][0],ltabela[ind][3]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement