Created
November 13, 2024 14:49
-
-
Save perseoq/31ddeee425fdf8cc3dd3c2467211306f to your computer and use it in GitHub Desktop.
Formula calificar al mejor jugador del partido
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
| def calcular_rating_jugador(stats, posicion): | |
| """ | |
| Calcula el rating de un jugador basado en sus estadísticas y posición | |
| Parámetros: | |
| stats (dict): Diccionario con estadísticas del jugador | |
| posicion (str): 'DEL', 'MED', 'DEF' o 'POR' | |
| Returns: | |
| float: Rating del jugador (0-10) | |
| """ | |
| # Pesos base para todas las posiciones | |
| pesos_base = { | |
| 'minutos_jugados': 0.1, | |
| 'pases_completados': 0.2, | |
| 'precision_pases': 0.2, | |
| 'duelos_ganados': 0.2 | |
| } | |
| # Pesos específicos por posición | |
| pesos_especificos = { | |
| 'DEL': { | |
| 'goles': 0.4, | |
| 'asistencias': 0.3, | |
| 'tiros_puerta': 0.2, | |
| 'ocasiones_creadas': 0.2 | |
| }, | |
| 'MED': { | |
| 'asistencias': 0.3, | |
| 'recuperaciones': 0.3, | |
| 'ocasiones_creadas': 0.3, | |
| 'precision_pases': 0.3 | |
| }, | |
| 'DEF': { | |
| 'intercepciones': 0.4, | |
| 'entradas_exitosas': 0.3, | |
| 'duelos_aereos': 0.3, | |
| 'despejes': 0.2 | |
| }, | |
| 'POR': { | |
| 'atajadas': 0.4, | |
| 'salidas_exitosas': 0.3, | |
| 'penales_atajados': 0.4, | |
| 'precision_pases': 0.1 | |
| } | |
| } | |
| # Cálculo base | |
| rating_base = sum( | |
| stats.get(stat, 0) * peso | |
| for stat, peso in pesos_base.items() | |
| ) | |
| # Cálculo específico por posición | |
| rating_especifico = sum( | |
| stats.get(stat, 0) * peso | |
| for stat, peso in pesos_especificos[posicion].items() | |
| ) | |
| # Rating final (normalizado a escala 0-10) | |
| rating_final = (rating_base + rating_especifico) / ( | |
| sum(pesos_base.values()) + | |
| sum(pesos_especificos[posicion].values()) | |
| ) * 10 | |
| return min(10, max(0, rating_final)) | |
| # Ejemplo de uso | |
| ejemplo_delantero = { | |
| 'minutos_jugados': 90, | |
| 'pases_completados': 25, | |
| 'precision_pases': 0.85, | |
| 'duelos_ganados': 8, | |
| 'goles': 2, | |
| 'asistencias': 1, | |
| 'tiros_puerta': 4, | |
| 'ocasiones_creadas': 3 | |
| } | |
| rating = calcular_rating_jugador(ejemplo_delantero, 'DEL') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment