{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", " \n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", " \n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Bucles en Python

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

¡Bienvenido! En este cuaderno aprenderás acerca de los bucles en el Lenguaje de Programacion Python. Al finalizar este laboratorio sabras como usar las sentencias de ciclado en Pyhon, incluidos los for y los while.

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Tabla de Contenido

\n", "
\n", " \n", "

\n", " Tiempo Estimado: 20 min\n", "

\n", "
\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Bucles

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Rango

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En ocasiones, es necesario repetir la misma operación varias veces. La repetición de operaciones es una tarea de la que se encargan los bucles. Veremos dos tipos, el for y el while.\n", "\n", "Antes de discutir el tema de los bucles, hablemos primero del range. Es útil pensar en el rango como una lista ordenada. Por ahora, veamos un caso sencillo. Si quisiéramos generar una secuencia que contenga tres elementos ordenados desde 0 hasta 2 usaríamos este comando:\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "range(0, 3)" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Usar el rango\n", "\n", "range(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

¿Qué es el bucle for?

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "El bucle for permite ejecutar un bloque de código múltiples veces. Por ejemplo, podrías usarlo si quisieras imprimir cada elemento en una lista. Usemos el bucle for para imprimir todos los años presentes en la lista dates:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Esto puede hacerse de la siguiente forma:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ejemplo de un bucle for\n", "\n", "dates = [1982,1980,1973]\n", "N = len(dates)\n", "\n", "for i in range(N):\n", " print(dates[i]) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "El código con sangría es ejecutado N veces, el valor de i se incrementa en 1 por cada ejecución. La sentencia para ejecutar es imprimir el valor de la lista de acuerdo con el índice i como se muestra aquí:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En este ejemplo imprimiremos una secuencia de números del 0 al 7:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ejemplo de un bucle for\n", "\n", "for i in range(0, 8):\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En Python podemos acceder directamente a los elementos de la lista de la siguiente forma:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ejemplo de un bucle for en una lista\n", "\n", "for year in dates: \n", " print(year) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Por cada iteración, el valor de la variable years se comporta de forma parecida al valor de dates[i] del primer ejemplo:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos modificar los elementos en una lista:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Usar el bucle for para cambiar los elementos de la lista\n", "\n", "squares = ['red', 'yellow', 'green', 'purple', 'blue']\n", "\n", "for i in range(0, 5):\n", " print(\"Before square \", i, 'is', squares[i])\n", " squares[i] = 'weight'\n", " print(\"After square \", i, 'is', squares[i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos acceder al índice y los elementos de una lista de la siguiente manera:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Bucle for en una lista haciendo iteraciones con el valor del índice y el elemento de la lista\n", "\n", "squares=['red', 'yellow', 'green', 'purple', 'blue']\n", "\n", "for i, square in enumerate(squares):\n", " print(i, square)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

¿Qué es el bucle while?

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Como puedes observar, el bucle for es utilizado para controlar el flujo de la repetición. Sin embargo, ¿Qué pasa cuando no sabemos en que momento detener el bucle? ¿Y si queremos mantener la ejecución de un bloque de código hasta que se cumpla cierta condición? El bucle while es una herramienta para ejecutar repetidamente en base a una condición. El bloque de código seguirá ejecutándose hasta que la condición lógica dada regresa un valor **Falso**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Supongamos que deseamos interactuar sobre la lista dates y detenernos en el año 1973, después imprimir el numero de iteraciones. Esto puede realizarse con el siguiente bloque de código:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Ejemplo de Bucle While\n", "\n", "dates = [1982, 1980, 1973, 2000]\n", "\n", "i = 0\n", "year = 0\n", "\n", "while(year != 1973):\n", " year = dates[i]\n", " i = i + 1\n", " print(year)\n", "\n", "print(\"It took \", i ,\"repetitions to get out of loop.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Un bucle while interactua hasta que la condición en el argumento no es alcanzada, como se muestra en la imagen siguiente:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Cuestionario sobre Bucles

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Escribe un bucle for que imprima todos los elementos entre -5 y 5 usando la función range." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-5\n", "-4\n", "-3\n", "-2\n", "-1\n", "0\n", "1\n", "2\n", "3\n", "4\n", "5\n" ] } ], "source": [ "for i in range(-5,6):\n", " print(i)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Haz doble click __aquí__ para ver la solución.\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Imprime los elementos de la siguiente lista:\n", "Genres=[ 'rock', 'R&B', 'Soundtrack', 'R&B', 'soul', 'pop']\n", "Y asegúrate de seguir las convenciones del lenguaje Python" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rock\n", "R&B\n", "Soundtrack\n", "R&B\n", "soul\n", "pop\n" ] } ], "source": [ "Genres=[ 'rock', 'R&B', 'Soundtrack', 'R&B', 'soul', 'pop']\n", "for genre in Genres:\n", " print(genre)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Haz doble click __aquí__ para ver la solución.\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Escribe un bucle for que imprima la siguiente lista: squares=['red', 'yellow', 'green', 'purple', 'blue']" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "red\n", "yellow\n", "green\n", "purple\n", "blue\n" ] } ], "source": [ "squares=['red', 'yellow', 'green', 'purple', 'blue']\n", "for square in squares:\n", " print(square)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Haz doble click __aquí__ para ver la solución.\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Escribe un bucle while que muestre los valores de la calificación de las canciones de un disco almacenados en la lista PlayListRatings. Si la calificación es menor a 6, sal del bucle. La lista PlayListRatings esta compuesta por: PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10\n", "9.5\n", "10\n", "8\n" ] } ], "source": [ "PlayListRatings = [10, 9.5, 10, 8, 7.5, 5, 10, 10]\n", "i = 1\n", "valor = PlayListRatings[0]\n", "while valor >= 8:\n", " print(valor)\n", " valor = PlayListRatings[i]\n", " i = i +1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Haz doble click __aquí__ para ver la solución.\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Escribe un bucle while que copie las cadenas 'orange' de la lista squares a la lista new_squares. Detente y sal del ciclo si el valor en la lista no es 'orange':" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Haz doble click __aquí__ para ver la solución.\n", "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['orange', 'orange']\n" ] } ], "source": [ "squares = ['orange', 'orange', 'purple', 'blue ', 'orange']\n", "new_squares = []\n", "i = 0\n", "while(squares[i] == 'orange'):\n", " new_squares.append(squares[i])\n", " i = i + 1\n", "print(new_squares)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

¡El último ejercicio!

\n", "

Felicidades, has completado tu primera lección y practica de laboratorio en Python. Sin embargo, hay algo mas que debes saber. La comunidad en Ciencia de Datos te alienta a compartir tu trabajo. La mejor forma de hacerlo es a través de GitHub. Al compartir tus cuadernos en GitHub, además de construir una reputación entre la comunidad de los científicos de datos, también te ayudará en el proceso de encontrar un trabajo. Incluso si este fuera tu primer material de trabajo, nunca es tarde para fomentar buenos hábitos. Por favor lee y analiza este artículo para aprender a compartir tu trabajo.\n", "


" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

¡Obtén gratis IBM Watson Studio!

\n", "

\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Acerca de los Autores:

\n", "

Joseph Santarcangelo es un Científico de Datos en IBM, además posee un doctorado en Ingeniería Eléctrica. Su trabajo de investigación se centra en el uso de Aprendizaje Automático (Machine Learning), Procesamiento de Señales y Visión Artificial para determinar el impacto de los videos en el proceso cognitivo. Joseph trabaja en IBM desde la terminación de su doctorado.

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Otros colaboradores: Mavis Zhou, James Reeve" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "

Copyright © 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the MIT License.

" ] } ], "metadata": { "kernelspec": { "display_name": "Python", "language": "python", "name": "conda-env-python-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.11" } }, "nbformat": 4, "nbformat_minor": 4 }