Skip to content

Instantly share code, notes, and snippets.

@vitaminac
Last active January 11, 2020 09:28
Show Gist options
  • Save vitaminac/c48e9b2e09766ff9014e3603b282f397 to your computer and use it in GitHub Desktop.
Save vitaminac/c48e9b2e09766ff9014e3603b282f397 to your computer and use it in GitHub Desktop.
Spain Rafael Nadal 32 Zurdo Roberto Bautista 31 Diestro Pablo Carreno 30 Zurdo Feliciano Lopez 29 Diestro Marcel Granollers 28 Zurdo
Canada Milos Raonic 27 Zurdo Daniel Nestor 26 Diestro Vasik Pospisil 25 Zurdo Peter Polansky 24 Diestro Denis Shopalov 23 Zurdo
Serbia Filip Krajinovic 20 Diestro Novak Djokovic 31 Zurdo Janko Tipsarevic 29 Diestro Dusan Lajovic 19 Diestro Viktor Troicki 30 Zurdo
France Nicolas Mahut 29 Diestro Pierre-Hugues Herbert 20 Zurdo Jo-Wilfried Tsonga 27 Diestro Gael Monfils 28 Zurdo Benoit Paire 30 Diestro
Japan Taro Daniel 30 Diestro Yoshihito Nishioka 29 Diestro Yuichi Sugita 29 Zurdo Ben Mclachlan 30 Diestro Yasutaka Uchiyama 27 Diestro
Russia Andrey Rublev 28 Diestro Karen Khachanov 19 Zurdo Daniil Medvedev 22 Diestro Evgeny Donskoy 26 Zurdo Ruben Arshavin 32 Diestro
Croatia Mate Pavic 20 Diestro Borna Coric 19 Zurdo Ivan Dodig 26 Diestro Nikola Mektic 40 Diestro Borna Cojo 20 Zurdo
Germany Philipp Kohlschreiber 30 Diestro Kevin Krawietz 28 Zurdo Andreas Mies 30 Zurdo Alexander Zverev 29 Diestro Jan-Lennard Struff 27 Zurdo
Argentina Guido Pella 30 Diestro Maximo Gonzales 25 Zurdo Leonardo Mayer 30 Diestro Diego Schwartman 24 Diestro Lionel Messi 32 Zurdo
Chile Cristian Garin 29 Diestro Nicolas Jarry 28 Zurdo Alejandro Tabilo 14 Zurdo Hans Podlipnik-Castillo 26 Diestro Marcelo Barrios 25 Zurdo
Australia Alex De-Minaur 28 Diestro Nick Kyrgios 29 Zurdo John Peers 30 Diestro Jordan Thompson 27 Diestro Alexei Popyrin 29 Zurdo
Belgium Kimmer Coppejans 30 Diestro Sander Gille 30 Zurdo Joran Vliegen 26 Diestro Steve Darcis 29 Zurdo David Goffin 28 Diestro
Colombia Juan-Sebastian Cabal 29 Diestro Robert Farah 23 Zurdo Santiago Giraldo 21 Zurdo Alejandro Gonzalez 24 Diestro Daniel-Elahi Galan 20 Diestro
Great_Britain Kyle Edmund 21 Diestro Jamie Murray 30 Diestro Neal Skupski 34 Zurdo Andy Murray 20 Diestro Daniel Evans 19 Zurdo
Kazakhstan Mikhail Kukushkin 30 Zurdo Alexander Bublik 20 Diestro Aleksandr Nedovyesov 30 Zurdo Timur Khabibulin 32 Diestro Ta Per 20 Zurdo
Netherlands Robin Haase 20 Diestro Jean-Julien Rojer 22 Zurdo Wesley Koolhof 30 Diestro Botic Van-Zandschulp 23 Diestro Tallon Griekspoor 12 Diestro
United_States Sam Querrey 24 Diestro Jack Sock 26 Zurdo Taylor Fritz 32 Diestro Reily Opelka 28 Zurdo Michael Phelps 33 Diestro
Italy Andreas Seppi 38 Diestro Fabio Fognini 28 Zurdo Matteo Berrettini 23 Diestro Simone Bolelli 28 Zurdo Mario Balotelli 23 Diestro
A France 1 Serbia 2
A Serbia 3 Japan 0
A France 2 Japan 1
B Croatia 0 Spain 3
B Spain 2 Russia 1
B Croatia 0 Russia 3
C Argentina 0 Germany 3
C Germany 2 Chile 1
C Argentina 3 Chile 0
D Belgium 1 Australia 2
D Australia 3 Colombia 0
D Belgium 2 Colombia 1
E Great_Britain 2 Kazakhstan 1
E Great_Britain 2 Netherlands 1
E Kazakhstan 2 Netherlands 1
F United_States 1 Canada 2
F Italy 1 Canada 2
F United_States 2 Italy 1
import random
class Jugador:
def __init__(self, nombre, apellidos, edad, mano):
self.nombre = nombre
self.apellidos = apellidos
self.edad = edad
self.mano = mano
def __str__(self):
return "Nombre: " + self.nombre + "; Apellido: " + self.apellidos + "; Edad: " + str(self.edad) + "; Mano: " + self.mano
class Pais:
def __init__(self, nombre):
self.nombre = nombre
self._jugadores = []
def anadir_jugador(self, jugador: Jugador):
self._jugadores.append(jugador)
def __str__(self):
return "Nombre: " + self.nombre + "\nJugadores: \n " + "\n ".join(map(str, self._jugadores))
class Torneo:
def __init__(self):
self.participantes = {}
self.grupos = {}
def dar_de_alta(self, pais: Pais):
self.participantes.append(pais)
def dar_de_baja(self, nombre: str):
tmp = [p for p in self.participantes if p.nombre != nombre]
self.participantes = tmp
def cargar(self):
fichero = input("Introduzca el nombre de archivo: ")
while True:
try:
with open(fichero) as f:
for line in f:
if line.strip():
params = line.strip().split(" ")
pais = Pais(params[0])
for i in range(1, len(params), 4):
pais.anadir_jugador(Jugador(params[i], params[i + 1], int(params[i + 2]), params[i + 3]))
self.participantes[pais.nombre] = pais
return
except Exception as e:
print(str(e))
continue
def cargar_resultado(self):
fichero = input("Introduzca el nombre de archivo: ")
while True:
try:
with open(fichero) as f:
for line in f:
if line.strip():
params = line.strip().split(" ")
grupo = params[0]
if grupo not in self.grupos: self.grupos[grupo] = {}
pais1 = params[1]
puntuacion_a_favor_del_pais1 = int(params[2])
pais2 = params[3]
puntuacion_a_favor_del_pais2 = int(params[4])
if pais1 not in self.grupos[grupo]:
self.grupos[grupo][pais1] = {}
self.grupos[grupo][pais1]['ganado'] = 0
self.grupos[grupo][pais1]['jugado'] = 0
self.grupos[grupo][pais1]['perdido'] = 0
self.grupos[grupo][pais1]['punto_a_favor'] = 0
self.grupos[grupo][pais1]['punto_a_contra'] = 0
if pais2 not in self.grupos[grupo]:
self.grupos[grupo][pais2] = {}
self.grupos[grupo][pais2]['ganado'] = 0
self.grupos[grupo][pais2]['jugado'] = 0
self.grupos[grupo][pais2]['perdido'] = 0
self.grupos[grupo][pais2]['punto_a_favor'] = 0
self.grupos[grupo][pais2]['punto_a_contra'] = 0
self.grupos[grupo][pais1]['jugado'] += 1
self.grupos[grupo][pais2]['jugado'] += 1
self.grupos[grupo][pais1]['punto_a_favor'] += puntuacion_a_favor_del_pais1
self.grupos[grupo][pais2]['punto_a_contra'] += puntuacion_a_favor_del_pais1
self.grupos[grupo][pais2]['punto_a_favor'] += puntuacion_a_favor_del_pais2
self.grupos[grupo][pais1]['punto_a_contra'] += puntuacion_a_favor_del_pais2
if puntuacion_a_favor_del_pais1 > puntuacion_a_favor_del_pais2:
self.grupos[grupo][pais1]['ganado'] += 1
self.grupos[grupo][pais2]['perdido'] += 1
else:
self.grupos[grupo][pais2]['ganado'] += 1
self.grupos[grupo][pais1]['perdido'] += 1
for grupo in self.grupos:
self.grupos[grupo] = [(pais, self.grupos[grupo][pais]) for pais in self.grupos[grupo]]
def keyf(x):
return x[1]['punto_a_favor']
self.grupos[grupo] = sorted(self.grupos[grupo], reverse=True, key=keyf)
return
except Exception as e:
print(str(e))
continue
def mostrar_equipos(self):
if not self.participantes: self.cargar()
for participante in self.participantes:
print(self.participantes[participante])
print()
def mostrar_resultado(self):
if not self.grupos: self.cargar_resultado()
for grupo in self.grupos:
print("Primera Ronda: Grupo " + grupo)
print("Nación".ljust(20) + "Jugados".ljust(10) + "Ganados".ljust(10) +
"Perdidos".ljust(10) + "Partidos G-P".ljust(10))
for pais in self.grupos[grupo]:
print(
pais[0].ljust(20) +
str(pais[1]['jugado']).ljust(10) +
str(pais[1]['ganado']).ljust(10) +
str(pais[1]['perdido']).ljust(10) +
str(pais[1]['punto_a_favor']) + "-" + str(pais[1]['punto_a_contra'])
)
print()
def mostrar_final(self):
eliminatoria = []
no_eliminatoria = []
# seleccionar el mejor de todos los grupos
for grupo in self.grupos:
eliminatoria.append(self.grupos[grupo][0][0])
no_eliminatoria.append((self.grupos[grupo][1][0], self.grupos[grupo][1][1]) )
eliminatoria.extend(list(map(lambda x: x[0], sorted(no_eliminatoria, reverse=True, key = lambda x: x[1]['punto_a_favor'])[:2])))
for i in range(0, len(eliminatoria), 2):
print("Cuarto de final " + str(i) + ": " + eliminatoria[i] + " – " + eliminatoria[i+1])
if __name__ == "__main__":
torneo = Torneo()
options = {
"1": ("1. Mostrar equipos", torneo.mostrar_equipos),
"2": ("2. Mostrar clasificación fase previa", torneo.mostrar_resultado),
"3": ("3. Mostrar emparejamientos cuartos de final.", torneo.mostrar_final),
}
while True:
for op in options:
print(op + ") " + options[op][0])
selected = input("Indica tu operation: ")
if selected in options:
options[selected][1]()
else:
print("operacion invalida")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment