Skip to content

Instantly share code, notes, and snippets.

@perseoq
Created November 13, 2024 14:49
Show Gist options
  • Select an option

  • Save perseoq/31ddeee425fdf8cc3dd3c2467211306f to your computer and use it in GitHub Desktop.

Select an option

Save perseoq/31ddeee425fdf8cc3dd3c2467211306f to your computer and use it in GitHub Desktop.
Formula calificar al mejor jugador del partido
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