La instrucción input

¿Qué es y para qué sirve la instrucción input? Te mostramos con un sencillo ejemplo su utilidad en los programas de Python.

La instrucción input

Atención: debido al funcionamiento del motor del videojuego de CodedArena, ni la instrucción input ni la instrucción print están disponibles para la programación de los personajes.

Los ejemplos contenidos en este artículo no pueden ser probados en CodedArena.com.

Este artículo utiliza la herramienta online de programación en Python de Programiz.


Un sencillo ejemplo

Miremos el siguiente sencillo programa en Python:

name = "John"
print("Your name is " + name)

El programa empieza creando la variable name, en la cual almacenamos la cadena "John". A continuación, con la instrucción print el programa muestra la frase compuesta por las cadenas "Your name is " y "John" (esta última está dentro de la variable name).

Si escribimos este código en el editor de Python, y ejecutamos el programa (Run), obtendremos un resultado como el que muestra la siguiente imagen:

Como podemos ver, el programa que hemos escrito en la izquierda, al ejecutarlo, nos da el resultado de la zona de la derecha (Shell), la cadena Your name is John.

¿Y si queremos ahora que el programa nos muestre otro nombre? Por ejemplo, Eli.

¡Sencillo! Modificamos el programa:

name = "Eli"
print("Your name is " + name)

Ahora, si ejecutamos este programa en el editor de Python, el resultado será el siguiente:

Rápidamente nos empezamos a dar cuenta que, si queremos probar con 10 nombres distintos, vamos a tener que cambiar 10 veces la cadena que almacenamos en la variable name, y ejecutar el programa.

No suena muy cómodo.

¿Habría alguna forma de ejecutar primero el programa de Python, y que este nos pida el nombre que queremos mostrar?

La respuesta es sí, con la instrucción input.

Enviando datos a nuestros programas

El objetivo de la instrucción input es parar un programa en Python, esperar que el usuario introduzca un dato mediante el teclado, y tras apretar la tecla enter (o intro o return), almacenar este dato en una variable.

¡Buf, qué lío! ¿Por qué no lo vemos con un ejemplo?

¡Mejor! ¿Por qué no verlo modificando el ejemplo anterior?

¡Allá vamos!

Modificando el ejemplo

Vamos a realizar el cambio en primer lugar, ejecutamos el programa, y después analizaremos qué ha sucedido.

El nuevo programa quedaría de la siguiente manera:

name = input("Please, enter your name: ")
print("Your name is " + name)

Si ejecutamos este programa, veremos que el programa se queda esperando en la zona derecha (Shell) a que introduzcamos un dato.

Introduce un nombre, por ejemplo Akum, y presiona la tecla enter:

¡Tachán! La frase que nos muestra nuestro nuevo programa ya no está formada por dos cadenas dentro del propio código, si no que una parte la ha introducido el usuario con el teclado.

¡Hagamos otra prueba! Volvamos a ejecutar el programa, y esta vez introduzcamos el nombre Shira:

¡Ajá! Como ya intuíamos, el nombre que ha aparecido en la frase Your name is corresponde ahora con el nuevo nombre que hemos tecleado.

Como habíamos dicho, la utilidad de la instrucción (función) input es capturar datos desde el teclado, e introducirlos en una variable.

En nuestro nuevo programa

name = input("Please, enter your name: ")
print("Your name is " + name)

input realiza las siguientes tareas:

  1. Muestra una frase, Please, enter your name:.
  2. Se queda a la espera que el usuario presione la tecla enter.
  3. Almacena en la variable que tiene a la izquierda del símbolo = los datos introducidos por el usuario hasta la pulsación de la tecla enter.

¿Fácil, verdad?

Veamos otro ejemplo.

Más datos

Volvemos al ejemplo anterior, y pidamos más datos.

name = input("Please, enter your name: ")
order = input("Order of mages: ")
print("Your name is " + name + ", and you are a member of the " + order + " order of mages")

Ejecutamos el programa, y vemos que tras pedirnos el primer dato, el programa vuelve a quedarse a la espera del segundo dato, la orden de magos a la que pertenecemos.

Introducimos Liuh y Circle:

Como podemos observar, la composición de la frase compleja que muestra print corresponde a la unión de varias cadenas, dos de las cuales las hemos introducido a través del teclado.

¡Easy peasy!

Hasta aquí, lo básico

Una vez llegamos a este punto, ya conocemos lo básico y necesario para utilizar la instrucción input en un programa de Python.

En las siguientes secciones hablaremos de algunos casos especiales, como la cadena vacía, o qué tipo de dato devuelve input siempre.

La cadena vacía

¿Y qué pasa si, tal y como la instrucción input espera datos, no introducimos nada, y presionamos directamente la tecla enter?

Veamos un ejemplo:

name = input("Please, enter your name: ")
print("Your name is " + name + "!")

Si ejecutamos este programa, y presionamos directamente la tecla enter, obtendremos el siguiente resultado:

En la variable name se ha almacenado la cadena vacía. Para verlo mejor, vamos a hacer que nuestro sencillo programa muestre al final la longitud de la cadena introducida:

name = input("Please, enter your name: ")
print("Your name is " + name + "!")

lenght = len(name)
print("Lenght: " + lenght) 

Primero introduzcamos un nombre. Por ejemplo, Tas:

Como vemos, la longitud de la cadena "Tas" es 3.

Ahora, volvamos a ejecutar el programa y no introduzcamos nada, solo presionemos la tecla enter:

Como podemos observar, la longitud de la cadena vacía es 0.

La función str se encarga de transformar un número en su correspondiente cadena. Es decir, si le pasamos el número 3 nos devolverá la cadena "3".

La hemos utilizado para poder unir dos cadenas con el símbolo +. Si tratamos de unir una cadena (Lenght :) y un número (el resultado de la función len), obtendremos un error.

¡Atención! ¿Qué devuelve input siempre?

La instrucción input devuelve siempre una cadena. Siempre. Aunque tecleemos un número.

Veamos un ejemplo:

number = input("Enter a number: ")
addition = number + 5
print("Result: " + str(addition))

Ejecutamos este programa, e introducimos un 6 cuando nos pida introducir el número. El resultado esperado sería la cadena Result: 1. Sin embargo obtenemos algo distinto:

Obtenemos un error. Este error nos indica que no podemos unir una cadena y un número.

Esto se debe a que en la variable number, cuando hemos tecleado 6 y enter, la instrucción input ha almacenado la cadena 6, "6", no el número 6.

Si queremos obtener la suma correcta, debemos utilizar la función int, que trabaja de forma inversa a str: trata de transformar una cadena en un número (p.e. "3" en 3):

¡Ahora sí! El número 11 como resultado de sumar 6 y 5.


Si os ha gustado este artículo y queréis saber qué es CodedArena, no dudéis en poneros en contacto con nosotros.

También podéis seguirnos en nuestras redes sociales:

https://twitter.com/codedarena
https://instagram/codedarena
https://www.youtube.com/channel/CodedArena
https://facebook.com/codedarena