Obtener la entrada del usuario en Python

En este tutorial, veremos brevemente cómo obtener información del usuario a través de la función input() en Python.

Introducción

La forma en que se obtiene y maneja la información es uno de los aspectos más importantes del ethos de cualquier lenguaje de programación, más aún por la información suministrada y obtenida del usuario.

Python, aunque comparativamente lento en este sentido en comparación con otros lenguajes de programación como C o Java, contiene herramientas sólidas para obtener, analizar y procesar datos obtenidos directamente del usuario final.

En este artículo, veremos brevemente cómo obtener información del usuario a través de la función input() en Python con la ayuda de algunos fragmentos de código para que sirvan como ejemplos.

Entrada en Python

Para recibir información a través del teclado, Python usa la función input(). Esta función tiene un parámetro opcional, comúnmente conocido como prompt, que es una cadena que se imprimirá en la pantalla cada vez que se llame a la función.

{.icon aria-hidden=“true”}

Nota: Antes de que Python 3 introdujera la función input(), el camino a seguir al leer la entrada del usuario era la función raw_input(). Aún así, ¡siempre se recomienda usar Python 3 y su función input () siempre que pueda! En Python 3, la función raw_input() ha quedado obsoleta y reemplazada por la función input() y se utiliza para obtener la cadena de un usuario a través del teclado. Y la función input() de Python 2 se suspendió en la versión 3. Para obtener la misma funcionalidad que proporcionó la función input() de Python 2, la instrucción eval(input()) debe ser utilizado en Phyton 3.

Cuando se llama a la función input(), el flujo del programa se detiene hasta que el usuario ingresa la entrada a través de la línea de comando. Para ingresar realmente los datos, el usuario debe presionar la tecla ENTRAR después de ingresar su cadena. Si bien presionar la tecla ENTER generalmente inserta un carácter de nueva línea ("\n"), en este caso no es así. La cadena ingresada simplemente se enviará a la aplicación.

Ahora que entendemos la teoría básica detrás de la función input(), echemos un vistazo a cómo funciona realmente en Python:

1
2
3
4
5
# Python 3

txt = input("Type something to test this out: ")

print(f"Is this what you just said? {txt}")

Al ejecutar el código anterior, aparecerá el mensaje "Escriba algo para probar esto:". Después de que hayamos escrito algo, imprimirá lo que acabamos de escribir:

1
2
3
Type something to test this out: Let the Code be with you!

Is this what you just said? Let the Code be with you!

Cadena y entrada numérica

La función input(), por defecto, convertirá toda la información que recibe en una cadena. El ejemplo anterior que mostramos demuestra este comportamiento.

Los números, por otro lado, deben manejarse explícitamente como tales, ya que originalmente vienen como cadenas. El siguiente ejemplo demuestra cómo se recibe la información de tipo numérico:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# An input is requested and stored in a variable
test_text = input ("Enter a number: ")

# Converts the string into an integer. If you need
# to convert the user input into the decimal format,
# the float() function is used instead of int()
test_number = int(test_text)

# Prints in the console the variable as requested
print ("The number you entered is: ", test_number)

Ejecutar el código anterior nos dará:

1
2
Enter a number: 13
The number you entered is: 13

El enfoque más común es leer la entrada y convertirla en un número entero en una línea:

1
test_number = int(input("Enter a number: "))

Tenga en cuenta que si el usuario no ingresa un número entero, este código provocará una excepción, incluso si la cadena ingresada es un número de punto flotante.

Cómo manejar excepciones al leer entradas

Hay varias formas de asegurarse de que el usuario ingrese información válida. Una de las formas es manejar todos los posibles errores que pueden ocurrir mientras el usuario ingresa los datos. En esta sección, demostraremos algunos buenos manejo de errores métodos para los errores que pueden surgir al leer la entrada.

Pero primero, echemos un vistazo a un ejemplo de algún código (potencialmente) inseguro:

1
2
3
test2word = input("Tell me your age: ")
test2num = int(test2word)
print("Wow! Your age is ", test2num)

Después de ejecutar este código, digamos que ingresa la cadena "Tres" en lugar del número 3:

1
Tell me your age: Three

Aquí, cuando se llama a la función int() con la cadena "Three", se lanza una excepción ValueError y el programa se detiene y/o falla.

Ahora veamos cómo haremos que este código sea más seguro para manejar la entrada del usuario:

1
2
3
4
5
6
7
test3word = input("Tell me your lucky number: ")

try:
    test3num = int(test3word)
    print("This is a valid number! Your lucky number is: ", test3num)
except ValueError:
    print("This is not a valid number. It isn't a number at all! This is a string, go and try again. Better luck next time!")

Este bloque de código evaluará la nueva entrada. Si la entrada es un número entero representado como una cadena, la función int() lo convertirá en un número entero adecuado. De lo contrario, se generará una excepción, pero en lugar de bloquear la aplicación, se detectará y se ejecutará la segunda instrucción print. Aquí hay un ejemplo de este código que se ejecuta cuando se genera una excepción:

1
2
Tell me your lucky number: Seven
This is not a valid number. It isn't a number at all! This is a string, go and try again. Better luck next time!

Y así es como se pueden manejar los errores relacionados con la entrada en Python.

{.icon aria-hidden=“true”}

Nota: Puede combinar este código con otra construcción, como un bucle de tiempo para asegurarse de que el código se ejecute repetidamente hasta que reciba la entrada de entero válida que requiere su programa .

Un ejemplo completo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# Make a function that will contain the
# desired program.
def example():

    # Call for an infinite loop that keeps executing
    # until an exception occurs
    while True:
        test4word = input("What's your name? ")

        try:
            test4num = int(input("From 1 to 7, how many hours do you use your smartphone?" ))

        # If something else that is not the string
        # version of a number is introduced, the
        # ValueError exception will be called.
        except ValueError:
            # The cycle will go on until validation
            print("Error! This is not a number. Try again.")

        # When successfully converted to an integer,
        # the loop will end.
        else:
            print("Impressive, ", test4word, "! You spent", test4num*60, "minutes or", test4num*60*60, "seconds using your smartphone!")
            break

# The function is called
example()

La salida será:

1
2
3
4
5
What's your name? Francis

From 1 to 7, how many hours do you use your smartphone?

Impressive, Francis! You spent 180 minutes or 10800 seconds using your smartphone!

Conclusión

En este artículo, vimos cómo la función input() incorporada de Python se puede usar para obtener la entrada del usuario en una variedad de formatos. También vimos cómo podemos manejar las excepciones y los errores que pueden ocurrir al obtener la entrada del usuario.

Licensed under CC BY-NC-SA 4.0