Last active
January 11, 2020 09:28
-
-
Save vitaminac/c48e9b2e09766ff9014e3603b282f397 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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