[MÚSICA] Hola. En esta lección vamos a ver cómo podemos pedirle al usuario que ingrese valores para que pueda interactuar con nuestro programa. Hasta ahora hemos construido programas que calculan algo o bien escriben un texto en la pantalla. Por ejemplo, vamos a escribir un programa que nos podría pedir que salude al usuario y le pregunte cómo está, algo que siempre vemos en muchos sitios web. Vamos a aprovechar que sabemos usar las variables y vamos a escribir el saludo, el nombre y la pregunta en tres variables distintas, de esta manera en el programa, y las escribimos en pantalla utilizando print, y con eso obtenemos lo que queremos. ¿O no? Si lo pensamos un rato este programa funciona muy bien si es que mi nombre es Dr. Nick, porque el programa escribe Hola, Dr. Nick, ¿cómo estás hoy? Si queremos que este programa salude a otra persona, que digamos se llama Valeria, vamos a tener que modificar el programa y cambiar el color de la variable nombre en la línea 1 de esta manera. Entonces, ahora tenemos otro programa en otro archivo que se llama saludadorValeria.py y tenemos un programa que es saludo a Valeria. Bueno, pero en verdad lo que queríamos era un programa que salude al usuario y que salude a cualquier usuario y en lugar de ello tenemos un programa que saluda siempre a la misma persona. Si este mismo programa yo lo ejecuto 100 veces, las 100 veces va a escribir exactamente lo mismo y no era exactamente eso lo que nos habían pedido. En general cuando ejecutamos un programa, no queremos tener que modificarlo cada vez que lo vamos a ejecutar para que haga lo que queremos. Simplemente queremos ejecutarlo y que haga lo que esperamos y que esa solución de cambiar el nombre de la variable antes de ejecutarlo en general no es una buena idea. Recordemos que en general un programa puede utilizar datos de entrada que le llamamos input para hacer algo con ellos, generar un resultado que se llama output o nuestros datos de salida. Entonces, como no sabemos de antemano quién es el usuario que va a utilizar nuestro programa, vamos a decir que el nombre de usuario va a ser nuestro dato de entrada. De esta manera podemos decir que queremos escribir un programa que al recibir el dato entrada, por ejemplo Jorge, escribe en pantalla un texto que diga Hola, Jorge, ¿cómo estás hoy? Y un programa que nos permite hacer esto es el siguiente programa que lo llamamos saludador.py. Si nos fijamos aquí en la primera línea tenemos una instrucción nueva, de nombre input con un texto entre paréntesis Cuando ejecutamos esto, el programa escribe el mensaje que está dentro de input y luego se detiene. No avanza más, se queda detenido hasta que el usuario escribe algo y le da enter. Supongamos ahora que el usuario escribe Jorge. Entonces, el string Jorge queda guardado en la variable que se llama nombre, y luego nuestro programa sigue funcionando como antes, pero con una gran diferencia, el string Jorge no es parte de nuestro programa sino que ahora es lo que llamamos un dato de entrada, que le pedimos al usuario usando input. Entonces ahora tenemos una nueva herramienta, input, y esta nos permite leer algo que el usuario ha escrito y guardarlo en una variable para poder usarlo dentro del programa. Este input será una herramienta vital para crear programas que interactúen con el usuario. Entonces ahora podemos ejecutar exactamente el mismo programa anterior, el saludador.py pero la salida del programa va a depender de lo que el usuario escriba en pantalla. Si ahora escribimos como nombre por ejemplo Mar, entonces nuestro programa saludará a Mar. Fijémonos en la línea 1, el texto que está entre paréntesis después de input es el texto justamente que se muestra en pantalla antes que el programa se ponga a esperar que el usuario escriba algo. Ese texto que escribimos ahí fue opcional, podríamos no escribir nada pero esto ayuda a que el usuario sepa el momento en el que tiene que escribir algo. En general va a ser bueno que el usuario sepa cuándo estamos esperando que escriba algo para que el programa pueda continuar. Entonces, ahora con esta nueva herramienta input vamos a hacer un programa que le diga al usuario por ejemplo cuántas lecciones le faltan para completar este curso. Probablemente no es algo muy difícil pensarlo primero de manera algorítmica. Primero, vamos a preguntarle al usuario bueno, ¿cuántas lecciones has visto? Y vamos a recordar ese valor en la variable lec. Luego vamos a recordar cuántas lecciones tiene el curso en la variable total y con ambos datos podemos calcular cuántas le faltan al usuario usando una expresión de diferencia. Y finalmente escribir esta respuesta en la pantalla. Entonces, ahora ejecutamos este programa y nos genera un error. ¿Qué pasó? Python nos indica que hay un error que se ve un tanto complicado, pero en este mensaje Python nos está dando una pista de lo que pasa. Lo que nos está diciendo es que el error ocurrió primero en la línea 3. Y que luego se produce porque no puede efectuar una resta entre un int y un string. Pero ahora pensamos, en verdad no hemos escrito una operación de resta entre un int y un string, ¿o sí lo hicimos? Modifiquemos temporalmente el programa para que ahora nos diga el tipo de la variable lec que fue ingresada por el usuario. Supongamos que ingresamos 10 y vemos que aunque ingresemos un número, el resultado de input siempre es un string. Por lo tanto, cuando queremos hacer una resta entre la variable entera que se llama total y la variable string que tiene el valor 10, bueno nos entrega un error. Pero la buena noticia es que you conocemos una solución para este problema. you sabemos cómo convertir de un tipo de datos a otro, y lo que tenemos ahora, tenemos un tipo de dato string. Pero lo que queremos es utilizarlo como un entero y entonces podemos escribir int alrededor de input en la línea 1, antes de asignarlo a lec. De esta manera nos aseguramos que el valor ingresado por el usuario se almacena como un int y podemos operar de manera efectiva con él. [AUDIO EN BLANCO] Entonces aunque input nos entregue siempre un string, you sabemos cÓmo convertirlo a otro tipo de datoS. Por ejemplo, podemos convertirlo a int como en este primer caso en que preguntamos por un número entero y lo que hacemos es simplemente sumarle 1. Podemos convertirlo también a float como en el segundo caso, en que lo usamos para calcular una diferencia entre dos valores. O también podemos convertirlo a bool, por ejemplo, como en este tercer caso para saber si es que el usuario ha ingresado un valor o no. Entonces ahora los invito a copiar todo este código en su intérprete y ejecutarlo, para que puedan ver por sí mismos los resultados de cada uno de los códigos. Entonces, en esta lección hemos visto cómo podemos utilizar input para recibir datos ingresados por el usuario y asignarlo a alguna variable para poder operar con él. Además también vimos que si queremos usar lo que ingresa el usuario como un tipo que no sea string, porque input siempre va a ser un string, podemos utilizar las conversiones que conocemos, y sabemos convertir a int y sabemos convertir a float y sabemos convertir a bool. Un uso apropiado de este input y print nos va a permitir escribir programas mucho más entretenidos y que interactúen de manera más amigable con el usuario. Muchas gracias y esperamos que sigan disfrutando de este curso. [AUDIO EN BLANCO]