Curso gratuito de Python. Regístrate para hacer un seguimiento de tu progreso →

Python: Ciclo For

El ciclo while se utiliza para resolver cualquier problema de iteración, pero es bastante extenso y verboso. Con while, es necesario establecer una condición de finalización y un contador. Cuando hay pocos ciclos, esto no es un problema, pero en el código real, los ciclos están presentes en cada paso. Por lo tanto, controlar las condiciones manualmente puede resultar tedioso, especialmente cuando la condición de finalización es obvia.

Por ejemplo, si queremos iterar sobre los caracteres de una cadena, la computadora puede entender automáticamente cuándo la cadena termina. Para este tipo de situaciones, en Python se introdujo el ciclo for. Este ciclo sabe automáticamente cuándo detenerse, ya que solo trabaja con colecciones, es decir, conjuntos de elementos que deben ser iterados.

Una cadena es una colección, ya que está compuesta por un conjunto de caracteres. Otros tipos de colecciones se estudian en otro curso.

Ejemplo:

text = 'code'
for symbol in text:
    print(symbol)

# => c
# => o
# => d
# => e

En el código anterior, el ciclo for recorre cada carácter de la cadena, lo guarda en la variable símbolo y ejecuta el bloque de código interno donde se utiliza esta variable. El nombre de esta variable puede ser cualquier cosa. La estructura general del ciclo for es: for <variable> in <colection>.

Veamos cómo implementar una función para invertir una cadena utilizando el ciclo for:

def reverse_string(text):
  # Valor inicial
  result = ''
  # char - variable donde se guarda el carácter actual
  for char in text:
      # Concatenamos en orden inverso
      result = char + result
  # El ciclo termina cuando se ha recorrido toda la cadena
  print(result)


reverse_string('go!')  # => '!og'

Analicemos detalladamente cómo funciona el ciclo en el ejemplo anterior en cada iteración:

  1. En la primera iteración, en el ciclo result hay una cadena vacía y char es igual al primer carácter '¡'. Por lo tanto, en resultado se asigna el carácter '¡' más la cadena vacía, lo que resulta en '¡'.
  2. En la segunda iteración, result ya contiene el carácter '¡' y char es igual al siguiente carácter 'v'. En result se guarda char + result, es decir, 'v' + '¡'.
  3. En la última iteración, result contiene la cadena '¡v' y char es igual al último carácter '!'. En result se guarda '¡v' + '!'.

Ahora contemos la cantidad de veces que aparece un carácter en una cadena sin tener en cuenta el caso:

# text - texto arbitrario
# char - carácter que se debe contar
def chars_count(text, char):
    # Como estamos buscando la suma, el valor inicial es 0
    result = 0
    for current_char in text:
        # convertimos todo a minúsculas
        # para no depender del caso actual
        if current_char.lower() == char.lower():
            result += 1
    return result


chars_count('hexlet!', 'e')  # 2
chars_count('hExlet!', 'e')  # 2
chars_count('hExlet!', 'E')  # 2

chars_count('hexlet!', 'a')  # 0

Te recomendamos experimentar con los ejemplos anteriores en el Replit interactivo.

Tarea

En una de las lecciones anteriores, ya escribimos la función filter_string(). Recordemos que esta función recibe una cadena y un carácter, y devuelve una nueva cadena en la que se ha eliminado el carácter en todas sus posiciones. Esta vez, implementa esta función utilizando el ciclo for. Un requisito adicional es que el carácter a excluir no distingue entre mayúsculas y minúsculas.

Ejemplo de llamada:

text = 'If I look forward I win'
filter_string(text, 'i')  # 'f  look forward  wn'
filter_string(text, 'O')  # 'If I lk frward I win'
¿El ejercicio no pasa la prueba, qué debo hacer? 😶

Si te quedaste atascado, es el momento perfecto para hacer una pregunta en las "Discusiones".
* Asegúrate de incluir la salida de las pruebas. Sin ella, es casi imposible entender qué está mal, incluso si muestras tu código. Los programadores tienen dificultades para ejecutar el código en su mente, pero casi siempre es posible entender a dónde mirar a partir del error que recibiste.

Mi código funciona en mi entorno, pero no aquí 🤨

Las pruebas están diseñadas de manera que verifican la solución de diferentes maneras y con diferentes datos. A menudo, una solución funciona con ciertos datos de entrada pero no con otros. Para entender este punto, revisa la pestaña "Pruebas" y presta atención a los mensajes de error, que suelen contener pistas.

Mi código es diferente a la solución del profesor 🤔

Esto es normal 🙆. En programación, una tarea puede tener muchas soluciones diferentes. Si tu código pasa la prueba, cumple con los requisitos de la tarea.

En raras ocasiones, la solución puede estar ajustada para pasar las pruebas, pero esto suele ser evidente.

Leí la lección, pero no entendí nada 🙄

Crear materiales de aprendizaje comprensibles para todos es bastante difícil. Hacemos nuestro mejor esfuerzo, pero siempre hay margen para mejorar. Si encuentras material que no entiendes, describe el problema en las "Discusiones". Es ideal si puedes formular los aspectos que no entiendes en forma de preguntas. Por lo general, necesitamos unos días para hacer mejoras.

Por cierto, tú también puedes contribuir a mejorar los cursos: en la parte inferior hay un enlace al código fuente de las lecciones, que se puede modificar directamente en el navegador.

Definiciones

  • Agregación — Acumulación de resultados durante las iteraciones y manejo de estos después del ciclo.


¿Encontraste un error? ¿Quieres añadir algo? Las solicitudes de extracción son bienvenidas. https://codica.la/errores
Si te encuentras con dificultades y no sabes qué hacer, pregunta en nuestra gran y amigable comunidad