{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "metadata": { "id": "FV_YswTqp3m6" }, "source": [ "# Bucle ```while``` [2]" ], "id": "FV_YswTqp3m6" }, { "cell_type": "markdown", "metadata": { "id": "qka3o4m5p3m7" }, "source": [ "## Introduciendo la instrucción ```break```" ], "id": "qka3o4m5p3m7" }, { "cell_type": "markdown", "metadata": { "id": "uq_Wdssup3m7" }, "source": [ "### Primero hacemos un bucle while sencillo" ], "id": "uq_Wdssup3m7" }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "wUzAygQhp3m8", "outputId": "d7c0db75-c4d1-4148-a5a5-664bebacb8f8", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "5\n", "4\n", "3\n", "2\n", "1\n" ] } ], "source": [ "contador = 5\n", "\n", "while contador > 0:\n", " print(contador)\n", " contador -= 1" ], "id": "wUzAygQhp3m8" }, { "cell_type": "markdown", "metadata": { "id": "vg7RtkLkp3m9" }, "source": [ "### Segundo, introducimos un ```else```" ], "id": "vg7RtkLkp3m9" }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "0k0bHHRXp3m9", "outputId": "01f8872c-c6c4-4f5d-bd1a-e3cb17e8b745", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "5\n", "4\n", "3\n", "2\n", "1\n", "¡Lanzamiento!\n" ] } ], "source": [ "contador = 5\n", "\n", "while contador > 0:\n", " print(contador)\n", " contador -= 1\n", "else:\n", " print(\"¡Lanzamiento!\")" ], "id": "0k0bHHRXp3m9" }, { "cell_type": "markdown", "metadata": { "id": "-0txISgkp3m-" }, "source": [ "### Tercero, con un condicional introducimos un ```break```" ], "id": "-0txISgkp3m-" }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "Ps2VKo8_p3m-", "outputId": "a3619d11-662b-4830-d420-0184ee5da0e8", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "5\n", "4\n", "3\n" ] } ], "source": [ "contador = 5\n", "\n", "while contador > 0:\n", " print(contador)\n", " contador -= 1\n", " if contador == 2: # si al llegar la cuenta a tras a 2 introducimos un break se interrumpe todo\n", " break\n", "else: # incluso queda interrumpido el else, que nunca se ejecutará\n", " print(\"¡Lanzamiento!\")" ], "id": "Ps2VKo8_p3m-" }, { "cell_type": "markdown", "metadata": { "id": "o9TZ91nap3m_" }, "source": [ "## Otro ```while``` sencillo" ], "id": "o9TZ91nap3m_" }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "MDDsGulZp3m_", "outputId": "f5c561a3-261d-4dd3-fb9f-c8cf4c9c8a40", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "El valor de a es menor de 100, por ahora vale: 0\n", "El valor de a es menor de 100, por ahora vale: 10\n", "El valor de a es menor de 100, por ahora vale: 20\n", "El valor de a es menor de 100, por ahora vale: 30\n", "El valor de a es menor de 100, por ahora vale: 40\n", "El valor de a es menor de 100, por ahora vale: 50\n", "El valor de a es menor de 100, por ahora vale: 60\n", "El valor de a es menor de 100, por ahora vale: 70\n", "El valor de a es menor de 100, por ahora vale: 80\n", "El valor de a es menor de 100, por ahora vale: 90\n" ] } ], "source": [ "a = 0\n", "while a < 100:\n", " print(\"El valor de a es menor de 100, por ahora vale: \", a)\n", " a += 10" ], "id": "MDDsGulZp3m_" }, { "cell_type": "markdown", "metadata": { "id": "A8nsglH3p3nA" }, "source": [ "## Comprobando contraseña reiteradamente hasta que sea correcta" ], "id": "A8nsglH3p3nA" }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "H8urdnGop3nA", "outputId": "b1f3b4c0-60d8-4daa-a0b9-045f37de2d3e", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Introduzca la contraseña: Paris\n", "Introduzca la contraseña: París2024\n", "Contraseña correcta. Puede acceder.\n" ] } ], "source": [ "password = \"\" #inicializamos la variable\n", "while password != \"París2024\":\n", " password = str(input(\"Introduzca la contraseña: \"))\n", "print(\"Contraseña correcta. Puede acceder.\")" ], "id": "H8urdnGop3nA" }, { "cell_type": "markdown", "metadata": { "id": "VuGkQFdjp3nA" }, "source": [ "## Comprobando reiteradamente con un ```while True:```" ], "id": "VuGkQFdjp3nA" }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "plgiVyzGp3nA", "outputId": "48074684-990b-4cec-fd5a-fb67f244fa95", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Introduzca la contraseña: Angeles\n", "Introduzca la contraseña: Los Ángeles 2028\n", "Contraseña correcta. \n", "Puede acceder.\n" ] } ], "source": [ "while True:\n", " password = str(input(\"Introduzca la contraseña: \"))\n", " if password == \"Los Ángeles 2028\": break\n", "print(\"Contraseña correcta. \\nPuede acceder.\") #Con \\n hacemos un retorno de carro (new line)" ], "id": "plgiVyzGp3nA" }, { "cell_type": "markdown", "metadata": { "id": "xT_RnBPVp3nB" }, "source": [ "## Las listas vacías dan ```False```" ], "id": "xT_RnBPVp3nB" }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "dAgSIoz3p3nB", "outputId": "1ac00ec1-0b34-44ad-a01a-53b2ffb12e0d", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "tres\n", "dos\n", "uno\n", "cero\n" ] } ], "source": [ "milista = ['cero', 'uno', 'dos', 'tres']\n", "while milista: #cuando la lista está vacía da False\n", " print(milista.pop(-1))" ], "id": "dAgSIoz3p3nB" }, { "cell_type": "markdown", "metadata": { "id": "bJ_VO-VGp3nB" }, "source": [ "## No existe Switch en Python\n", "En Python no existe la estructura Select Case o Switch-Case, pero podemos construir su equivalente." ], "id": "bJ_VO-VGp3nB" }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "bvamscE4p3nB", "outputId": "0b83cc3c-986d-479f-b534-11c64529f04c", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "El destino es el aeropuerto de Madrid\n" ] } ], "source": [ "aeropuerto = \"MAD\" #Equivale a Select Case de otros lenguajes, o Switch-Case\n", "while True:\n", " if aeropuerto == \"MAD\": print(\"El destino es el aeropuerto de Madrid\"); break\n", " if aeropuerto == \"BNC\": print(\"El destino es el aeropuerto de Barcelona\"); break\n", " if aeropuerto == \"TFN\": print(\"El destino es el aeropuerto de Tenerife Norte\"); break\n", " break" ], "id": "bvamscE4p3nB" }, { "cell_type": "markdown", "metadata": { "id": "9hd-4NM6p3nC" }, "source": [ "## Seguir pidiendo datos hasta que se introduzca uno válido\n", "Podemos crear un menú donde el seguirá introduciendo valores con un ```input``` hasta que se introduzca uno admitido dentro de las opciones del menú." ], "id": "9hd-4NM6p3nC" }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "dXrppbJ2p3nC", "outputId": "300b1e0b-2597-4469-df39-c8ba46969fb1", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Bienvenido al menú que le permite elegir aeropuerto de destino.\n", "Indique su destino:\n", " \t1\tDestino Madrid\n", " \t2\tDestino Barcelona\n", " \t3\tDestino Tenerife Norte\n", "Indique la opción elegida.1\n", "Emitiendo tarjeta de embarque destino MAD.\n", "Buen vuelo.\n" ] } ], "source": [ "print(\"Bienvenido al menú que le permite elegir aeropuerto de destino.\")\n", "while True:\n", " print('''Indique su destino:\n", " \\t1\\tDestino Madrid\n", " \\t2\\tDestino Barcelona\n", " \\t3\\tDestino Tenerife Norte''')\n", " opcion = input(\"Indique la opción elegida.\")\n", " if opcion == '1':\n", " print(\"Emitiendo tarjeta de embarque destino MAD.\")\n", " break\n", " elif opcion == '2':\n", " print(\"Emitiendo tarjeta de embarque destino BNC.\")\n", " break\n", " elif opcion == '3':\n", " print(\"Emitiendo tarjeta de embarque destino TFN.\")\n", " break\n", " else:\n", " print(\"Debe elegir la opción 1,2 o 3.\")\n", " print(\"Vuelva a intentarlo.\\n\")\n", "print(\"Buen vuelo.\")" ], "id": "dXrppbJ2p3nC" }, { "cell_type": "markdown", "metadata": { "id": "eoAJt_10p3nC" }, "source": [ "En el código anterior se sale del bucle cuando se elige una de las opciones permitidas. \n", "En el siguiente código se sale del bucle cuando se elige una opción concreta de salida, pero con el resto se repite el bucle." ], "id": "eoAJt_10p3nC" }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "LELW2fyLp3nC", "outputId": "bdd33bf7-6585-483a-90e0-4dad1a04d219", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "CALCULADORA\n", "Indique el primer número:2\n", "Indique el segundo número:5\n", "\n", "Operar con los números 2.0 y 5.0. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Salir\n", "3\n", "Al dividir 2.0 entre 5.0 obtenemos 0.4.\n", "\n", "Operar con los números 2.0 y 5.0. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Salir\n", "2\n", "El producto de 2.0 e 5.0 es 10.0.\n", "\n", "Operar con los números 2.0 y 5.0. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Salir\n", "4\n", "Saliendo de la calculadora... Hasta pronto.\n" ] } ], "source": [ "print(\"CALCULADORA\")\n", "x = float(input('Indique el primer número:'))\n", "y = float(input('Indique el segundo número:'))\n", "while True:\n", " print(f'''\\nOperar con los números {x} y {y}. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Salir''')\n", " n = input()\n", " if n=='1':\n", " print(f\"La suma de {x} e {y} es {x+y}.\")\n", " elif n=='2':\n", " print(f\"El producto de {x} e {y} es {x*y}.\")\n", " elif n=='3':\n", " print(f\"Al dividir {x} entre {y} obtenemos {x/y}.\")\n", " elif n=='4':\n", " print(\"Saliendo de la calculadora... Hasta pronto.\")\n", " break\n", " else:\n", " print(\"Opción desconocida, vuelva a intentarlo.\")" ], "id": "LELW2fyLp3nC" }, { "cell_type": "markdown", "metadata": { "id": "Ctv-g59ip3nD" }, "source": [ "### Ejercicio \n", "Cree otra versión del código anterior de calculadora donde exista una opción adicional del menú que permita solicitar al usuario nuevos números x e y." ], "id": "Ctv-g59ip3nD" }, { "cell_type": "markdown", "metadata": { "id": "7X7HEqgJp3nD" }, "source": [ "#### Solución" ], "id": "7X7HEqgJp3nD" }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "1gS5LtVOp3nD", "outputId": "6336164c-8959-4362-873e-d0d00f26dac1", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Indique el primer número:101\n", "Indique el segundo número:17\n", "\n", "Operar con los números 101.0 y 17.0. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Elegir otros números\n", " 5 Salir\n", "3\n", "Al dividir 101.0 entre 17.0 obtenemos 5.9411764705882355.\n", "\n", "Operar con los números 101.0 y 17.0. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Elegir otros números\n", " 5 Salir\n", "4\n", "Indique el primer número:12\n", "Indique el segundo número:4\n", "\n", "Operar con los números 12.0 y 4.0. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Elegir otros números\n", " 5 Salir\n", "2\n", "El producto de 12.0 e 4.0 es 48.0.\n", "\n", "Operar con los números 12.0 y 4.0. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Elegir otros números\n", " 5 Salir\n", "5\n", "Saliendo de la calculadora... Hasta pronto.\n" ] } ], "source": [ "calcular = True # variable de control\n", "while calcular: # la primera vez se entra seguro pq es True\n", " x = float(input('Indique el primer número:'))\n", " y = float(input('Indique el segundo número:'))\n", " while True: # hemos metido bucle dentro de bucle, están anidados\n", " print(f'''\\nOperar con los números {x} y {y}. Elija la operación a realizar:\n", " 1 Suma\n", " 2 Producto\n", " 3 División\n", " 4 Elegir otros números\n", " 5 Salir''')\n", " n = input()\n", " if n=='1':\n", " print(f\"La suma de {x} e {y} es {x+y}.\")\n", " elif n=='2':\n", " print(f\"El producto de {x} e {y} es {x*y}.\")\n", " elif n=='3':\n", " print(f\"Al dividir {x} entre {y} obtenemos {x/y}.\")\n", " elif n=='4':\n", " break # el break nos saca del bucle interno\n", " elif n=='5':\n", " print(\"Saliendo de la calculadora... Hasta pronto.\")\n", " calcular = False # esto permitira salir del bucle externo\n", " break # el break nos saca del bucle interno\n", " else:\n", " print(\"Opción desconocida, vuelva a intentarlo.\")" ], "id": "1gS5LtVOp3nD" }, { "cell_type": "markdown", "metadata": { "id": "p0SCfFdqp3nD" }, "source": [ "### Ejercicio\n", "Pedir números por teclado hasta que se introduzca uno impar." ], "id": "p0SCfFdqp3nD" }, { "cell_type": "markdown", "metadata": { "id": "_M4BPvotp3nE" }, "source": [ "#### Solución 1" ], "id": "_M4BPvotp3nE" }, { "cell_type": "code", "execution_count": 12, "metadata": { "id": "ajNTsbJpp3nE", "outputId": "27ee1c06-713e-49f3-ff3a-4803e378d00e", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Indique un numero impar: 4\n", "Indique un numero impar: 8\n", "Indique un numero impar: 9\n" ] } ], "source": [ "while True:\n", " n = int(input('Indique un numero impar: '))\n", " if n % 2 != 0: break" ], "id": "ajNTsbJpp3nE" }, { "cell_type": "markdown", "metadata": { "id": "xxCvuBLjp3nE" }, "source": [ "#### Solución 2" ], "id": "xxCvuBLjp3nE" }, { "cell_type": "code", "execution_count": 13, "metadata": { "id": "1SYZtmIcp3nE", "outputId": "73f4e44e-649a-45fd-b590-a47f29916e30", "colab": { "base_uri": "https://localhost:8080/" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Indique un numero impar: 2\n", "Indique un numero impar: 8\n", "Indique un numero impar: 9\n" ] } ], "source": [ "n = 2\n", "while n % 2 == 0:\n", " n = int(input('Indique un numero impar: '))" ], "id": "1SYZtmIcp3nE" } ], "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.8.5" }, "colab": { "name": "0390_bucle_while2.ipynb", "provenance": [], "include_colab_link": true } }, "nbformat": 4, "nbformat_minor": 5 }