{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bucles\n", "\n", "Los **bucles** permiten iterar rápidamente una y otra vez sobre una estructura de datos. En Python hay dos tipos de bucles: `for` y `while`.\n", "\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", "['lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado', 'domingo']\n", "['Green', 'colorless', 'ideas', 'sleep', 'furiously']\n", "['sandra@mail.com', 'ana@mail.com', 'pepe@mail.es']\n" ] } ], "source": [ "# antes de nada, creo unas cuantas variables con listas para jugar\n", "numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", "print(numeros)\n", "\n", "# fíjate en esta forma nueva de crear una lista a partir de una cadena\n", "# el método .split() me permite \"romper\" una cadena en una lista de cadenas\n", "# cuando usamos .split() sin más, estamos tokenizando una cadena de texto\n", "semana = \"lunes martes miercoles jueves viernes sabado domingo\".split()\n", "print(semana)\n", "\n", "oracion = \"Green colorless ideas sleep furiously\".split()\n", "print(oracion)\n", "\n", "# sin embargo, puedo especificar una subcadena como separador \n", "emails = \"sandra@mail.com; ana@mail.com; pepe@mail.es\".split(\"; \")\n", "print(emails)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El tercer número de mi lista es 3\n", "Y el último email es pepe@mail.es\n" ] } ], "source": [ "# puedo acceder a los elementos de la lista a través de índices\n", "print(\"El tercer número de mi lista es\", numeros[2])\n", "print(\"Y el último email es\", emails[-1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si necesitamos recorrer todos y cada uno de los elementos de la lista, es más sencillo usar un bucle `for`.\n", "\n", "## Bucles `for`.\n", "\n", "La instrucción `for` permite recorrer los elementos de cualquier secuencia ordenada de uno en uno y por orden. La sintaxis de un bloque de código `for-in` es la siguiente:\n", "\n", " for ELEMENTO in SECUENCIA:\n", " # ejecuta las instrucciones tantas veces como elementos tenga la secuencia\n", " INSTRUCCIONES\n", "\n", "Las palabras reservadas `for` y `in` son obligatorias. SECUENCIA puede ser cualquier estructuras de datos que sea una secuencia ordenada (por ejemplo, **cadenas**, las **listas** y las **tuplas**). `ELEMENTO` es el con el que designamos cada uno de los elementos de `SECUENCIA`. Ten en cuenta de `ELEMENTO` adopta, en cada paso del bucle, un valor diferente." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Voy por el numero 1\n", "Voy por el numero 2\n", "Voy por el numero 3\n", "Voy por el numero 4\n", "Voy por el numero 5\n", "Voy por el numero 6\n", "Voy por el numero 7\n", "Voy por el numero 8\n", "Voy por el numero 9\n", "Voy por el numero 10\n" ] } ], "source": [ "for n in numeros:\n", " print(\"Voy por el numero\", n)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Me gusta el lunes\n", "Me gusta el martes\n", "Me gusta el miercoles\n", "Me gusta el jueves\n", "Me gusta el viernes\n", "Me gusta el sabado\n", "Me gusta el domingo\n" ] } ], "source": [ "for dia in semana:\n", " print(\"Me gusta el\", dia)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Tengo 6 cosas guardadas en un cajón:\n", "- una bicicleta\n", "- 234\n", "- el número pi\n", "- 23\n", "- un libro\n", "- otro libro\n" ] } ], "source": [ "cajon = [\"una bicicleta\", 234, \"el número pi\", 23, \"un libro\", \"otro libro\"]\n", "\n", "print(\"Tengo\", len(cajon), \"cosas guardadas en un cajón:\")\n", "for elemento in cajon:\n", " print(\"-\", elemento)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Pepito', 'Raúl', 'Ana', 'Antonio', 'María']\n", "Paco no ha venido hoy.\n" ] } ], "source": [ "alumnos = \"Pepito:Raúl:Ana:Antonio:María\".split(\":\")\n", "print(alumnos)\n", "\n", "\n", "if \"Paco\" in alumnos:\n", " print(\"Paco está en clase.\")\n", "else:\n", " print(\"Paco no ha venido hoy.\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a\n", "b\n", "c\n", "d\n", "e\n", "f\n", "g\n", "h\n", "i\n", "j\n", "k\n", "l\n", "m\n", "n\n", "o\n", "p\n", "q\n", "r\n", "s\n", "t\n", "u\n", "v\n", "w\n", "x\n", "y\n", "z\n" ] } ], "source": [ "for letra in \"abcdefghijklmnopqrstuvwxyz\":\n", " print(letra)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bucles `while`.\n", "\n", "La instrucción `while` permite establecer un bucle que repita un conjunto de instrucciones siempre que se dé determinada condición. La sintaxis de un bloque de código `while` es la siguiente:\n", "\n", " while CONDICIÓN:\n", " # ejecuta las instrucciones a continuación mientras CONDICIÓN sea verdadera\n", " INSTRUCCIONES\n", "\n", "Apenas la vamos a utilizar, pero sirva el siguiente ejemplo para ilustrar su uso." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "El número 1 es menor o igual que 5\n", "El número 2 es menor o igual que 5\n", "El número 3 es menor o igual que 5\n", "El número 4 es menor o igual que 5\n", "El número 5 es menor o igual que 5\n" ] } ], "source": [ "numero = 1\n", "limite = 5\n", "\n", "while numero <= limite:\n", " print(\"El número\", numero, \"es menor o igual que\", limite)\n", " numero = numero + 1" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.4.3+" } }, "nbformat": 4, "nbformat_minor": 0 }