Python Básico para Fútbol

Módulo 5: Loops - Repasando la táctica jugador por jugador

La charla técnica: automatizando instrucciones

Imagina que eres el entrenador y quieres dar una instrucción específica a cada uno de tus defensores antes de un partido. Podrías llamar a Van Dijk y darle la instrucción, luego llamar a Konaté y repetir la misma instrucción, luego a Robertson, y así sucesivamente. Sería repetitivo y poco eficiente, ¿verdad?

En programación, nos enfrentamos a este problema constantemente. A menudo, tenemos una lista de elementos (como nuestra convocatoria de jugadores del módulo anterior) y queremos realizar la misma acción en cada uno de ellos. La solución no es escribir una línea de código para cada jugador. La solución es un bucle (en inglés, loop).

Un bucle es una estructura que nos permite ejecutar el mismo bloque de código una y otra vez para cada elemento de una colección. Es una de las herramientas más potentes para la automatización de tareas con Python.

El bucle for: repasando la convocatoria

El tipo de bucle más común y útil para nosotros es el bucle for. Su lógica es muy intuitiva: “para cada jugador en la lista de defensores, haz lo siguiente…”.

Vamos a verlo con un ejemplo práctico. Abre tu archivo modulo-5.py en VS Code. Primero, crearemos nuestra lista de defensores del Liverpool.

defensas_liverpool = ["Van Dijk", "Konaté", "Robertson", "Alexander-Arnold"]

Ahora, en lugar de imprimir cada nombre manualmente, usaremos un bucle for para que Python lo haga por nosotros.

defensas_liverpool = ["Van Dijk", "Konaté", "Robertson", "Alexander-Arnold"]

# La sintaxis del bucle for
for jugador in defensas_liverpool:
    print(jugador, "está listo para defender.")

Analicemos la sintaxis, ya que es muy importante:

  1. for jugador in defensas_liverpool:: Aquí definimos el bucle.
  • jugador es una nueva variable que creamos en el momento. En cada “vuelta” o iteración del bucle, esta variable tomará el valor de un elemento de la lista. En la primera vuelta, jugador será "Van Dijk"; en la segunda, será "Konaté", etc.

  • in defensas_liverpool: Le decimos a Python sobre qué lista queremos iterar.

  • :: Los dos puntos al final son cruciales. Le indican a Python que lo que viene a continuación es el bloque de código que se debe repetir.

  1. print(...): Esta línea está indentada (tiene un espacio al principio, usualmente 4 espacios o una tabulación). La indentación es la forma en que Python sabe qué código pertenece al bucle. Todo lo que esté indentado se ejecutará en cada iteración.

Salida del código:

Van Dijk está listo para defender.
Konaté está listo para defender.
Robertson está listo para defender.
Alexander-Arnold está listo para defender.

¡Magia! Con solo dos líneas de código, hemos realizado una acción para cada uno de los cuatro jugadores. Imagina el poder de esto cuando trabajemos con cientos de pases o miles de eventos de un partido.

Potenciando los bucles

Dentro de un bucle, puedes poner la lógica que necesites. Podemos, por ejemplo, combinarlo con lo que ya sabemos.

delanteros_liverpool = ["Salah", "Núñez", "Díaz", "Jota"]
goles = [25, 18, 13, 15] # Una lista con los goles de cada uno

# ¡Ojo! Este ejemplo es más avanzado y solo para ilustrar
for i in range(len(delanteros_liverpool)):
    jugador = delanteros_liverpool[i]
    total_goles = goles[i]
    print(jugador, "marcó", total_goles, "goles.")

No te preocupes por entender range(len(...)) todavía. Lo importante es que veas que podemos acceder a múltiples listas y realizar operaciones más complejas dentro de un bucle.

Una habilidad fundamental

Has aprendido a automatizar. Los bucles son el corazón de muchísimos programas y scripts de análisis de datos. La capacidad de tomar una colección de datos y procesar cada elemento de forma sistemática es lo que nos permite analizar temporadas completas, en lugar de un solo partido.

En el próximo módulo, aprenderemos a empaquetar nuestro código en bloques reutilizables llamados funciones. Si un bucle es como dar la misma instrucción a cada jugador, una función es como diseñar una “jugada ensayada” que podemos ejecutar cuando queramos sin tener que explicarla desde cero cada vez.