{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Introducción\n", "\n", "Una tarea común es desarrollar programas que no solo puedan mostrar información en una pantalla o una consola, sino que también reciban información de los usuarios o incluso de otros programas. En este módulo, construirás tu primer programa en Python para aprender a manejar la entrada y la salida en la consola. También aprenderás conceptos de programación de Python como variables y conversión entre tipos de datos.\n", "\n", "### Escenario: Un programador junior creando sus primeras aplicaciones \n", "\n", "En este escenario, eres un joven cadete espacial en una nave espacial en algún momento en el futuro. Tu misión es encontrar y explorar nuevos sistemas solares. Estás capacitado como ingenierx y estás buscando desarrollar una serie de programas de servicios públicos para el personal más alto a bordo.\n", "\n", "### ¿Qué aprenderás?\n", "\n", "* Utilizar funciones para administrar la entrada y la salida a la consola.\n", "* Crear variables para almacenar datos.\n", "* Distinguir entre tipos de datos.\n", "* Utilizar la conversión de tipos para convertir entre tipos de datos.\n", "\n", "### ¿Cuál es el objetivo principal?\n", "Utiliza elementos básicos de programación para crear tus primeros programas Python." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trabajar con salidas\n", "\n", "Cuando comienzas a aprender cualquier lenguaje de programación, primero pruebas algunas declaraciones de código en un bucle de lectura-evaluación-impresión (REPL). Sin embargo, pronto querrás pasar a un desarrollo serio. Eso significa aprender más sobre el idioma, cómo estructurar un programa y más.\n", "\n", "### Un programa Python\n", "\n", "Para crear un programa en Python, debes almacenarlo en un archivo. El archivo debe tener la extensión .py.\n", "\n", "La idea de un programa es hacer algo, llevar a cabo una tarea. Para que el programa haga algo, debe agregar instrucciones de código que realicen instrucciones. Una instrucción podría imprimir algún texto o calcular algo, por ejemplo. Un programa de ejemplo puede tener un aspecto similar al siguiente:\n", "\n", "```\n", " # program.py\n", " sum = 1 + 2\n", " print(sum)\n", "```\n", "\n", "### Ejecutar un programa\n", "Supongamos que has creado un programa que consta de instrucciones. Para ejecutarlo hay que invocar el programa ejecutable de Python, seguido del nombre del programa. Aquí hay un ejemplo de tal invocación:\n", "\n", "```\n", " python3 program.py\n", "```\n", "La ejecución de un programa de este tipo mostraría el siguiente resultado en la consola:\n", "\n", "```\n", " 3\n", "```\n", "### La función print()\n", "\n", "Una de las primeras cosas que es probable que hagas es imprimir en una consola. Una consola es una aplicación de línea de comandos que te permite interactuar con el sistema operativo. En la consola, puedes ejecutar comandos y programas. También puedes ingresar información y mostrar información como texto en la pantalla.\n", "\n", "Para escribir información en la consola, puedes utilizar la función e implementarla como función principal. Debido a que es una función central, tendrás acceso a ella si Python está instalado. Para usarla dale un argumento: ``` print()print() ```\n", "\n", "```\n", " print('Hola desde la consola')\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Impresión en pantalla print('Hola desde la consola')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Observa cómo el comando anterior invoca mediante paréntesis. Así es como invocas una función. Si usaras corchetes () en lugar de paréntesis, no funcionaría:print[] \n", "\n", "### Variables\n", "\n", "Para avanzar en la programación, debes comprender que estás operando con datos. Como tu programa está trabajando en datos, es posible que deba recordar un cierto valor a lo largo de la ejecución del programa. Para eso, se utilizan variables.\n", "\n", "En el ejemplo siguiente se realiza un cálculo y se almacena en variables:\n", "\n", "```\n", " sum = 1 + 2 # 3\n", " product = sum * 2\n", " print(product)\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Tu turno, prueba el fragmento de código anterior\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Tipos de datos\n", "Una variable asume un tipo de datos. En el programa anterior, obtiene el tipo . Pero hay muchos más tipos de datos. Aquí hay algunos que es probable que encuentre: ```sum``` ```int```\n", "\n", "Tipo | Descripción |Ejemplo \n", "-------- | -------- | -------- \n", "Tipo numérico | Número, con o sin decimales | ```int, float, complex, no = 3```\n", "Tipo de texto | Cadena de caracteres | ```str = \"a literal string\" ```\n", "Tipo booleano | Booleano | ```continue = True```\n", "\n", "Hay tipos más complejos, pero comencemos con estos.\n", "\n", "Aquí hay un fragmento de código que muestra algunos de los tipos anteriores:\n", "\n", "```\n", "planetas_en_el_sistema_solar = 8 # int, plutón era considerado un planeta pero ya es muy pequeño\n", "distancia_a_alfa_centauri = 4.367 # float, años luz\n", "puede_despegar = True\n", "transbordador_que_aterrizo_en_la_luna = \"Apollo 11\" #string \n", "```\n", "\n", "¿Cómo sabes qué tipo tiene algo? Si ve los datos asignados a la variable como se muestra en el código siguiente, puede detectarlos:\n", "\n", "```\n", "distancia_a_alfa_centauri = 4.367 # Parece un decimal flotante\n", "```\n", "\n", "La otra forma es usar la función:type()\n", "\n", "```\n", "type(distancia_a_alfa_centauri)\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "float" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Declaramos la variable\n", "distancia_a_alfa_centauri = 4.367\n", "\n", "# Descubrimos su tipo de dato\n", "type(distancia_a_alfa_centauri)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Operadores\n", "\n", "Los operadores le permiten realizar cálculos sobre variables y sus valores. La idea general es que tienes un lado izquierdo y un lado derecho y un operador en el medio:\n", "\n", "```\n", " \n", "```\n", "\n", "Así es como se vería un ejemplo real del código de marcador de posición anterior:\n", "\n", "```\n", " left_side = 10\n", " right_side = 5\n", " left_side / right_side # 2\n", "```\n", "\n", "En este ejemplo se utiliza una barra diagonal (/) para dividir el valor por el valor. ```left_side``` ```right_side```\n", "\n", "Hay muchos más operadores. \n", "\n", "Python utiliza dos tipos de operadores: aritmética y asignación.\n", "\n", "### Operadores aritméticos\n", "\n", "Con los operadores aritméticos, se realizan cálculos como suma, resta, división y multiplicación. Aquí hay un subconjunto de operadores aritméticos que puede usar:\n", "\n", "| Tipo | Descripción | Ejemplo \n", "-------- | -------- | --------\n", "| + | Operador de adición que suma dos valores juntos | ``` 1 + 1 ```.\n", "| - | Operador de resta que quita el valor del lado derecho del lado izquierdo | ``` 1 - 2 ```.\n", "| / | Operador de división que divide el lado izquierdo tantas veces como especifique el lado derecho | ``` 10 / 2 ```.\n", "| * | Operador de multiplicación | ``` 2 * 2 ```.\n", "\n", "### Operadores de asignación\n", "\n", "Los operadores de asignación se utilizan para asignar valores a una variable a lo largo del ciclo de vida de la variable. Estos son algunos operadores de asignación que es probable que encuentres a medida que aprendes a crear programas:\n", "\n", "Operador | Ejemplo\n", "-------- | --------\n", "= | ```x = 2```
x ahora contiene 2.\n", "+= | ```x += 2```
x incrementado en 2. Si antes contenía 2, ahora tiene un valor de 4.\n", "-= | ```x -= 2```
x decrementado por 2. Si antes contenía 2, ahora tiene un valor de 0.\n", "/= | ```x /= 2```
x dividido por 2. Si antes contenía 2, ahora tiene un valor de 1.\n", "*= | ```x *= 2```
x multiplicado por 2. Si antes contenía 2, ahora tiene un valor de 4.\n", "\n", "### Fechas\n", "Cuando estás creando programas, es probable que interactúes con las fechas. Una fecha en un programa generalmente significa tanto la fecha del calendario como la hora.\n", "\n", "Una fecha se puede utilizar en varias aplicaciones, como estos ejemplos:\n", "\n", "* **Archivo de copia de seguridad.** Usar una fecha como parte del nombre de un archivo de copia de seguridad es una buena manera de indicar cuándo se realizó una copia de seguridad y cuándo debe realizarse nuevamente. \n", "* **Condición.** Es posible que desee llevar una lógica específica cuando hay una fecha determinada. \n", "* **Métrica.** Las fechas se utilizan para comprobar el rendimiento del código para, por ejemplo, medir el tiempo que se tarda en ejecutar una función. \n", "\n", "Para trabajar con una fecha, debe importar el módulo: ```date```\n", "\n", "```\n", "from datetime import date\n", "```\n", "\n", "A continuación, puede invocar las funciones con las que desea trabajar. Para obtener la fecha de hoy, puede llamar a la función: ```today()```\n", "\n", "```\n", "date.today()\n", "```\n", "\n", "Para mostrar la fecha en la consola, puede usar la función. La función toma muchos tipos de datos como entrada. Así es como puedes mostrar la fecha de hoy: ```print()```\n", "\n", "```\n", "print(date.today())\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2022-01-31\n" ] } ], "source": [ "# Importamos la biblioteca \n", "from datetime import date\n", "\n", "# Obtenemos la fecha de hoy\n", "date.today()\n", "\n", "# Mostramos la fecha en la consola\n", "print(date.today())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Conversión de tipos de datos\n", "\n", "Quieres usar una fecha con un mensaje. Ese algo suele ser un problema. Si, por ejemplo, desea mostrar la fecha de hoy en la consola, es posible que tenga un problema:\n", "\n", "```\n", "print(\"Today's date is: \" + date.today())\n", "```\n", "\n", "Lo que obtienes es un error:\n", "\n", "```\n", "---------------------------------------------------------------------------\n", "TypeError Traceback (most recent call last)\n", " in \n", "----> 1 print(\"Today's date is: \" + date.today())\n", "\n", "TypeError: can only concatenate str (not \"datetime.date\") to str\n", "```\n", "La última fila del mensaje le indica cuál es el problema. Está intentando usar el operador ``` + ``` y combinar dos tipos de datos diferentes, una cadena y una fecha.\n", "\n", "Para que este código funcione, debe convertir la fecha en una cadena. Para lograr tal conversión mediante el uso de la función de utilidad: ```str()```\n", "\n", "```\n", "print(\"Today's date is: \" + str(date.today()))\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Tu turno ejecuta el siguiente comando: print(\"Today's date is: \" + str(date.today()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Recopilar información\n", "\n", "Hasta ahora, has aprendido varias construcciones del lenguaje de programación Python. También has escrito un par de programas. Sin embargo, los programas operan con datos, y esos datos provienen de alguna parte. En esta unidad, analizará más de cerca cómo puede recopilar la entrada tanto de la línea de comandos como de la entrada del usuario.\n", "\n", "### Entrada del usuario\n", "Puede codificarlo para que el programa le diga al usuario que ingrese información. Guarde los datos introducidos en el programa y, a continuación, actúe en consecuencia.\n", "\n", "Para capturar información del usuario, utilice la función. Aquí hay un ejemplo: ```input()```\n", "\n", "```\n", "print(\"Bienvenido al programa de bienvenida\")\n", "name = input(\"Introduzca su nombre \")\n", "print(\"Saludos: \" + name)\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Escribe tu código aquí" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La ejecución del programa mediante el uso da el siguiente resultado ```python input.py (Si lo haces por consola)```:\n", "\n", "```\n", "Bienvenido al programa de bienvenida\n", "Enter your name Fernanda\n", "Saludos: Fernanda\n", "```\n", "\n", "#### Trabajar con números\n", "\n", "La función almacena un resultado como una cadena. Por lo tanto, es posible que el siguiente código no haga lo que desea que haga: ```input()```\n", "\n", "```\n", "print(\"Calculadora\")\n", "first_number = input(\"Primer número: \")\n", "second_number = input(\"Segundo número: \")\n", "print(first_number + second_number)\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Escribe tu código aquí" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La ejecución de este programa mediante el uso da el siguiente resultado: ```python calc.py (Si lo haces por consola)```\n", "\n", "```\n", "Calculadora\n", "Primer número: 3\n", "Segundo número: 4\n", "34\n", "```\n", "\n", "Probablemente quieres que este programa te responda con 7 en lugar de 34. Entonces, ¿qué salió mal?\n", "\n", "La explicación es que el programa toma ambos números como si fuesen 'cadenas de texto'. Para que el cálculo funcione correctamente, debe cambiar esas cadenas a números mediante la función ```int()```. Modificando la última línea del programa a utilizar, puede resolver el problema:\n", "\n", "``` print(int(first_number) + int(second_number)) ```" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Escribe tu código aquí" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La repetición del programa ahora se produce 7 como respuesta." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Curso Propedútico de Python para Launch X - Innovacción Virtual.\n", "\n", "Material desarrollado con base en los contenidos de MSLearn y la metáfora de LaunchX, traducción e implementación por: Fernanda Ochoa - Learning Producer de LaunchX.\n", "\n", "Redes:\n", "* GitHub: [FernandaOchoa](https://github.com/FernandaOchoa)\n", "* Twitter: [@imonsh](https://twitter.com/imonsh)\n", "* Instagram: [fherz8a](https://www.instagram.com/fherz8a/)" ] } ], "metadata": { "interpreter": { "hash": "502cd6c3b6c9e666d195e1caff9d64ea12bf644e547a4c8fae84812082c54b6f" }, "kernelspec": { "display_name": "Python 3.9.5 64-bit", "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.9.5" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }