Entrada por teclado en Python

imagen leer por teclado en python

La entrada por teclado en Python es muy sencilla gracias a una función nativa llamada input() qué, hemos usado en otras ocasiones, esta vez la veremos más en profundidad.

La función input() recibe una cadena que será el mensaje que se mostrará por pantalla al pedir el dato por teclado y devuelve otra cadena con la información leída.

Ejemplo lectura por teclado en Python

En el siguiente código podemos ver algunos ejemplos de entrada de datos por teclado en Python, realizando una conversión según el tipo de dato esperado:

n1 = int(input('Introduzca un numero entero \n> '))
n2 = float(input('Introduzca un numero real \n> '))
print(n1,n2,sep = '\n') # Un salto de linea de separador

Como se puede observar se piden dos datos, que posteriormente se convertirán a número entero y real, porque como hemos dicho antes la función input() nos devuelve una cadena.

Pero este código puede conllevar una serie de problemas, ¿qué pasaría si introducimos un dato que no sea numérico?

Entrada por teclado en Python sin errores

En el punto anterior hemos visto que podríamos tener problemas si queremos convertir lo que leamos por teclado en un valor número, porque no sabemos que introducirá el usuario.

La solución sería hacer un control de excepciones, vamos a ver cómo 🙂

El siguiente código muestra una función de entrada por teclado en Python, con la que pretendemos leer un número entero controlando los posibles errores en la ejecución:

def read_int(msg):
    try:
        return int(input(msg))
    except:
        return read_int('El dato introducido no es correcto, vuelva a intentarlo \n> ')

El funcionamiento de la función es el siguiente:

  • Leemos por teclado con el mensaje del parámetro msg e intentamos retornarlo convertido a entero.
  • En el caso de que se introduzca un carácter como estamos en el try pasaremos a ejecutar el código del exceptDónde se realiza una llamada recursiva (llamamos al propio método) con un mensaje para volver a repetir la lectura y así sucesivamente hasta que se lea un valor numérico.

 

Leer varios valores por teclado en Python

Una forma interesante de leer varios valores por teclado es guardar los datos en una lista e irlos añadiendo ahí para poderlos manipular en grupo, como muestra el siguiente código:

def multi_read():
    data = []
    n = read_int('¿Cuantos valores quiere leer? \n> ')

    for i in range(n):
        data.append(input("Introduce un valor: "))
    
    return data


print(multi_read())

La función hace lo siguiente:

  • Se pide por teclado la cantidad de datos que se quieren leer, gracias a la función del apartado anterior .
  • Se ejecuta un bucle for pidiendo valores y almacenándolos en la lista
  • Se retorna la lista de valores

Diferencia entre input() y raw_input() en Python

En versiones de Python 2.x :

  • raw_input() retorna una línea de la entrada del usuario tal cual, en forma de cadena de caracteres (String).
  • input() espera que se le pasen una expresión válida en Python  y la procesa. Podríamos pensar que espera una expresión matemática, pero no es así, puede procesar cualquier expresión valida en Python, como por ejemplo sumar o concatenar 2 cadenas.

En versiones de Python 3.x :

  • input() hace lo mismo que raw_input() en Python 2.x. Lee una línea de la entrada de la entrada estándar y la retorna como cadena.La antigua función input() equivale a grandes rasgos a la combinación de la nueva versión con la función eval():

    eval(input('Ingresa algo que pueda evaluar: '))

El contenido explicado en este último punto proviene esta pregunta en StackOverflow.


Espero que se haya comprendido bien cómo se realiza la entrada por teclado de datos en Python y que os resulten de utilidad los pequeños códigos aportados.

Cualquier cuestión o sugerencia estaré encantado de responderla 🙂

Deja un comentario