{ "metadata": { "name": "", "signature": "sha256:a33ea0f5c842e85353983eba0c65ed50158f232ba4c4f17613b60ed314c74026" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bucles\n", "\n", "Los **bucles** permiten iterar r\u00e1pidamente una y otra vez sobre una estructura de datos. En Python hay dos tipos de bucles: `for` y `while`.\n", "\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# 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\u00edjate en esta forma nueva de crear una lista a partir de una cadena\n", "# el m\u00e9todo .split() me permite \"romper\" una cadena en una lista de cadenas\n", "# cuando usamos .split() sin m\u00e1s, 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" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "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" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "# puedo acceder a los elementos de la lista a trav\u00e9s de \u00edndices\n", "print \"El tercer n\u00famero de mi lista es\", numeros[2]\n", "print \"Y el \u00faltimo email es\", emails[-1]" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si necesitamos recorrer todos y cada uno de los elementos de la lista, es m\u00e1s sencillo usar un bucle `for`.\n", "\n", "## Bucles `for`.\n", "\n", "La instrucci\u00f3n `for` permite recorrer los elementos de cualquier secuencia ordenada de uno en uno y por orden. La sintaxis de un bloque de c\u00f3digo `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", "collapsed": false, "input": [ "for n in numeros:\n", " print \"Voy por el numero\", n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "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" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "for dia in semana:\n", " print \"Me gusta el\", dia" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "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" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "cajon = [\"una bicicleta\", 234, \"el n\u00famero pi\", 23, \"un libro\", \"otro libro\"]\n", "\n", "print \"Tengo\", len(cajon), \"cosas guardadas en un caj\u00f3n:\" \n", "\n", "for elemento in cajon:\n", " print \"-\", elemento" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Tengo 6 cosas guardadas en un caj\u00f3n:\n", "- una bicicleta\n", "- 234\n", "- el n\u00famero pi\n", "- 23\n", "- un libro\n", "- otro libro\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "alumnos = \"Pepito:Ra\u00fal:Ana:Antonio:Mar\u00eda\".split(\":\")\n", "print alumnos\n", "\n", "\n", "if \"Paco\" in alumnos:\n", " print \"Paco est\u00e1 en clase.\"\n", "else:\n", " print \"Paco no ha venido hoy.\"" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['Pepito', 'Ra\\xc3\\xbal', 'Ana', 'Antonio', 'Mar\\xc3\\xada']\n", "Paco no ha venido hoy.\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "for letra in \"abcdefghijklmnopqrstuvwxyz\":\n", " print letra" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "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" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bucles `while`.\n", "\n", "La instrucci\u00f3n `while` permite establecer un bucle que repita un conjunto de instrucciones siempre que se d\u00e9 determinada condici\u00f3n. La sintaxis de un bloque de c\u00f3digo `while` es la siguiente:\n", "\n", " while CONDICI\u00d3N:\n", " # ejecuta las instrucciones a continuaci\u00f3n mientras CONDICI\u00d3N sea verdadera\n", " INSTRUCCIONES\n", "\n", "Apenas la vamos a utilizar, pero sirva el siguiente ejemplo para ilustrar su uso." ] }, { "cell_type": "code", "collapsed": false, "input": [ "numero = 1\n", "limite = 5\n", "\n", "while numero <= limite:\n", " print \"El n\u00famero\", numero, \"es menor o igual que\", limite\n", " numero = numero + 1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "El n\u00famero 1 es menor o igual que 5\n", "El n\u00famero 2 es menor o igual que 5\n", "El n\u00famero 3 es menor o igual que 5\n", "El n\u00famero 4 es menor o igual que 5\n", "El n\u00famero 5 es menor o igual que 5\n" ] } ], "prompt_number": 7 } ], "metadata": {} } ] }